freebsd-spec.h (FBSD_STARTFILE_SPEC): Add the bits to build pie executables.
authorAndreas Tobler <andreast@gcc.gnu.org>
Mon, 18 May 2015 18:37:18 +0000 (20:37 +0200)
committerAndreas Tobler <andreast@gcc.gnu.org>
Mon, 18 May 2015 18:37:18 +0000 (20:37 +0200)
2015-05-18  Andreas Tobler  <andreast@gcc.gnu.org>

gcc:
        * 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.

gcc/testsuite:
* lib/target-supports.exp (check_effective_target_pie): Add *-*-freebsd*
to the family of pie capable targets.

From-SVN: r223308

gcc/ChangeLog
gcc/config/freebsd-spec.h
gcc/config/i386/freebsd.h
gcc/testsuite/ChangeLog
gcc/testsuite/lib/target-supports.exp

index dd2c97fdf257a235bfd504f15dbdf7531ea8c613..c00a8789d451400c9e97ff6e732f478570ce0e30 100644 (file)
@@ -1,3 +1,12 @@
+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-05-18  Uros Bizjak  <ubizjak@gmail.com>
            Richard Henderson  <rth@redhat.com>
 
index e3fa912f07932ee72bde5b51bd6fedbdffe7eae1..9341db789eb09859533cb6e991321671c3d59610 100644 (file)
@@ -66,8 +66,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
   "%{!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 @@ 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
index ff73aeaaa1d997a73e4a4fbf824acd31f6e8ce2a..6ce160ed4095cd486141f7afae233d436a9957d3 100644 (file)
@@ -59,28 +59,15 @@ along with GCC; see the file COPYING3.  If not see
 #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}"
-
-/* 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 ENDFILE_SPEC
-#define ENDFILE_SPEC \
-  "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
+/* Use the STARTFILE_SPEC from config/freebsd-spec.h.  */
+
+#undef  STARTFILE_SPEC
+#define STARTFILE_SPEC FBSD_STARTFILE_SPEC
+
+/* 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
index 8a29d995a4f5a5c742c9c0884cd265aa64fc125b..c4b77b36dbad149668633edebcdc900761b678ba 100644 (file)
@@ -1,3 +1,8 @@
+2015-05-12  Andreas Tobler  <andreast@gcc.gnu.org>
+
+       * lib/target-supports.exp (check_effective_target_pie): Add *-*-freebsd*
+       to the family of pie capable targets.
+
 2015-05-18  Alex Velenko <Alex.Velenko@arm.com>
 
        * gcc.target/arm/bics_1.c : New testcase.
index 3728927dccc8a32b0ab716f93d715bb36443c44c..e3f824a63ae863b4554aeda6d12013c63a8bc6c7 100644 (file)
@@ -954,6 +954,7 @@ proc check_effective_target_shared { } {
 
 proc check_effective_target_pie { } {
     if { [istarget *-*-darwin\[912\]*]
+        || [istarget *-*-freebsd*]
         || [istarget *-*-linux*]
         || [istarget *-*-gnu*] } {
        return 1;