* [PATCH] FreeBSD add functionality to build PIE executables.
@ 2015-05-11 20:34 Andreas Tobler
2015-05-17 21:05 ` Andreas Tobler
0 siblings, 1 reply; 4+ messages in thread
From: Andreas Tobler @ 2015-05-11 20:34 UTC (permalink / raw)
To: GCC Patches
[-- Attachment #1: Type: text/plain, Size: 1134 bytes --]
All,
this patch adds the ability to build PIE executables for FreeBSD. The
core is since a longer time in the code base of FreeBSD itself and is
working fine.
This patch makes it available for all FreeBSD targets.
Tested on x86_64-*-freebsd11.0 and armv6/hf-*-freebsd11.0,
i386-*-freebsd11.0 is progress.
In the same turn I removed the STARTFILE/ENDFILE_SPEC from
config/i386/freebsd.h and use the ones from config/freebsd-spec.h.
Here the results before the patch:
https://gcc.gnu.org/ml/gcc-testresults/2015-05/msg01267.html
and with the patch:
https://gcc.gnu.org/ml/gcc-testresults/2015-05/msg01324.html
Is this ok for trunk and for 5.1X?
Thanks,
Andreas
2015-05-11 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-05-11 Andreas Tobler <andreast@gcc.gnu.org>
* lib/target-supports.exp (check_effective_target_pie): Add *-*-freebsd*
to the familiy of pie capable targets.
[-- Attachment #2: fbsd_pie.diff --]
[-- Type: text/plain, Size: 3104 bytes --]
Index: gcc/config/freebsd-spec.h
===================================================================
--- gcc/config/freebsd-spec.h (revision 223017)
+++ 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 223017)
+++ 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/testsuite/lib/target-supports.exp
===================================================================
--- gcc/testsuite/lib/target-supports.exp (revision 223017)
+++ gcc/testsuite/lib/target-supports.exp (working copy)
@@ -954,6 +954,7 @@
proc check_effective_target_pie { } {
if { [istarget *-*-darwin\[912\]*]
+ || [istarget *-*-freebsd*]
|| [istarget *-*-linux*]
|| [istarget *-*-gnu*] } {
return 1;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] FreeBSD add functionality to build PIE executables.
2015-05-11 20:34 [PATCH] FreeBSD add functionality to build PIE executables Andreas Tobler
@ 2015-05-17 21:05 ` Andreas Tobler
2015-05-18 18:00 ` Jeff Law
0 siblings, 1 reply; 4+ messages in thread
From: Andreas Tobler @ 2015-05-17 21:05 UTC (permalink / raw)
To: GCC Patches
Ping?!
Thanks,
Andreas
On 11.05.15 22:34, Andreas Tobler wrote:
> All,
>
> this patch adds the ability to build PIE executables for FreeBSD. The
> core is since a longer time in the code base of FreeBSD itself and is
> working fine.
>
> This patch makes it available for all FreeBSD targets.
> Tested on x86_64-*-freebsd11.0 and armv6/hf-*-freebsd11.0,
> i386-*-freebsd11.0 is progress.
>
> In the same turn I removed the STARTFILE/ENDFILE_SPEC from
> config/i386/freebsd.h and use the ones from config/freebsd-spec.h.
>
> Here the results before the patch:
>
> https://gcc.gnu.org/ml/gcc-testresults/2015-05/msg01267.html
>
> and with the patch:
>
> https://gcc.gnu.org/ml/gcc-testresults/2015-05/msg01324.html
>
> Is this ok for trunk and for 5.1X?
>
> Thanks,
> Andreas
>
> 2015-05-11 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-05-11 Andreas Tobler <andreast@gcc.gnu.org>
>
> * lib/target-supports.exp (check_effective_target_pie): Add *-*-freebsd*
> to the familiy of pie capable targets.
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] FreeBSD add functionality to build PIE executables.
2015-05-17 21:05 ` Andreas Tobler
@ 2015-05-18 18:00 ` Jeff Law
2015-05-18 20:40 ` Andreas Tobler
0 siblings, 1 reply; 4+ messages in thread
From: Jeff Law @ 2015-05-18 18:00 UTC (permalink / raw)
To: Andreas Tobler, GCC Patches
On 05/17/2015 02:42 PM, Andreas Tobler wrote:
> Ping?!
>
> Thanks,
> Andreas
>
> On 11.05.15 22:34, Andreas Tobler wrote:
>> All,
>>
>> this patch adds the ability to build PIE executables for FreeBSD. The
>> core is since a longer time in the code base of FreeBSD itself and is
>> working fine.
>>
>> This patch makes it available for all FreeBSD targets.
>> Tested on x86_64-*-freebsd11.0 and armv6/hf-*-freebsd11.0,
>> i386-*-freebsd11.0 is progress.
>>
>> In the same turn I removed the STARTFILE/ENDFILE_SPEC from
>> config/i386/freebsd.h and use the ones from config/freebsd-spec.h.
>>
>> Here the results before the patch:
>>
>> https://gcc.gnu.org/ml/gcc-testresults/2015-05/msg01267.html
>>
>> and with the patch:
>>
>> https://gcc.gnu.org/ml/gcc-testresults/2015-05/msg01324.html
>>
>> Is this ok for trunk and for 5.1X?
>>
>> Thanks,
>> Andreas
>>
>> 2015-05-11 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-05-11 Andreas Tobler <andreast@gcc.gnu.org>
>>
>> * lib/target-supports.exp (check_effective_target_pie): Add
>> *-*-freebsd*
>> to the familiy of pie capable targets.
OK for the trunk, please install. Release managers have final say for
the release branches.
jeff
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] FreeBSD add functionality to build PIE executables.
2015-05-18 18:00 ` Jeff Law
@ 2015-05-18 20:40 ` Andreas Tobler
0 siblings, 0 replies; 4+ messages in thread
From: Andreas Tobler @ 2015-05-18 20:40 UTC (permalink / raw)
To: Jeff Law, GCC Patches
On 18.05.15 19:36, Jeff Law wrote:
> On 05/17/2015 02:42 PM, Andreas Tobler wrote:
>> Ping?!
>>
>> Thanks,
>> Andreas
>>
>> On 11.05.15 22:34, Andreas Tobler wrote:
>>> All,
>>>
>>> this patch adds the ability to build PIE executables for FreeBSD. The
>>> core is since a longer time in the code base of FreeBSD itself and is
>>> working fine.
>>>
>>> This patch makes it available for all FreeBSD targets.
>>> Tested on x86_64-*-freebsd11.0 and armv6/hf-*-freebsd11.0,
>>> i386-*-freebsd11.0 is progress.
>>>
>>> In the same turn I removed the STARTFILE/ENDFILE_SPEC from
>>> config/i386/freebsd.h and use the ones from config/freebsd-spec.h.
>>>
>>> Here the results before the patch:
>>>
>>> https://gcc.gnu.org/ml/gcc-testresults/2015-05/msg01267.html
>>>
>>> and with the patch:
>>>
>>> https://gcc.gnu.org/ml/gcc-testresults/2015-05/msg01324.html
>>>
>>> Is this ok for trunk and for 5.1X?
>>>
>>> Thanks,
>>> Andreas
>>>
>>> 2015-05-11 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-05-11 Andreas Tobler <andreast@gcc.gnu.org>
>>>
>>> * lib/target-supports.exp (check_effective_target_pie): Add
>>> *-*-freebsd*
>>> to the familiy of pie capable targets.
> OK for the trunk, please install. Release managers have final say for
> the release branches.
Done.
Thanks for the review.
Andreas
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-05-18 20:33 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-11 20:34 [PATCH] FreeBSD add functionality to build PIE executables Andreas Tobler
2015-05-17 21:05 ` Andreas Tobler
2015-05-18 18:00 ` Jeff Law
2015-05-18 20:40 ` 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).