This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] gcc/config/freebsd-spec.h: Fix building PIE executables. Link them with crt{begin,end}S.o and Scrt1.o which are PIC instead of crt{begin,end}.o and crt1.o which are not. Spec synced from gnu-user.h.
- From: Alexis Ballier <aballier at gentoo dot org>
- To: ljrittle at acm dot org
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Wed, 9 May 2012 09:28:37 -0400
- Subject: Re: [PATCH] gcc/config/freebsd-spec.h: Fix building PIE executables. Link them with crt{begin,end}S.o and Scrt1.o which are PIC instead of crt{begin,end}.o and crt1.o which are not. Spec synced from gnu-user.h.
- References: <1336485223-20028-1-git-send-email-aballier@gentoo.org>
Hmm, sorry, it seems I forgot to look at MAINTAINERS and CC him...
On Tue, 8 May 2012 09:53:43 -0400
Alexis Ballier <aballier@gentoo.org> wrote:
> gcc/config/i386/freebsd.h: Likewise.
> ---
> gcc/config/freebsd-spec.h | 9 +++------
> gcc/config/i386/freebsd.h | 9 +++------
> 2 files changed, 6 insertions(+), 12 deletions(-)
>
> diff --git a/gcc/config/freebsd-spec.h b/gcc/config/freebsd-spec.h
> index 770a3d1..2808582 100644
> --- a/gcc/config/freebsd-spec.h
> +++ b/gcc/config/freebsd-spec.h
> @@ -64,11 +64,8 @@ see the files COPYING3 and COPYING.RUNTIME
> respectively. If not, see before entering `main'. */
>
> #define FBSD_STARTFILE_SPEC \
> - "%{!shared: \
> - %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
> - %{!p:%{profile:gcrt1.o%s} \
> - %{!profile:crt1.o%s}}}} \
> - crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
> + "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
> + crti.o%s %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
>
> /* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on
> the magical crtend.o file (see crtstuff.c) which provides part of
> @@ -77,7 +74,7 @@ see the files COPYING3 and COPYING.RUNTIME
> respectively. If not, see `crtn.o'. */
>
> #define FBSD_ENDFILE_SPEC \
> - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
> + "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
>
> /* Provide a LIB_SPEC appropriate for FreeBSD as configured and as
> required by the user-land thread model. Before __FreeBSD_version
> diff --git a/gcc/config/i386/freebsd.h b/gcc/config/i386/freebsd.h
> index 649274d..dd69e43 100644
> --- a/gcc/config/i386/freebsd.h
> +++ b/gcc/config/i386/freebsd.h
> @@ -67,11 +67,8 @@ along with GCC; see the file COPYING3. If not see
>
> #undef STARTFILE_SPEC
> #define STARTFILE_SPEC \
> - "%{!shared: \
> - %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
> - %{!p:%{profile:gcrt1.o%s} \
> - %{!profile:crt1.o%s}}}} \
> - crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
> + "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
> + crti.o%s %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
>
> /* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on
> the magical crtend.o file (see crtstuff.c) which provides part of
> @@ -81,7 +78,7 @@ along with GCC; see the file COPYING3. If not see
>
> #undef ENDFILE_SPEC
> #define ENDFILE_SPEC \
> - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
> + "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
>
> /* Provide a LINK_SPEC appropriate for FreeBSD. Here we provide
> support for the special GCC options -static and -shared, which allow
> us to