From 72a65e812a6c58dc412fe91219b1a86168b9954d Mon Sep 17 00:00:00 2001 From: tschwinge Date: Thu, 13 Nov 2008 23:28:46 +0000 Subject: [PATCH] 2008-11-13 Thomas Schwinge PR target/28102 * config.gcc (*-*-gnu*): Move Alpha parts into the `alpha*-*-gnu*', x86 parts into the `i[34567]86-*-linux*' and parts that are independent of the processor architecture into the `*-*-linux*' cases. (*-*-linux*): Consider `linux.opt' only for Linux-based configurations. * config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Redefine. (TARGET_OS_CPP_BUILTINS, LINK_SPEC): Don't redefine. [TARGET_LIBC_PROVIDES_SSP] (TARGET_THREAD_SSP_OFFSET): Undefine. * config/gnu.h (NO_IMPLICIT_EXTERN_C): Don't redefine. (HURD_TARGET_OS_CPP_BUILTINS): Don't define, but instead... (LINUX_TARGET_OS_CPP_BUILTINS): Redefine. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@141838 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 14 ++++++++++++++ gcc/config.gcc | 48 ++++++++++++++++++------------------------------ gcc/config/gnu.h | 6 ++---- gcc/config/i386/gnu.h | 24 ++++++++---------------- 4 files changed, 42 insertions(+), 50 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ece73ea4ca0..a01c06e5c39 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2008-11-13 Thomas Schwinge + + PR target/28102 + * config.gcc (*-*-gnu*): Move Alpha parts into the `alpha*-*-gnu*', x86 + parts into the `i[34567]86-*-linux*' and parts that are independent of + the processor architecture into the `*-*-linux*' cases. + (*-*-linux*): Consider `linux.opt' only for Linux-based configurations. + * config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Redefine. + (TARGET_OS_CPP_BUILTINS, LINK_SPEC): Don't redefine. + [TARGET_LIBC_PROVIDES_SSP] (TARGET_THREAD_SSP_OFFSET): Undefine. + * config/gnu.h (NO_IMPLICIT_EXTERN_C): Don't redefine. + (HURD_TARGET_OS_CPP_BUILTINS): Don't define, but instead... + (LINUX_TARGET_OS_CPP_BUILTINS): Redefine. + 2008-11-13 Ruan Beihong * config/mips/loongson.md (div3, mod3): New patterns. diff --git a/gcc/config.gcc b/gcc/config.gcc index 7a6c662987e..82a6ea5e66b 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -480,16 +480,28 @@ case ${target} in esac fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h" ;; -*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) - # Must come before *-*-gnu* (because of *-*-linux-gnu* systems). +*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu*) extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" - extra_options="${extra_options} linux.opt" gas=yes gnu_ld=yes case ${enable_threads} in "" | yes | posix) thread_file='posix' ;; esac tmake_file="t-slibgcc-elf-ver t-linux" + case $target in + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) + :;; + *-*-gnu*) + tmake_file="$tmake_file t-gnu";; + esac + # glibc / uclibc switch. uclibc isn't usable for GNU/Hurd and neither for + # GNU/k*BSD. + case $target in + *linux*) + extra_options="$extra_options linux.opt";; + *) + tm_defines="$tm_defines OPTION_GLIBC=1";; + esac case ${target} in *-*-*uclibc*) tm_defines="${tm_defines} UCLIBC_DEFAULT=1" @@ -502,30 +514,6 @@ case ${target} in default_use_cxa_atexit=yes use_gcc_tgmath=no ;; -*-*-gnu*) - # On the Hurd, the setup is just about the same on - # each different CPU. The specific machines that we - # support are matched above and just set $cpu_type. - tm_file="${cpu_type}/gnu.h" - extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o" - # GNU tools are the only tools. - gas=yes - gnu_ld=yes - # These details are the same as for Linux. - # But here we need a little extra magic. - tmake_file="t-slibgcc-elf-ver t-linux t-gnu" - case ${target} in - alpha*) - tm_file="${cpu_type}/${cpu_type}.h alpha/elf.h alpha/linux.h alpha/linux-elf.h gnu.h ${tm_file}" - ;; - i[34567]86-*-*) - tm_file="${cpu_type}/${cpu_type}.h i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h gnu.h ${tm_file}" - ;; - esac - # Assume that glibc is being used and so __cxa_atexit is provided. - default_use_cxa_atexit=yes - use_gcc_tgmath=no - ;; *-*-netbsd*) tmake_file="t-slibgcc-elf-ver t-libc-ok t-netbsd t-libgcc-pic" gas=yes @@ -618,6 +606,7 @@ alpha*-*-linux*) tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee alpha/t-linux" ;; alpha*-*-gnu*) + tm_file="$tm_file alpha/elf.h alpha/linux.h alpha/linux-elf.h gnu.h alpha/gnu.h" target_cpu_default="MASK_GAS" tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee" ;; @@ -1085,7 +1074,7 @@ i[34567]86-*-openbsd*) i[34567]86-*-coff*) tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/i386-coff.h" ;; -i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu) +i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu*) # Intel 80386's running GNU/* # with ELF format using glibc 2 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h" @@ -1116,6 +1105,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu) ;; i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} i386/linux.h knetbsd-gnu.h i386/knetbsd-gnu.h" ;; i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} i386/linux.h kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;; + i[34567]86-*-gnu*) tm_file="$tm_file i386/linux.h gnu.h i386/gnu.h";; esac tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules" ;; @@ -1128,8 +1118,6 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu) esac tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules" ;; -i[34567]86-*-gnu*) - ;; i[34567]86-pc-msdosdjgpp*) xm_file=i386/xm-djgpp.h tm_file="dbxcoff.h ${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h" diff --git a/gcc/config/gnu.h b/gcc/config/gnu.h index 412a4f89833..1299376e665 100644 --- a/gcc/config/gnu.h +++ b/gcc/config/gnu.h @@ -32,10 +32,8 @@ along with GCC. If not, see . #undef STANDARD_INCLUDE_DIR #define STANDARD_INCLUDE_DIR "/include" -/* The system headers under GNU are C++-aware. */ -#define NO_IMPLICIT_EXTERN_C - -#define HURD_TARGET_OS_CPP_BUILTINS() \ +#undef LINUX_TARGET_OS_CPP_BUILTINS +#define LINUX_TARGET_OS_CPP_BUILTINS() \ do { \ builtin_define ("__gnu_hurd__"); \ builtin_define ("__GNU__"); \ diff --git a/gcc/config/i386/gnu.h b/gcc/config/i386/gnu.h index 10fea9e96b0..077933bba68 100644 --- a/gcc/config/i386/gnu.h +++ b/gcc/config/i386/gnu.h @@ -20,31 +20,18 @@ You should have received a copy of the GNU General Public License along with GCC. If not, see . */ +#undef GLIBC_DYNAMIC_LINKER +#define GLIBC_DYNAMIC_LINKER "/lib/ld.so" + #undef TARGET_VERSION #define TARGET_VERSION fprintf (stderr, " (i386 GNU)"); -#undef TARGET_OS_CPP_BUILTINS /* config.gcc includes i386/linux.h. */ -#define TARGET_OS_CPP_BUILTINS() \ - do \ - { \ - HURD_TARGET_OS_CPP_BUILTINS(); \ - } \ - while (0) - #undef CPP_SPEC #define CPP_SPEC "%{pthread:-D_REENTRANT} %{posix:-D_POSIX_SOURCE} %{bsd:-D_BSD_SOURCE}" #undef CC1_SPEC #define CC1_SPEC "%(cc1_cpu)" -#undef LINK_SPEC -#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so}} \ - %{static:-static}}" - #undef STARTFILE_SPEC #if defined HAVE_LD_PIE #define STARTFILE_SPEC \ @@ -62,3 +49,8 @@ along with GCC. If not, see . /* FIXME: Is a Hurd-specific fallback mechanism necessary? */ #undef MD_UNWIND_SUPPORT + +#ifdef TARGET_LIBC_PROVIDES_SSP +/* Not supported yet. */ +#undef TARGET_THREAD_SSP_OFFSET +#endif -- 2.11.4.GIT