diff options
author | iains <iains@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-06-25 11:17:35 +0000 |
---|---|---|
committer | iains <iains@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-06-25 11:17:35 +0000 |
commit | b7d1dec3acf1e3f80364bdbcae75c478aa4b35b2 (patch) | |
tree | 8fad57787ab5621d328ad41358f3da858a97b716 /gcc | |
parent | c495ccca83b5ba3e05f5545950ede67000286a93 (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/darwin.c | 4 | ||||
-rw-r--r-- | gcc/config/darwin.h | 4 | ||||
-rw-r--r-- | gcc/config/darwin9.h | 6 |
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 { \ |