diff options
author | Iain Sandoe <iain@sandoe.co.uk> | 2021-12-06 13:17:10 +0000 |
---|---|---|
committer | Iain Sandoe <iain@sandoe.co.uk> | 2021-12-08 19:47:17 +0000 |
commit | 1c1563fb8ff227590eb5ab0fc3d22f3b0a57c241 (patch) | |
tree | e755d46bd85d2716f426e83299dd8ba1b5038c40 /gcc | |
parent | dda85bc274e1148a0c576a8cb085bffadd0e54ab (diff) | |
download | gcc-1c1563fb8ff227590eb5ab0fc3d22f3b0a57c241.zip gcc-1c1563fb8ff227590eb5ab0fc3d22f3b0a57c241.tar.gz gcc-1c1563fb8ff227590eb5ab0fc3d22f3b0a57c241.tar.bz2 |
Darwin: Amend pie options when linking mdynamic-no-pic.
On i686 Darwin from macOS 10.7 onwards the default is to
link executables as PIE, which conflicts with code generated
using mdynamic-no-pic. Rather than warn about this and then
get the user to add -Wl,-no_pie, we can inject this in the
link specs.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
gcc/ChangeLog:
* config/darwin.h (DARWIN_PIE_SPEC): Add -no_pie when
linking mdynamic-no-pic code on macOS > 10.7.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/darwin.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index 9895e7f..0ce1320 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -288,13 +288,17 @@ extern GTY(()) int darwin_ms_struct; #define DARWIN_RDYNAMIC "%{rdynamic:%nrdynamic is not supported}" #endif -/* FIXME: we should check that the linker supports the -pie and -no_pie. +/* Code built with mdynamic-no-pic does not support PIE/PIC, so we disallow + these combinations; we also ensure that the no_pie option is passed to + ld64 on system versions that default to PIE when mdynamic-no-pic is given. + FIXME: we should check that the linker supports the -pie and -no_pie. options. */ #define DARWIN_PIE_SPEC \ "%{pie|fpie|fPIE:\ %{mdynamic-no-pic: \ %n'-mdynamic-no-pic' overrides '-pie', '-fpie' or '-fPIE'; \ - :%:version-compare(>= 10.5 mmacosx-version-min= -pie) }} " + :%:version-compare(>= 10.5 mmacosx-version-min= -pie) }; \ + mdynamic-no-pic:%:version-compare(>= 10.7 mmacosx-version-min= -no_pie) } " #define DARWIN_NOPIE_SPEC \ "%{no-pie|fno-pie|fno-PIE: \ |