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). */