On Wed, 2014-07-23 at 15:06 -0500, Peter Bergner wrote: > On Wed, 2014-07-16 at 11:23 +0200, Jakub Jelinek wrote: > > On Wed, Jul 16, 2014 at 05:18:06AM -0400, David Edelsohn wrote: > > > This seems weird. Why wasn't this file included before or whenever it > > > was added for other *-linux targets? This seems to define SPECs that > > > should have been necessary before now. > > > > All other Linux targets where asan is supported got the right definitions > > from gnu-user.h, it was needed even on the older release branches. > > Ok, I compiled a source file that #includes tm.h and looked at the -dD -E > output to see what macros get defined with and without this change. > There are a few macros the gnu-user.h defines that are identical to what > some of the rs6000/sysv4.h or rs6000/linux{,64}.h header files define, so > we could remove those. There are some that are different too, so we'd > need to keep those. The following are the macros that are identical:
FYI, here is the mainline patch that removes the redundant macro defines in rs6000/linux.h and rs6000/linux64.h. This also passed bootstrap and regtesting with no regressions. Peter * config.gcc (powerpc*-*-linux*): Include gnu-user.h in tm_file. * config/rs6000/sysv4.h (CC!_SPEC): Undefine it before defining it. * config/rs6000/linux.h (CPLUSPLUS_CPP_SPEC): Delete define. (LINK_GCC_C_SEQUENCE_SPEC): Likewise. (USE_LD_AS_NEEDED): Likewise. (ASM_APP_ON): Likewise. (ASM_APP_OFF): Likewise. (TARGET_POSIX_IO): Likewise. * config/rs6000/linux64.h (CPLUSPLUS_CPP_SPEC): Likewise. (LINK_GCC_C_SEQUENCE_SPEC): Likewise. (USE_LD_AS_NEEDED): Likewise. (ASM_APP_ON): Likewise. (ASM_APP_OFF): Likewise. (TARGET_POSIX_IO): Likewise. Index: gcc/config.gcc =================================================================== --- gcc/config.gcc (revision 212572) +++ gcc/config.gcc (working copy) @@ -2243,7 +2243,7 @@ powerpc-*-rtems*) tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm" ;; powerpc*-*-linux*) - tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h" + tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h" extra_options="${extra_options} rs6000/sysv4.opt" tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm" extra_objs="$extra_objs rs6000-linux.o" Index: gcc/config/rs6000/sysv4.h =================================================================== --- gcc/config/rs6000/sysv4.h (revision 212572) +++ gcc/config/rs6000/sysv4.h (working copy) @@ -539,6 +539,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF #endif /* Pass -G xxx to the compiler. */ +#undef CC1_SPEC #define CC1_SPEC "%{G*} %(cc1_cpu)" \ "%{meabi: %{!mcall-*: -mcall-sysv }} \ %{!meabi: %{!mno-eabi: \ Index: gcc/config/rs6000/linux.h =================================================================== --- gcc/config/rs6000/linux.h (revision 212572) +++ gcc/config/rs6000/linux.h (working copy) @@ -56,12 +56,6 @@ #undef CPP_OS_DEFAULT_SPEC #define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)" -/* The GNU C++ standard library currently requires _GNU_SOURCE being - defined on glibc-based systems. This temporary hack accomplishes this, - it should go away as soon as libstdc++-v3 has a real fix. */ -#undef CPLUSPLUS_CPP_SPEC -#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)" - #undef LINK_SHLIB_SPEC #define LINK_SHLIB_SPEC "%{shared:-shared} %{!shared: %{static:-static}}" @@ -98,22 +92,6 @@ %{rdynamic:-export-dynamic} \ -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" -#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 - -/* Override rs6000.h definition. */ -#undef ASM_APP_ON -#define ASM_APP_ON "#APP\n" - -/* Override rs6000.h definition. */ -#undef ASM_APP_OFF -#define ASM_APP_OFF "#NO_APP\n" - /* For backward compatibility, we must continue to use the AIX structure return convention. */ #undef DRAFT_V4_STRUCT_RET @@ -129,8 +107,6 @@ #define RELOCATABLE_NEEDS_FIXUP \ (rs6000_isa_flags & rs6000_isa_flags_explicit & OPTION_MASK_RELOCATABLE) -#define TARGET_POSIX_IO - #ifdef TARGET_LIBC_PROVIDES_SSP /* ppc32 glibc provides __stack_chk_guard in -0x7008(2). */ #define TARGET_THREAD_SSP_OFFSET -0x7008 Index: gcc/config/rs6000/linux64.h =================================================================== --- gcc/config/rs6000/linux64.h (revision 212572) +++ gcc/config/rs6000/linux64.h (working copy) @@ -343,12 +343,6 @@ extern int dot_symbols; #undef CPP_OS_DEFAULT_SPEC #define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)" -/* The GNU C++ standard library currently requires _GNU_SOURCE being - defined on glibc-based systems. This temporary hack accomplishes this, - it should go away as soon as libstdc++-v3 has a real fix. */ -#undef CPLUSPLUS_CPP_SPEC -#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)" - #undef LINK_SHLIB_SPEC #define LINK_SHLIB_SPEC "%{shared:-shared} %{!shared: %{static:-static}}" @@ -440,14 +434,6 @@ extern int dot_symbols; #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 32 -/* Override rs6000.h definition. */ -#undef ASM_APP_ON -#define ASM_APP_ON "#APP\n" - -/* Override rs6000.h definition. */ -#undef ASM_APP_OFF -#define ASM_APP_OFF "#NO_APP\n" - #undef RS6000_MCOUNT #define RS6000_MCOUNT "_mcount" @@ -547,16 +533,6 @@ extern int dot_symbols; #undef DRAFT_V4_STRUCT_RET #define DRAFT_V4_STRUCT_RET (!TARGET_64BIT) -#define TARGET_POSIX_IO - -#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 - #ifdef TARGET_LIBC_PROVIDES_SSP /* ppc32 glibc provides __stack_chk_guard in -0x7008(2), ppc64 glibc provides it at -0x7010(13). */