From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yb1-xb34.google.com (mail-yb1-xb34.google.com [IPv6:2607:f8b0:4864:20::b34]) by sourceware.org (Postfix) with ESMTPS id B513F3858D28 for ; Wed, 25 Jan 2023 15:56:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B513F3858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-yb1-xb34.google.com with SMTP id t16so18879694ybk.2 for ; Wed, 25 Jan 2023 07:56:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=DSpmazUQ1ZLkzrN4kzrljLqPecFBsBbrUwiv9fOX/No=; b=ZB8qCxLt0q1NIODdStFwqW0vBMWRsK/59grynjQxcQjTnQFfsYB/MERABAQ0OEDdeP vLK4CbjAyQkCqV1mwe+Y/InivFUttc4cR/8TS5uIQ0hNcFbSntFvh20bwF2nodntZRx7 OdOaWI9DOax2UD5XhDFQChvzDtyKGrLd4FSzPywe3lm7tyR7GCb+36Hh1XxRrZ2hFCQE Qgj+6FkfUuNu7lvZrjQaXM6lbHQbNqzidQc5KnVFq7urWHz7NJarNMj8wJxoo7f/Gwlj Gb1rlnm06p4Ny/5wFaTqZ/ujtlYINXB2rVqMnxrq+7Rd3pMaNfo3eWkmdsNm7z9ff31q k87Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=DSpmazUQ1ZLkzrN4kzrljLqPecFBsBbrUwiv9fOX/No=; b=2HXP1qXfNHHM40diijulgopTPXfHKhM78n2YK/ZpvdsB+V65GADyjSs808orUkz6Dv 9KqSIsrBjtcBTmbpvmUMvxW83zwoSj1BMsdFvVAH/+dkotDEd0Nj6NuWA7CPJ4i0tYsR 3c/VoHd66W4tkteA1sF8iWq3N+bVRfXFRvnFezNzmB3xMeyegV6MzGG75NQ44pCZ3ALu ++HckDn90WZH2sPztWtS2jZG8o0t2aRt8PS2qtdlulBUITApEcCg4U+5slWiDpOSpiFn awNWhg5CPb9ooEOaKSRVp6/5Lby9m927f8GjSSSd2M5HnEXtHkb/70PRJ7VXkBGprptj 6YJg== X-Gm-Message-State: AO0yUKXOUSD0n16CMDwtEMMlBhzLMvLhAWK2x08OxLXGyJTpCpf9wr8Z zs7f4sQpyeP4clpj6Xb67fXgRsl5kRF4yVu9fAv23H8= X-Google-Smtp-Source: AK7set+oQZoWApxmBMdrCp0w2SF8ktr3kBUR3FPlCfl36tC1WFzvtz1u4dRTBGYvRWQKDG0hvvrG+tadecOLboYjgII= X-Received: by 2002:a05:6902:1616:b0:80b:8753:2726 with SMTP id bw22-20020a056902161600b0080b87532726mr548201ybb.329.1674662180985; Wed, 25 Jan 2023 07:56:20 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: =?UTF-8?B?RmzDoXZpbyBDcnV6?= Date: Wed, 25 Jan 2023 10:56:10 -0500 Message-ID: Subject: Re: [PATCH] Add support for x86_64-*-gnu-* targets to build x86_64 gnumach/hurd To: gcc-patches@gcc.gnu.org Content-Type: multipart/alternative; boundary="0000000000006aa06805f318acbf" X-Spam-Status: No, score=-9.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --0000000000006aa06805f318acbf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Ping On Mon, Jan 9, 2023 at 1:00 PM Fl=C3=A1vio Cruz wrot= e: > Friendly ping > > On Mon, Dec 26, 2022 at 12:34 PM Flavio Cruz wrote: > >> Tested by building a toolchain and compiling gnumach for x86_64 [1]. >> This is the basic version without unwind support which I think is only >> required to >> implement exceptions. >> >> [1] https://github.com/flavioc/cross-hurd/blob/master/bootstrap-kernel.sh >> . >> >> --- >> gcc/config.gcc | 5 ++++- >> gcc/config/i386/gnu64.h | 40 +++++++++++++++++++++++++++++++++ >> libgcc/config.host | 8 ++++++- >> libgcc/config/i386/gnu-unwind.h | 10 +++++++++ >> 4 files changed, 61 insertions(+), 2 deletions(-) >> create mode 100644 gcc/config/i386/gnu64.h >> >> diff --git a/gcc/config.gcc b/gcc/config.gcc >> index 95190233820..0e2b15768bf 100644 >> --- a/gcc/config.gcc >> +++ b/gcc/config.gcc >> @@ -1955,7 +1955,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | >> i[34567]86-*-gnu* | i[34567]8 >> ;; >> esac >> ;; >> -x86_64-*-linux* | x86_64-*-kfreebsd*-gnu) >> +x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-gnu*) >> tm_file=3D"${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h >> glibc-stdint.h \ >> i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h" >> case ${target} in >> @@ -1966,6 +1966,9 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu) >> x86_64-*-kfreebsd*-gnu) >> tm_file=3D"${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64= .h" >> ;; >> + x86_64-*-gnu*) >> + tm_file=3D"${tm_file} gnu.h i386/gnu64.h" >> + ;; >> esac >> tmake_file=3D"${tmake_file} i386/t-linux64" >> x86_multilibs=3D"${with_multilib_list}" >> diff --git a/gcc/config/i386/gnu64.h b/gcc/config/i386/gnu64.h >> new file mode 100644 >> index 00000000000..a1ecfaa1cdb >> --- /dev/null >> +++ b/gcc/config/i386/gnu64.h >> @@ -0,0 +1,40 @@ >> +/* Configuration for an x86_64 running GNU with ELF as the target >> machine. */ >> + >> +/* >> +Copyright (C) 2022 Free Software Foundation, Inc. >> + >> +This file is part of GCC. >> + >> +GCC is free software: you can redistribute it and/or modify >> +it under the terms of the GNU General Public License as published by >> +the Free Software Foundation, either version 3 of the License, or >> +(at your option) any later version. >> + >> +GCC is distributed in the hope that it will be useful, >> +but WITHOUT ANY WARRANTY; without even the implied warranty of >> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> +GNU General Public License for more details. >> + >> +You should have received a copy of the GNU General Public License >> +along with GCC. If not, see . >> +*/ >> + >> +#define GNU_USER_LINK_EMULATION32 "elf_i386" >> +#define GNU_USER_LINK_EMULATION64 "elf_x86_64" >> +#define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64" >> + >> +#undef GNU_USER_DYNAMIC_LINKER >> +#define GNU_USER_DYNAMIC_LINKER32 "/lib/ld.so.1" >> +#define GNU_USER_DYNAMIC_LINKER64 "/lib/ld-x86-64.so.1" >> +#define GNU_USER_DYNAMIC_LINKERX32 "/lib/ld-x32.so.1" >> + >> +#undef STARTFILE_SPEC >> +#if defined HAVE_LD_PIE >> +#define STARTFILE_SPEC \ >> + "%{!shared: >> %{pg|p|profile:%{static:gcrt0.o%s;:gcrt1.o%s};pie:Scrt1.o%s;static:crt0.= o%s;:crt1.o%s}} >> \ >> + crti.o%s >> %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" >> +#else >> +#define STARTFILE_SPEC \ >> + "%{!shared: >> %{pg|p|profile:%{static:gcrt0.o%s;:gcrt1.o%s};static:crt0.o%s;:crt1.o%s}= } \ >> + crti.o%s >> %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" >> +#endif >> diff --git a/libgcc/config.host b/libgcc/config.host >> index eb23abe89f5..75fd1b778fe 100644 >> --- a/libgcc/config.host >> +++ b/libgcc/config.host >> @@ -751,6 +751,12 @@ x86_64-*-kfreebsd*-gnu) >> tmake_file=3D"${tmake_file} i386/t-crtpc t-crtfm i386/t-crtstuff >> t-dfprules" >> tm_file=3D"${tm_file} i386/elf-lib.h" >> ;; >> +x86_64-*-gnu*) >> + extra_parts=3D"$extra_parts crtprec32.o crtprec64.o crtprec80.o >> crtfastmath.o" >> + tmake_file=3D"${tmake_file} i386/t-crtpc t-crtfm i386/t-crtstuff >> t-dfprules" >> + tm_file=3D"${tm_file} i386/elf-lib.h" >> + md_unwind_header=3Di386/gnu-unwind.h >> + ;; >> i[34567]86-pc-msdosdjgpp*) >> ;; >> i[34567]86-*-lynxos*) >> @@ -1523,7 +1529,7 @@ esac >> case ${host} in >> i[34567]86-*-linux* | x86_64-*-linux* | \ >> i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \ >> - i[34567]86-*-gnu*) >> + i[34567]86-*-gnu* | x86_64-*-gnu*) >> tmake_file=3D"${tmake_file} t-tls i386/t-linux i386/t-msabi >> t-slibgcc-libgcc" >> if test "$libgcc_cv_cfi" =3D "yes"; then >> tmake_file=3D"${tmake_file} t-stack i386/t-stack-i386" >> diff --git a/libgcc/config/i386/gnu-unwind.h >> b/libgcc/config/i386/gnu-unwind.h >> index 25eb690e370..2cbfc40ea7e 100644 >> --- a/libgcc/config/i386/gnu-unwind.h >> +++ b/libgcc/config/i386/gnu-unwind.h >> @@ -30,6 +30,14 @@ see the files COPYING3 and COPYING.RUNTIME >> respectively. If not, see >> >> #include >> >> +#ifdef __x86_64__ >> + >> +/* >> + * TODO: support for 64 bits needs to be implemented. >> + */ >> + >> +#else /* ifdef __x86_64__ */ >> + >> #define MD_FALLBACK_FRAME_STATE_FOR x86_gnu_fallback_frame_state >> >> static _Unwind_Reason_Code >> @@ -138,4 +146,6 @@ x86_gnu_fallback_frame_state >> return _URC_NO_REASON; >> } >> >> +#endif /* ifdef __x86_64__ */ >> + >> #endif /* ifndef inhibit_libc */ >> -- >> 2.35.1 >> >> > > -- > Fl=C3=A1vio Cruz / flaviocruz@gmail.com > --0000000000006aa06805f318acbf--