bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Add support for x86_64-*-gnu-* targets (gcc)


From: Samuel Thibault
Subject: Re: [PATCH] Add support for x86_64-*-gnu-* targets (gcc)
Date: Wed, 21 Dec 2022 12:32:04 +0100
User-agent: NeoMutt/20170609 (1.8.3)

Hello,

Flavio Cruz, le lun. 19 déc. 2022 17:05:08 -0500, a ecrit:
> I'm looking for comments before sending it to the gcc mailing list.

> diff --git a/gcc/config.gcc b/gcc/config.gcc
> index 95190233820..1d76fe98f96 100644
> --- a/gcc/config.gcc
> +++ b/gcc/config.gcc
> @@ -1955,6 +1955,10 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | 
> i[34567]86-*-gnu* | i[34567]8
>               ;;
>       esac
>       ;;
> +x86_64-*-gnu*)
> +  tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h 
> glibc-stdint.h \
> +     i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h gnu.h 
> i386/gnu64.h"
> +  ;;
>  x86_64-*-linux* | x86_64-*-kfreebsd*-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"

Similary, this needs to go after all potential something-gnu triplets,
so better put it at the end.

> diff --git a/gcc/config/i386/gnu64.h b/gcc/config/i386/gnu64.h
> new file mode 100644
> index 00000000000..c764437cb67
> --- /dev/null
> +++ b/gcc/config/i386/gnu64.h
> @@ -0,0 +1,40 @@
> +/* Configuration for an i386 running GNU with ELF as the target machine.  */

x86-64 rather than i386

> +
> +/*
> +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 <http://www.gnu.org/licenses/>.
> +*/
> +
> +#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

I don't think you can to #undef GNU_USER_DYNAMIC_LINKER? It's already
undefed and redefined in gnu.h

> +#define GNU_USER_DYNAMIC_LINKER32 "/lib/ld.so"
> +#define GNU_USER_DYNAMIC_LINKER64 "/lib/ld-x86-64.so"
> +#define GNU_USER_DYNAMIC_LINKERX32 "/lib/ld-x32.so"

I have been wondering over the years why we use ld.so, rather than
ld.so.1 (since the former is a symlink to the latter), and I don't see
any good reason for that, especially when the rest of the world doesn't
do that, and that keeps posing issues in packaging scripts etc.

So I'm thinking for the 64bit version we should probably not repeat the
mistake, and use ld-x86-64.so.1 and ld-x32.so.1?

> diff --git a/libgcc/config.host b/libgcc/config.host
> index eb23abe89f5..38da43edfa6 100644
> --- a/libgcc/config.host
> +++ b/libgcc/config.host
> @@ -740,6 +740,12 @@ i[34567]86-*-gnu*)
>       tm_file="${tm_file} i386/elf-lib.h"
>       md_unwind_header=i386/gnu-unwind.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
> +     ;;
>  x86_64-*-linux*)
>       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"

Similarly, move it to after kfreebsd-gnu.

> diff --git a/libgcc/config/i386/gnu-unwind.h b/libgcc/config/i386/gnu-unwind.h
> index 25eb690e370..b7574f9ac37 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 <signal.h>
>  
> +#ifdef __x86_64__
> +
> +/*
> + * TODO: support for 64 bits need to be implemented.
> + */
> +
> +#else /* ifdef __x86_64__  */
> +
>  #define MD_FALLBACK_FRAME_STATE_FOR x86_gnu_fallback_frame_state
>  
>  static _Unwind_Reason_Code

Yes, that should be fine for now.

Thanks!
Samuel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]