On Tue, Feb 7, 2012 at 9:54 AM, Jakub Jelinek <ja...@redhat.com> wrote: > On Mon, Jan 23, 2012 at 12:03:27PM +0100, Richard Guenther wrote: >> On Mon, Jan 23, 2012 at 12:23 AM, Gerald Pfeifer <ger...@pfeifer.com> wrote: >> > On Sat, 21 Jan 2012, Tijl Coosemans wrote: >> >> I've been using this patch now. It's similar to the above url, but >> >> conditional on TARGET_LIBC_PROVIDES_SSP to support older FreeBSD >> >> versions. >> >> >> >> Gerald volunteered to commit. Gerald, just trunk for now or older >> >> branches too? >> > >> > If Richi agries, I'd apply this on trunk and the GCC 4.6 branch, >> > since that is the stable release our users employ. >> >> Sure, go ahead. >> >> Richard. >> >> > Gerald >> > >> > PS: We also need to update the copyright date at the top, and I'll >> > take care of that when committing. >> > >> >> 2011-01-20 Tijl Coosemans <t...@coosemans.org> >> >> >> >> * gcc/config/freebsd-spec.h [TARGET_LIBC_PROVIDES_SSP] >> >> (LINK_SSP_SPEC): Define. > > This change unfortunately broke all non-freebsd powerpc* targets. > For some weird reason freebsd-spec.h is included for all powerpc* targets > (to support -mcall-freebsd), which means that e.g. on powerpc64-linux > the above results in -fstack-protector being broken. > > So, if this mess is really needed (does anybody actually use -mcall-freebsd > on non-freebsd targets?), IMHO freebsd-spec.h must avoid defining non-FBSD_ > prefixed macros, as the following (completely untested) patch. Don't have > access to FreeBSD to test it there though, can test on powerpc64-linux.
Ugh. I propose to revert the original patch for now. Richard. > 2012-02-07 Jakub Jelinek <ja...@redhat.com> > > * config/freebsd-spec.h (LINK_EH_SPEC, LINK_SSP_SPEC, > USE_LD_AS_NEEDED): Don't define. > (FBSD_LINK_EH_SPEC, FBSD_LINK_SSP_SPEC, FBSD_USE_LD_AS_NEEDED): > Define these instead. > * config/freebsd.h (LINK_EH_SPEC, LINK_SSP_SPEC, USE_LD_AS_NEEDED): > Redefine to FBSD_* macros if those are defined. > > --- gcc/config/freebsd-spec.h.jj 2012-01-30 00:10:01.000000000 +0100 > +++ gcc/config/freebsd-spec.h 2012-02-07 09:46:05.031256945 +0100 > @@ -135,14 +135,15 @@ is built with the --enable-threads confi > #endif > > #if defined(HAVE_LD_EH_FRAME_HDR) > -#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " > +#define FBSD_LINK_EH_SPEC "%{!static:--eh-frame-hdr} " > #endif > > #ifdef TARGET_LIBC_PROVIDES_SSP > -#define LINK_SSP_SPEC > "%{fstack-protector|fstack-protector-all:-lssp_nonshared}" > +#define FBSD_LINK_SSP_SPEC \ > + "%{fstack-protector|fstack-protector-all:-lssp_nonshared}" > #endif > > /* Use --as-needed -lgcc_s for eh support. */ > #ifdef HAVE_LD_AS_NEEDED > -#define USE_LD_AS_NEEDED 1 > +#define FBSD_USE_LD_AS_NEEDED 1 > #endif > --- gcc/config/freebsd.h.jj 2010-11-26 18:39:09.000000000 +0100 > +++ gcc/config/freebsd.h 2012-02-07 09:48:50.872294367 +0100 > @@ -1,6 +1,6 @@ > /* Base configuration file for all FreeBSD targets. > Copyright (C) 1999, 2000, 2001, 2007, 2008, 2009, > - 2010 Free Software Foundation, Inc. > + 2010, 2011, 2012 Free Software Foundation, Inc. > > This file is part of GCC. > > @@ -45,6 +45,21 @@ along with GCC; see the file COPYING3. > #undef LIB_SPEC > #define LIB_SPEC FBSD_LIB_SPEC > > +#ifdef FBSD_LINK_EH_SPEC > +#undef LINK_EH_SPEC > +#define LINK_EH_SPEC FBSD_LINK_EH_SPEC > +#endif > + > +#ifdef FBSD_LINK_SSP_SPEC > +#undef LINK_SSP_SPEC > +#define LINK_SSP_SPEC FBSD_LINK_SSP_SPEC > +#endif > + > +#ifdef FBSD_USE_LD_AS_NEEDED > +#undef USE_LD_AS_NEEDED > +#define USE_LD_AS_NEEDED FBSD_USE_LD_AS_NEEDED > +#endif > + > /************************[ Target stuff > ]***********************************/ > > /* All FreeBSD Architectures support the ELF object file format. */ > > Jakub