From 5f7ca34bf522bcfaac6978ffa31e75158995c468 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Sun, 4 May 2008 11:25:04 +0000 Subject: [PATCH] config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes. gcc/ * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes. (sparc*-*-linux*): Use linux.h in tm_file. (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch compiler defaulting to 32-bit. (sparc*-*-*): Remove explicit target settings of need_64bit_hwint, no longer needed. * config/sparc/linux.h: Remove definitions now obtained properly from linux.h * config/sparc/linux64.h: Likewise. (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we don't want this setting for 32-bit builds in a biarch compiler. * doc/install.texi: Add sparc-linux to list of targets supporting --enable-targets=all. libcpp/ * configure.ac (sparc*-*-*): Always set need_64bit_hwint to yes. * configure: Regenerate. From-SVN: r134929 --- gcc/ChangeLog | 16 ++++++ gcc/config.gcc | 20 +++---- gcc/config/sparc/linux.h | 77 ++------------------------- gcc/config/sparc/linux64.h | 105 ++++++------------------------------- gcc/doc/install.texi | 3 +- libcpp/configure | 4 +- libcpp/configure.ac | 4 +- 7 files changed, 50 insertions(+), 179 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 351998644bc..c1da450a412 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2008-05-04 David S. Miller + + * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes. + (sparc*-*-linux*): Use linux.h in tm_file. + (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch + compiler defaulting to 32-bit. + (sparc*-*-*): Remove explicit target settings of need_64bit_hwint, + no longer needed. + * config/sparc/linux.h: Remove definitions now obtained + properly from linux.h + * config/sparc/linux64.h: Likewise. + (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we + don't want this setting for 32-bit builds in a biarch compiler. + * doc/install.texi: Add sparc-linux to list of targets + supporting --enable-targets=all. + 2008-05-03 Andrew Pinski * Makefile.in (tree-ssa-phiprop.o): Fix dependencies. diff --git a/gcc/config.gcc b/gcc/config.gcc index 00cd60c0244..04b46c38fe7 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -358,12 +358,9 @@ rs6000*-*-*) score*-*-*) cpu_type=score ;; -sparc64*-*-*) - cpu_type=sparc - need_64bit_hwint=yes - ;; sparc*-*-*) cpu_type=sparc + need_64bit_hwint=yes ;; spu*-*-*) cpu_type=spu @@ -2357,9 +2354,15 @@ sparc-*-elf*) use_fixproto=yes ;; sparc-*-linux*) # SPARC's running GNU/Linux, libc6 - tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h" + tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h" extra_options="${extra_options} sparc/long-double-switch.opt" - tmake_file="${tmake_file} sparc/t-linux sparc/t-crtfm" + if test x$enable_targets = xall; then + tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h" + tmake_file="${tmake_file} sparc/t-linux64 sparc/t-crtfm" + else + tm_file="${tm_file} sparc/linux.h" + tmake_file="${tmake_file} sparc/t-linux sparc/t-crtfm" + fi ;; sparc-*-rtems*) tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h" @@ -2396,7 +2399,6 @@ sparc64-*-solaris2* | sparcv9-*-solaris2*) "":yes:* | yes:yes:* ) thread_file=posix ;; "":*:yes | yes:*:yes ) thread_file=solaris ;; esac - need_64bit_hwint=yes ;; sparc-*-solaris2*) tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h" @@ -2437,7 +2439,6 @@ sparc-*-solaris2*) fi tm_file="${tm_file} tm-dwarf2.h" tmake_file="$tmake_file sparc/t-sol2-64" - need_64bit_hwint=yes test x$with_cpu != x || with_cpu=v9 ;; esac @@ -2488,10 +2489,9 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*) x) with_cpu=ultrasparc ;; *) echo "$with_cpu not supported for freebsd target"; exit 1 ;; esac - need_64bit_hwint=yes ;; sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux - tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux64.h" + tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h sparc/linux64.h" extra_options="${extra_options} sparc/long-double-switch.opt" tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm" ;; diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h index bd3b1f5ea7f..67b6412d2e9 100644 --- a/gcc/config/sparc/linux.h +++ b/gcc/config/sparc/linux.h @@ -22,39 +22,12 @@ along with GCC; see the file COPYING3. If not see #define TARGET_OS_CPP_BUILTINS() \ do \ { \ - builtin_define_std ("unix"); \ - builtin_define_std ("linux"); \ - builtin_define ("__gnu_linux__"); \ - builtin_assert ("system=linux"); \ - builtin_assert ("system=unix"); \ - builtin_assert ("system=posix"); \ + LINUX_TARGET_OS_CPP_BUILTINS(); \ if (TARGET_LONG_DOUBLE_128) \ builtin_define ("__LONG_DOUBLE_128__"); \ } \ while (0) -/* Don't assume anything about the header files. */ -#define NO_IMPLICIT_EXTERN_C - -#undef MD_EXEC_PREFIX -#undef MD_STARTFILE_PREFIX - -/* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add - the GNU/Linux magical crtbegin.o file (see crtstuff.c) which - provides part of the support for getting C++ file-scope static - object constructed before entering `main'. */ - -#undef STARTFILE_SPEC -#if defined HAVE_LD_PIE -#define STARTFILE_SPEC \ - "%{!shared: %{pg|p:gcrt1.o%s;pie:Scrt1.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:gcrt1.o%s;:crt1.o%s}}\ - crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" -#endif - /* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on the GNU/Linux magical crtend.o file (see crtstuff.c) which provides part of the support for getting C++ file-scope static @@ -63,8 +36,8 @@ along with GCC; see the file COPYING3. If not see #undef ENDFILE_SPEC #define ENDFILE_SPEC \ - "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ - %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s" + "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s\ + %{ffast-math|funsafe-math-optimizations:crtfastmath.o%s}" /* This is for -profile to use -lc_p instead of -lc. */ #undef CC1_SPEC @@ -75,10 +48,6 @@ along with GCC; see the file COPYING3. If not see %{mv8:-mcpu=v8} %{msupersparc:-mcpu=supersparc} \ " -/* The GNU C++ standard library requires that these macros be defined. */ -#undef CPLUSPLUS_CPP_SPEC -#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)" - #undef TARGET_VERSION #define TARGET_VERSION fprintf (stderr, " (sparc GNU/Linux with ELF)"); @@ -98,12 +67,6 @@ along with GCC; see the file COPYING3. If not see #define CPP_SUBTARGET_SPEC \ "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" -#undef LIB_SPEC -#define LIB_SPEC \ - "%{pthread:-lpthread} \ - %{shared:-lc} \ - %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}}" - /* Provide a LINK_SPEC appropriate for GNU/Linux. Here we provide support for the special GCC options -static and -shared, which allow us to link things in one of these three modes by applying the appropriate @@ -121,15 +84,6 @@ along with GCC; see the file COPYING3. If not see /* If ELF is the default format, we should not use /lib/elf. */ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" -#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -#if UCLIBC_DEFAULT -#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}" -#else -#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}" -#endif -#define LINUX_DYNAMIC_LINKER \ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) - #undef LINK_SPEC #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ @@ -191,10 +145,6 @@ do { \ #undef DITF_CONVERSION_LIBFUNCS #define DITF_CONVERSION_LIBFUNCS 1 - -#if defined(HAVE_LD_EH_FRAME_HDR) -#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -#endif #ifdef HAVE_AS_TLS #undef TARGET_SUN_TLS @@ -203,31 +153,10 @@ do { \ #define TARGET_GNU_TLS 1 #endif -/* Don't be different from other Linux platforms in this regard. */ -#define HANDLE_PRAGMA_PACK_PUSH_POP - /* We use GNU ld so undefine this so that attribute((init_priority)) works. */ #undef CTORS_SECTION_ASM_OP #undef DTORS_SECTION_ASM_OP -/* Determine whether the entire c99 runtime is present in the - runtime library. */ -#define TARGET_C99_FUNCTIONS (OPTION_GLIBC) - -/* Whether we have sincos that follows the GNU extension. */ -#define TARGET_HAS_SINCOS (OPTION_GLIBC) - -#define TARGET_POSIX_IO - -#undef LINK_GCC_C_SEQUENCE_SPEC -#define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" - -/* Use --as-needed -lgcc_s for eh support. */ -#ifdef HAVE_LD_AS_NEEDED -#define USE_LD_AS_NEEDED 1 -#endif - #define MD_UNWIND_SUPPORT "config/sparc/linux-unwind.h" /* Linux currently uses RMO in uniprocessor mode, which is equivalent to diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h index b205552874b..f8c87b95c86 100644 --- a/gcc/config/sparc/linux64.h +++ b/gcc/config/sparc/linux64.h @@ -19,27 +19,18 @@ You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see . */ -#define TARGET_OS_CPP_BUILTINS() \ - do \ - { \ - builtin_define_std ("unix"); \ - builtin_define_std ("linux"); \ - builtin_define ("_LONGLONG"); \ - builtin_define ("__gnu_linux__"); \ - builtin_assert ("system=linux"); \ - builtin_assert ("system=unix"); \ - builtin_assert ("system=posix"); \ - if (TARGET_ARCH32 && TARGET_LONG_DOUBLE_128) \ - builtin_define ("__LONG_DOUBLE_128__"); \ - } \ +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + LINUX_TARGET_OS_CPP_BUILTINS(); \ + if (TARGET_ARCH64) \ + builtin_define ("_LONGLONG"); \ + if (TARGET_ARCH32 \ + && TARGET_LONG_DOUBLE_128) \ + builtin_define ("__LONG_DOUBLE_128__"); \ + } \ while (0) -/* Don't assume anything about the header files. */ -#define NO_IMPLICIT_EXTERN_C - -#undef MD_EXEC_PREFIX -#undef MD_STARTFILE_PREFIX - #if TARGET_CPU_DEFAULT == TARGET_CPU_v9 \ || TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc \ || TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc3 \ @@ -54,25 +45,10 @@ along with GCC; see the file COPYING3. If not see + MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) #endif -#undef ASM_CPU_DEFAULT_SPEC -#define ASM_CPU_DEFAULT_SPEC "-Av9a" - -/* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add - the GNU/Linux magical crtbegin.o file (see crtstuff.c) which - provides part of the support for getting C++ file-scope static - object constructed before entering `main'. */ - -#undef STARTFILE_SPEC - -#ifdef HAVE_LD_PIE -#define STARTFILE_SPEC \ - "%{!shared:%{pg|p:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}}\ - crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbeginS.o%s}" -#else -#define STARTFILE_SPEC \ - "%{!shared:%{pg|p:gcrt1.o%s;:crt1.o%s}}\ - crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbeginS.o%s}" -#endif +/* This must be v9a not just v9 because by default we enable + -mvis. */ +#undef ASM_CPU64_DEFAULT_SPEC +#define ASM_CPU64_DEFAULT_SPEC "-Av9a" /* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on the GNU/Linux magical crtend.o file (see crtstuff.c) which @@ -80,16 +56,11 @@ along with GCC; see the file COPYING3. If not see object constructed before entering `main', followed by a normal GNU/Linux "finalizer" file, `crtn.o'. */ -#undef ENDFILE_SPEC - +#undef ENDFILE_SPEC #define ENDFILE_SPEC \ "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s\ %{ffast-math|funsafe-math-optimizations:crtfastmath.o%s}" -/* The GNU C++ standard library requires that these macros be defined. */ -#undef CPLUSPLUS_CPP_SPEC -#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)" - #undef TARGET_VERSION #define TARGET_VERSION fprintf (stderr, " (sparc64 GNU/Linux with ELF)"); @@ -122,12 +93,6 @@ along with GCC; see the file COPYING3. If not see %{pthread:-D_REENTRANT} \ " -#undef LIB_SPEC -#define LIB_SPEC \ - "%{pthread:-lpthread} \ - %{shared:-lc} \ - %{!shared: %{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}}" - /* Provide a LINK_SPEC appropriate for GNU/Linux. Here we provide support for the special GCC options -static and -shared, which allow us to link things in one of these three modes by applying the appropriate @@ -146,17 +111,6 @@ along with GCC; see the file COPYING3. If not see #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2" -#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0" -#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0" -#if UCLIBC_DEFAULT -#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}" -#else -#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}" -#endif -#define LINUX_DYNAMIC_LINKER32 \ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32) -#define LINUX_DYNAMIC_LINKER64 \ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) #ifdef SPARC_BI_ARCH @@ -203,7 +157,7 @@ along with GCC; see the file COPYING3. If not see #undef CC1_SPEC #if DEFAULT_ARCH32_P -#define CC1_SPEC "\ +#define CC1_SPEC "%{profile:-p} \ %{sun4:} %{target:} \ %{mcypress:-mcpu=cypress} \ %{msparclite:-mcpu=sparclite} %{mf930:-mcpu=f930} %{mf934:-mcpu=f934} \ @@ -214,7 +168,7 @@ along with GCC; see the file COPYING3. If not see %{!mno-vis:%{!mcpu=v9:-mvis}}} \ " #else -#define CC1_SPEC "\ +#define CC1_SPEC "%{profile:-p} \ %{sun4:} %{target:} \ %{mcypress:-mcpu=cypress} \ %{msparclite:-mcpu=sparclite} %{mf930:-mcpu=f930} %{mf934:-mcpu=f934} \ @@ -324,10 +278,6 @@ do { \ #undef DITF_CONVERSION_LIBFUNCS #define DITF_CONVERSION_LIBFUNCS 1 - -#if defined(HAVE_LD_EH_FRAME_HDR) -#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -#endif #ifdef HAVE_AS_TLS #undef TARGET_SUN_TLS @@ -336,31 +286,10 @@ do { \ #define TARGET_GNU_TLS 1 #endif -/* Don't be different from other Linux platforms in this regard. */ -#define HANDLE_PRAGMA_PACK_PUSH_POP - /* We use GNU ld so undefine this so that attribute((init_priority)) works. */ #undef CTORS_SECTION_ASM_OP #undef DTORS_SECTION_ASM_OP -/* Determine whether the entire c99 runtime is present in the - runtime library. */ -#define TARGET_C99_FUNCTIONS (OPTION_GLIBC) - -/* Whether we have sincos that follows the GNU extension. */ -#define TARGET_HAS_SINCOS (OPTION_GLIBC) - -#define TARGET_POSIX_IO - -#undef LINK_GCC_C_SEQUENCE_SPEC -#define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" - -/* Use --as-needed -lgcc_s for eh support. */ -#ifdef HAVE_LD_AS_NEEDED -#define USE_LD_AS_NEEDED 1 -#endif - #define MD_UNWIND_SUPPORT "config/sparc/linux-unwind.h" /* Linux currently uses RMO in uniprocessor mode, which is equivalent to diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 027b1692bd9..0391ec86b7d 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -1201,7 +1201,8 @@ powerpc-linux for powerpc64-linux, only generates 32-bit code. This option enables the 32-bit target to be a bi-arch compiler, which is useful when you want a bi-arch compiler that defaults to 32-bit, and you are building a bi-arch or multi-arch binutils in a combined tree. -Currently, this option only affects powerpc-linux and x86-linux. +Currently, this option only affects sparc-linux, powerpc-linux and +x86-linux. @item --enable-secureplt This option enables @option{-msecure-plt} by default for powerpc-linux. diff --git a/libcpp/configure b/libcpp/configure index 0f43267d0b1..6f587722149 100755 --- a/libcpp/configure +++ b/libcpp/configure @@ -8329,9 +8329,7 @@ case $target in powerpc*-*-* | \ rs6000*-*-* | \ s390*-*-* | \ - sparc64*-*-* | ultrasparc-*-freebsd* | \ - sparcv9-*-solaris2* | \ - sparc-*-solaris2.[789] | sparc-*-solaris2.1[0-9]* | \ + sparc*-*-* | \ spu-*-* | \ sh[123456789lbe]*-*-* | sh-*-*) need_64bit_hwint=yes ;; diff --git a/libcpp/configure.ac b/libcpp/configure.ac index b92f390a40a..88136743dad 100644 --- a/libcpp/configure.ac +++ b/libcpp/configure.ac @@ -126,9 +126,7 @@ case $target in powerpc*-*-* | \ rs6000*-*-* | \ s390*-*-* | \ - sparc64*-*-* | ultrasparc-*-freebsd* | \ - sparcv9-*-solaris2* | \ - sparc-*-solaris2.[789] | sparc-*-solaris2.1[0-9]* | \ + sparc*-*-* | \ spu-*-* | \ sh[123456789lbe]*-*-* | sh-*-*) need_64bit_hwint=yes ;; -- 2.30.2