re PR driver/49371 (xgcc: error: unrecognized option '-pie' on *-apple-darwin*)
authorIain Sandoe <iains@gcc.gnu.org>
Sat, 25 Jun 2011 11:17:35 +0000 (11:17 +0000)
committerIain Sandoe <iains@gcc.gnu.org>
Sat, 25 Jun 2011 11:17:35 +0000 (11:17 +0000)
PR driver/49371
* config/darwin.c (darwin_override_options): Improve warning when
mdynamic-no-pic is given together with fPIC/fpic, also warn when it
is given with fpie/fPIE.
* config/darwin.h (PIE_SPEC): New, (LINK_SPEC): Use PIE_SPEC.
* config/darwin9.h (PIE_SPEC): New.

From-SVN: r175397

gcc/ChangeLog
gcc/config/darwin.c
gcc/config/darwin.h
gcc/config/darwin9.h

index 71179bf2e112a0a0fe4eb0e1477e8fbfa9ed360d..861cab633a77c9c8bacc1cc31af7f9a2e6be5e5a 100644 (file)
@@ -1,3 +1,11 @@
+2011-06-25  Iain Sandoe  <iains@gcc.gnu.org>
+
+       PR driver/49371
+       * config/darwin.c (darwin_override_options): Improve warning when
+       mdynamic-no-pic is given together with fPIC/fpic, also warn when it
+       is given with fpie/fPIE.
+       * config/darwin.h (PIE_SPEC): New, (LINK_SPEC): Use PIE_SPEC.
+       * config/darwin9.h (PIE_SPEC): New.
 
 2011-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
 
index 5e358b13f09de675bdc7ec62d013025e7c3a8453..b47e806af0629a9530235be92ab9869b16fc907a 100644 (file)
@@ -2932,7 +2932,9 @@ darwin_override_options (void)
   if (MACHO_DYNAMIC_NO_PIC_P)
     {
       if (flag_pic)
-       warning (0, "-mdynamic-no-pic overrides -fpic or -fPIC");
+       warning_at (UNKNOWN_LOCATION, 0,
+                "%<-mdynamic-no-pic%> overrides %<-fpic%>, %<-fPIC%>,"
+                " %<-fpie%> or %<-fPIE%>");
       flag_pic = 0;
     }
   else if (flag_pic == 1)
index 41c0d744afb033ed0a629aea572374eac22bc3d8..762a460476b9f49b1c85a7fadf60a57b72a1a170 100644 (file)
@@ -226,6 +226,8 @@ extern GTY(()) int darwin_ms_struct;
 #define LINK_SYSROOT_SPEC "%{isysroot*:-syslibroot %*}"
 #endif
 
+#define PIE_SPEC "%{fpie|pie|fPIE:}"
+
 /* Please keep the random linker options in alphabetical order (modulo
    'Z' and 'no' prefixes). Note that options taking arguments may appear
    multiple times on a command line with different arguments each time,
@@ -290,7 +292,7 @@ extern GTY(()) int darwin_ms_struct;
      %:version-compare(< 10.5 mmacosx-version-min= -multiply_defined) \
      %:version-compare(< 10.5 mmacosx-version-min= suppress)}} \
    %{Zmultiplydefinedunused*:-multiply_defined_unused %*} \
-   %{fpie:-pie} \
+   " PIE_SPEC " \
    %{prebind} %{noprebind} %{nofixprebinding} %{prebind_all_twolevel_modules} \
    %{read_only_relocs} \
    %{sectcreate*} %{sectorder*} %{seg1addr*} %{segprot*} \
index bb62dd4ca9f515dce2b46591c29e8d03568918db..2e835c39e2df27f2646edb13da041416765c0921 100644 (file)
@@ -35,6 +35,12 @@ along with GCC; see the file COPYING3.  If not see
 /* Tell collect2 to run dsymutil for us as necessary.  */
 #define COLLECT_RUN_DSYMUTIL 1
 
+#undef PIE_SPEC
+#define PIE_SPEC \
+  "%{fpie|pie|fPIE: \
+     %{mdynamic-no-pic: %n'-mdynamic-no-pic' overrides '-pie', '-fpie' or '-fPIE'; \
+      :-pie}}"
+
 #undef  ASM_OUTPUT_ALIGNED_COMMON
 #define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)             \
   do {                                                                 \