From 0e9197f57271bdf12e1e55ccdd025b7c8b415c0d Mon Sep 17 00:00:00 2001 From: Iain Sandoe Date: Sat, 25 Jun 2011 11:17:35 +0000 Subject: [PATCH] re PR driver/49371 (xgcc: error: unrecognized option '-pie' on *-apple-darwin*) 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 | 8 ++++++++ gcc/config/darwin.c | 4 +++- gcc/config/darwin.h | 4 +++- 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 + + 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   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 { \ -- 2.30.2