summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authoriains <iains@138bc75d-0d04-0410-961f-82ee72b054a4>2011-06-25 11:17:35 +0000
committeriains <iains@138bc75d-0d04-0410-961f-82ee72b054a4>2011-06-25 11:17:35 +0000
commitb7d1dec3acf1e3f80364bdbcae75c478aa4b35b2 (patch)
tree8fad57787ab5621d328ad41358f3da858a97b716 /gcc
parentc495ccca83b5ba3e05f5545950ede67000286a93 (diff)
downloadgcc-b7d1dec3acf1e3f80364bdbcae75c478aa4b35b2.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175397 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/darwin.c4
-rw-r--r--gcc/config/darwin.h4
-rw-r--r--gcc/config/darwin9.h6
4 files changed, 20 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 71179bf2e11..861cab633a7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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>
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 5e358b13f09..b47e806af06 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -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)
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 41c0d744afb..762a460476b 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -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*} \
diff --git a/gcc/config/darwin9.h b/gcc/config/darwin9.h
index bb62dd4ca9f..2e835c39e2d 100644
--- a/gcc/config/darwin9.h
+++ b/gcc/config/darwin9.h
@@ -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 { \