* [patch] backport PIE support for FreeBSD to gcc-49
@ 2015-11-09 12:38 Andreas Tobler
2015-11-11 21:22 ` Andreas Tobler
0 siblings, 1 reply; 2+ messages in thread
From: Andreas Tobler @ 2015-11-09 12:38 UTC (permalink / raw)
To: GCC Patches
[-- Attachment #1: Type: text/plain, Size: 601 bytes --]
Hi,
any objections that I apply this patch to gcc-4.9?
It is FreeBSD only.
TIA,
Andreas
2015-11-09 Andreas Tobler <andreast@gcc.gnu.org>
Backport from mainline
2015-05-18 Andreas Tobler <andreast@gcc.gnu.org>
* config/freebsd-spec.h (FBSD_STARTFILE_SPEC): Add the bits to build
pie executables.
(FBSD_ENDFILE_SPEC): Likewise.
* config/i386/freebsd.h (STARTFILE_SPEC): Remove and use the one from
config/freebsd-spec.h.
(ENDFILE_SPEC): Likewise.
2015-11-02 Andreas Tobler <andreast@gcc.gnu.org>
* config/rs6000/freebsd64.h (ASM_SPEC32): Adust spec to handle
PIE executables.
[-- Attachment #2: gcc49-fbsd-pie-1.diff --]
[-- Type: text/plain, Size: 3298 bytes --]
Index: gcc/config/freebsd-spec.h
===================================================================
--- gcc/config/freebsd-spec.h (revision 230016)
+++ gcc/config/freebsd-spec.h (working copy)
@@ -66,8 +66,9 @@
"%{!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}"
+ %{!profile: \
+ %{pie: Scrt1.o%s;:crt1.o%s}}}}} \
+ crti.o%s %{static:crtbeginT.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
@@ -76,7 +77,7 @@
`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
Index: gcc/config/i386/freebsd.h
===================================================================
--- gcc/config/i386/freebsd.h (revision 230016)
+++ gcc/config/i386/freebsd.h (working copy)
@@ -59,29 +59,16 @@
#define SUBTARGET_EXTRA_SPECS \
{ "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
-/* Provide a STARTFILE_SPEC appropriate for FreeBSD. Here we add
- the magical crtbegin.o file (see crtstuff.c) which provides part
- of the support for getting C++ file-scope static object constructed
- before entering `main'. */
-
-#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}"
+/* Use the STARTFILE_SPEC from config/freebsd-spec.h. */
-/* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on
- the magical crtend.o file (see crtstuff.c) which provides part of
- the support for getting C++ file-scope static object constructed
- before entering `main', followed by a normal "finalizer" file,
- `crtn.o'. */
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC FBSD_STARTFILE_SPEC
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC \
- "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
+/* Use the ENDFILE_SPEC from config/freebsd-spec.h. */
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC FBSD_ENDFILE_SPEC
+
/* Provide a LINK_SPEC appropriate for FreeBSD. Here we provide support
for the special GCC options -static and -shared, which allow us to
link things in one of these three modes by applying the appropriate
Index: gcc/config/rs6000/freebsd64.h
===================================================================
--- gcc/config/rs6000/freebsd64.h (revision 230016)
+++ gcc/config/rs6000/freebsd64.h (working copy)
@@ -130,7 +130,7 @@
#define LINK_OS_FREEBSD_SPEC "%{m32:%(link_os_freebsd_spec32)}%{!m32:%(link_os_freebsd_spec64)}"
#define ASM_SPEC32 "-a32 \
-%{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} \
+%{mrelocatable} %{mrelocatable-lib} %{fpic|fpie|fPIC|fPIE:-K PIC} \
%{memb} %{!memb: %{msdata=eabi: -memb}} \
%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
%{mcall-freebsd: -mbig} \
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [patch] backport PIE support for FreeBSD to gcc-49
2015-11-09 12:38 [patch] backport PIE support for FreeBSD to gcc-49 Andreas Tobler
@ 2015-11-11 21:22 ` Andreas Tobler
0 siblings, 0 replies; 2+ messages in thread
From: Andreas Tobler @ 2015-11-11 21:22 UTC (permalink / raw)
To: GCC Patches
On 09.11.15 13:38, Andreas Tobler wrote:
> Hi,
>
> any objections that I apply this patch to gcc-4.9?
>
> It is FreeBSD only.
committed as: 230192
Andreas
> 2015-11-09 Andreas Tobler <andreast@gcc.gnu.org>
>
> Backport from mainline
> 2015-05-18 Andreas Tobler <andreast@gcc.gnu.org>
>
> * config/freebsd-spec.h (FBSD_STARTFILE_SPEC): Add the bits to build
> pie executables.
> (FBSD_ENDFILE_SPEC): Likewise.
> * config/i386/freebsd.h (STARTFILE_SPEC): Remove and use the one from
> config/freebsd-spec.h.
> (ENDFILE_SPEC): Likewise.
>
> 2015-11-02 Andreas Tobler <andreast@gcc.gnu.org>
>
> * config/rs6000/freebsd64.h (ASM_SPEC32): Adust spec to handle
> PIE executables.
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-11-11 21:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-09 12:38 [patch] backport PIE support for FreeBSD to gcc-49 Andreas Tobler
2015-11-11 21:22 ` Andreas Tobler
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).