diff mbox

[darwin,committed] fix PR49371

Message ID 52942DBC-5FAC-4D68-BAC6-B257D0D1519C@sandoe-acoustics.co.uk
State New
Headers show

Commit Message

Iain Sandoe June 25, 2011, 11:22 a.m. UTC
I committed the following patch as approved in the PR thread.
cheers
Iain

gcc/
	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.

    do {									\
diff mbox

Patch

Index: gcc/config/darwin.c
===================================================================
--- gcc/config/darwin.c	(revision 175396)
+++ gcc/config/darwin.c	(working copy)
@@ -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: gcc/config/darwin.h
===================================================================
--- gcc/config/darwin.h	(revision 175396)
+++ gcc/config/darwin.h	(working copy)
@@ -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: gcc/config/darwin9.h
===================================================================
--- gcc/config/darwin9.h	(revision 175396)
+++ gcc/config/darwin9.h	(working copy)
@@ -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)		\