Sergey Bugaev <buga...@gmail.com> writes: > Since it's not i386-specific; this makes it possible to reuse it for other > architectures. > > Also, add a warning for the case gnu.h is specified before gnu-user.h, which > would cause gnu-user's version of the spec to override gnu's, and not the > other > way around as it's intended. The i?86-gnu target currently specifies them in > the right order, but it's easy to accidentally put them in a wrong order. > > Signed-off-by: Sergey Bugaev <buga...@gmail.com>
The series looks good to me FWIW, but Thomas should have the final say. Thanks, Richard > --- > gcc/config/gnu.h | 16 ++++++++++++++++ > gcc/config/i386/gnu.h | 11 ----------- > 2 files changed, 16 insertions(+), 11 deletions(-) > > diff --git a/gcc/config/gnu.h b/gcc/config/gnu.h > index 97baea939..89904cd9b 100644 > --- a/gcc/config/gnu.h > +++ b/gcc/config/gnu.h > @@ -31,3 +31,19 @@ along with GCC. If not, see > <http://www.gnu.org/licenses/>. > builtin_assert ("system=unix"); \ > builtin_assert ("system=posix"); \ > } while (0) > + > + > +#ifndef GNU_USER_TARGET_STARTFILE_SPEC > +# warning This file should be included after gnu-user.h, to override its > STARTFILE_SPEC > +#endif > + > +#undef STARTFILE_SPEC > +#if defined HAVE_LD_PIE > +#define STARTFILE_SPEC \ > + "%{!shared: > %{pg|p|profile:%{static-pie:grcrt0.o%s;static:gcrt0.o%s;:gcrt1.o%s};static-pie:rcrt0.o%s;static:crt0.o%s;" > PIE_SPEC ":Scrt1.o%s;:crt1.o%s}} \ > + crti.o%s %{static:crtbeginT.o%s;shared|static-pie|" PIE_SPEC > ":crtbeginS.o%s;:crtbegin.o%s}" > +#else > +#define STARTFILE_SPEC \ > + "%{!shared: > %{pg|p|profile:%{static:gcrt0.o%s;:gcrt1.o%s};static:crt0.o%s;:crt1.o%s}} \ > + crti.o%s %{static:crtbeginT.o%s;shared:crtbeginS.o%s;:crtbegin.o%s}" > +#endif > diff --git a/gcc/config/i386/gnu.h b/gcc/config/i386/gnu.h > index e776144f9..60244bfc8 100644 > --- a/gcc/config/i386/gnu.h > +++ b/gcc/config/i386/gnu.h > @@ -24,17 +24,6 @@ along with GCC. If not, see > <http://www.gnu.org/licenses/>. > #undef GNU_USER_DYNAMIC_LINKER > #define GNU_USER_DYNAMIC_LINKER "/lib/ld.so" > > -#undef STARTFILE_SPEC > -#if defined HAVE_LD_PIE > -#define STARTFILE_SPEC \ > - "%{!shared: > %{pg|p|profile:%{static-pie:grcrt0.o%s;static:gcrt0.o%s;:gcrt1.o%s};static-pie:rcrt0.o%s;static:crt0.o%s;" > PIE_SPEC ":Scrt1.o%s;:crt1.o%s}} \ > - crti.o%s %{static:crtbeginT.o%s;shared|static-pie|" PIE_SPEC > ":crtbeginS.o%s;:crtbegin.o%s}" > -#else > -#define STARTFILE_SPEC \ > - "%{!shared: > %{pg|p|profile:%{static:gcrt0.o%s;:gcrt1.o%s};static:crt0.o%s;:crt1.o%s}} \ > - crti.o%s %{static:crtbeginT.o%s;shared:crtbeginS.o%s;:crtbegin.o%s}" > -#endif > - > #ifdef TARGET_LIBC_PROVIDES_SSP > > /* i386 glibc provides __stack_chk_guard in %gs:0x14. */