From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x133.google.com (mail-il1-x133.google.com [IPv6:2607:f8b0:4864:20::133]) by sourceware.org (Postfix) with ESMTPS id 244FB3858D28 for ; Fri, 27 Jan 2023 06:49:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 244FB3858D28 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-il1-x133.google.com with SMTP id u7so438587ilg.4 for ; Thu, 26 Jan 2023 22:49:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=KfLT8335Xf/qO96J4s8bEBoCeyRTlAd8kp7C85IoMuU=; b=kIRt7AbY1NdGo1XGwrS4cBJ1x7e9TglCRiNuFplML0cKVE0S9uwICVhhxt5Hpew5Z0 ycJiYiypcJeQRcEvFK5j6FCDhRUCGlgj5MNhQtFSC6/rkbscVcbqGCVt2bM7qyxrIWVv /AS3QUPX75Cswx5dIHKKYjrSkSZT0QzoNxn55yDrd3k8e/6D7S2l0wKsneudGZ5jnbI3 JofzAFpOA7tLGheYaA+z0ievvUfGhlOyTWYbrl827pFiZIJMsvODzbER+t43XYcFrRCp /klw98KrwvmLCwGF+Bnq+pQreqxCRBpocwnJ4A7145UrBrKyNJtBZdtP46li9Cuw+lQ+ Oh7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=KfLT8335Xf/qO96J4s8bEBoCeyRTlAd8kp7C85IoMuU=; b=VAzeL8+1LaCfQwpoEyFOEQr1sICE166Uns5ZgncIsGKk49uwyv+EQBjWatJI+Qcs7k c3Ei9dbSBUUnz/qak5bwjtVef8l2GoWYoIdJUwu8GU+d1h+0Wa1tmzO2aKU1VGx1DpQc J03qgRwpSpGP6rBokj5sXn9AmZAQRui/Z35q1oDcLc5L8cICnuETpR6L6CXi8Y2mMj/4 ASpxNIJpPK1o36MaMaalwz9kuI84I2VQY14ZoZ4un0Jh7NU/AEZd6snVvDByknnZrN0F zsuinbC+lHeusAOLlZ5yMA97Zejw7RaakXWNmXw7+i6gRAEEDfudnlXRk8U00rqB6+6m 062A== X-Gm-Message-State: AO0yUKUyZeUi2OxcKG3L/3hI2JrEf+riVMFnnRPWQ0CyNmMFsbjAmRY0 TB954/y+wCSUvB5hgB5/Fw== X-Google-Smtp-Source: AK7set9r1vtJWJEssYd7hwXZUvnoybVG7/tjKG+5ljZzJIpf8bPpHmHZioU87pCPV62Yaxocvsrj+Q== X-Received: by 2002:a92:ca0f:0:b0:310:b5e3:10df with SMTP id j15-20020a92ca0f000000b00310b5e310dfmr4542346ils.30.1674802167133; Thu, 26 Jan 2023 22:49:27 -0800 (PST) Received: from mars.tail36e24.ts.net (dynamic-acs-24-154-253-225.zoominternet.net. [24.154.253.225]) by smtp.gmail.com with ESMTPSA id z8-20020a02cea8000000b0038a822f87c3sm1194955jaq.159.2023.01.26.22.49.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jan 2023 22:49:26 -0800 (PST) Date: Fri, 27 Jan 2023 01:49:25 -0500 From: Flavio Cruz To: Thomas Schwinge Cc: gcc-patches@gcc.gnu.org, bug-hurd@gnu.org Subject: Re: [PATCH] Add support for x86_64-*-gnu-* targets to build x86_64 gnumach/hurd Message-ID: References: <87bkmlpud3.fsf@euler.schwinge.homeip.net> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <87bkmlpud3.fsf@euler.schwinge.homeip.net> X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,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: 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/ChangeLog: * config.gcc: Recognize x86_64-*-gnu* targets and include i386/gnu64.h. * config/i386/gnu64.h: Define configuration for new target including ld.so location. libgcc/ChangeLog: * config.host: Recognize x86_64-*-gnu* targets. * config/i386/gnu-unwind.h: Update to handle __x86_64__ with a TODO for now. Signed-off-by: Flavio Cruz --- On Thu, Jan 26, 2023 at 09:34:16AM +0100, Thomas Schwinge wrote: >Hi Flavio! Hi Thomas! > >On 2022-12-26T12:34:28-0500, Flavio Cruz via Gcc-patches wrote: >> Tested by building a toolchain and compiling gnumach for x86_64 > >Oh, wow, so this is indeed happening, finally! :-D > >> This is the basic version without unwind support which I think is only required to >> implement exceptions. > >ACK, this can all be tuned later. We understand that ABI to be >completely unstable at this point. > > >Your patch generally looks good, and I'll drop it into my regular >x86_64-pc-linux-gnu testing, to verify that we don't accidentally break >things re 'x86_64-*-gnu*' matching (but I think we're safe). That sounds good. > > >As you don't have FSF Copyright Assignment on file for GCC (as far as I >can tell), are you either going to get that, or re-submit this patch with >DCO ('Signed-off-by:' tag), ? Yes, I think I have it for Hurd related projects but not GCC. Added Signed-off-by. > > >While at that, please also adjust: > >> --- /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. > >^ 2023 ;-) Done Revisted patch is inlined below. Also added the ChangeLog details. Thanks a lot for your help! > > >Grüße > Thomas >----------------- >Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955 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 89f56047cfe..ff6166a429b 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1971,7 +1971,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="${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 @@ -1982,6 +1982,9 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu) x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h" ;; + x86_64-*-gnu*) + tm_file="${tm_file} gnu.h i386/gnu64.h" + ;; esac tmake_file="${tmake_file} i386/t-linux64" x86_multilibs="${with_multilib_list}" diff --git a/gcc/config/i386/gnu64.h b/gcc/config/i386/gnu64.h new file mode 100644 index 00000000000..a411f0e802a --- /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) 2023 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 18fe2f9ea17..70d47e08e40 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -751,6 +751,12 @@ x86_64-*-kfreebsd*-gnu) tmake_file="${tmake_file} i386/t-crtpc t-crtfm i386/t-crtstuff t-dfprules" tm_file="${tm_file} i386/elf-lib.h" ;; +x86_64-*-gnu*) + extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o" + tmake_file="${tmake_file} i386/t-crtpc t-crtfm i386/t-crtstuff t-dfprules" + tm_file="${tm_file} i386/elf-lib.h" + md_unwind_header=i386/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="${tmake_file} t-tls i386/t-linux i386/t-msabi t-slibgcc-libgcc" if test "$libgcc_cv_cfi" = "yes"; then tmake_file="${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 7cb1c7aca4d..85aa2d61b63 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.39.0