[Darwin] Revise pie,no-pie and rdynamic driver specs.
authorIain Sandoe <iain@sandoe.co.uk>
Wed, 3 Jul 2019 18:43:55 +0000 (18:43 +0000)
committerIain Sandoe <iains@gcc.gnu.org>
Wed, 3 Jul 2019 18:43:55 +0000 (18:43 +0000)
Processing these early and pushing the corresponding Xlinker lines
has the effect that the driver then supposes that there are linker
inputs, and causes a link line to be created when it is not needed

The solution is to place these drive specs into the link spec and
claim them at the end of that.

2019-07-03  Iain Sandoe  <iain@sandoe.co.uk>

* config/darwin.h (DRIVER_SELF_SPECS): Remove the linker cases.
(RDYNAMIC): Rename to, DARWIN_RDYNAMIC.
(DARWIN_PIE_SPEC, DARWIN_NOPIE_SPEC): Adjust to remove the Xlinker
clauses.
(LINK_COMMAND_SPEC_A): Add DARWIN_RDYNAMIC, DARWIN_PIE_SPEC and
DARWIN_NOPIE_SPEC.

From-SVN: r273017

gcc/ChangeLog
gcc/config/darwin.h

index f1794c89043f6bb49556c64c327532aa6e0af28e..d22753db1ec97bd89385e33ea9041b7ccbc7bfbd 100644 (file)
@@ -1,3 +1,12 @@
+2019-07-03  Iain Sandoe  <iain@sandoe.co.uk>
+
+       * config/darwin.h (DRIVER_SELF_SPECS): Remove the linker cases.
+       (RDYNAMIC): Rename to, DARWIN_RDYNAMIC.
+       (DARWIN_PIE_SPEC, DARWIN_NOPIE_SPEC): Adjust to remove the Xlinker
+       clauses.
+       (LINK_COMMAND_SPEC_A): Add DARWIN_RDYNAMIC, DARWIN_PIE_SPEC and
+       DARWIN_NOPIE_SPEC.
+
 2019-07-03  Iain Sandoe  <iain@sandoe.co.uk>
 
        * config/darwin.h (REAL_LIBGCC_SPEC): Adjust for earlier Darwin.
index 72215cea9c3bdb9890383d245b3fb1452fcce2af..e17bc64af156bcf80967760fa672b568832c1e1f 100644 (file)
@@ -124,30 +124,25 @@ extern GTY(()) int darwin_ms_struct;
   "%{fapple-kext|mkernel:-static}",                            \
   "%{shared:-Zdynamiclib} %<shared",                            \
   "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} \
-     %<gsplit-dwarf",                                          \
-  DARWIN_PIE_SPEC,                                             \
-  DARWIN_NOPIE_SPEC,                                           \
-  RDYNAMIC
+     %<gsplit-dwarf"
 
 #if LD64_HAS_EXPORT_DYNAMIC
-#define RDYNAMIC "%{rdynamic:-Xlinker -export_dynamic} %<rdynamic"
+#define DARWIN_RDYNAMIC "%{rdynamic:-export_dynamic}"
 #else
-#define RDYNAMIC "%{rdynamic:%nrdynamic is not supported} %<rdynamic"
+#define DARWIN_RDYNAMIC "%{rdynamic:%nrdynamic is not supported}"
 #endif
 
 /* FIXME: we should check that the linker supports the -pie and -no_pie.
    options.  */
 #define DARWIN_PIE_SPEC \
-"%{pie|fpie|fPIE: \
+"%{pie|fpie|fPIE:\
    %{mdynamic-no-pic: \
-       %n'-mdynamic-no-pic' overrides '-pie', '-fpie' or '-fPIE'; \
-     : %:version-compare(>= 10.5 mmacosx-version-min= -Xlinker) \
-       %:version-compare(>= 10.5 mmacosx-version-min= -pie) }} %<pie "
+     %n'-mdynamic-no-pic' overrides '-pie', '-fpie' or '-fPIE'; \
+     :%:version-compare(>= 10.5 mmacosx-version-min= -pie) }} "
 
 #define DARWIN_NOPIE_SPEC \
 "%{no-pie|fno-pie|fno-PIE: \
-   %:version-compare(>= 10.7 mmacosx-version-min= -Xlinker ) \
-   %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) } %<no-pie "
+   %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) }"
 
 #define DARWIN_CC1_SPEC                                                        \
   "%{findirect-virtual-calls: -fapple-kext} %<findirect-virtual-calls " \
@@ -227,8 +222,11 @@ extern GTY(()) int darwin_ms_struct;
       %(link_gcc_c_sequence) \
     }}}\
     %{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*} %{F*} "\
+    DARWIN_PIE_SPEC \
+    DARWIN_NOPIE_SPEC \
+    DARWIN_RDYNAMIC \
     DARWIN_NOCOMPACT_UNWIND \
-    "}}}}}}}"
+    "}}}}}}} %<pie %<no-pie %<rdynamic "
 
 #define DSYMUTIL "\ndsymutil"