diff options
author | Moritz Angermann <moritz.angermann@gmail.com> | 2020-10-27 10:52:25 +0800 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-11-06 03:46:44 -0500 |
commit | 2cb879092c0c946f5313216fc9ce4b93954c2f74 (patch) | |
tree | dfe782a367219dbf96172b451fa3cfa7c7c1388c /compiler/GHC | |
parent | c85f4928d4dbb2eb2cf906d08bfe7620d6f04ca5 (diff) | |
download | haskell-2cb879092c0c946f5313216fc9ce4b93954c2f74.tar.gz |
[AArch64] Aarch64 Always PIC
Diffstat (limited to 'compiler/GHC')
-rw-r--r-- | compiler/GHC/Driver/Session.hs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/compiler/GHC/Driver/Session.hs b/compiler/GHC/Driver/Session.hs index 9529b0dea8..7db08595d7 100644 --- a/compiler/GHC/Driver/Session.hs +++ b/compiler/GHC/Driver/Session.hs @@ -3830,8 +3830,21 @@ validHoleFitsImpliedGFlags default_PIC :: Platform -> [GeneralFlag] default_PIC platform = case (platformOS platform, platformArch platform) of - (OSDarwin, ArchX86_64) -> [Opt_PIC] - (OSOpenBSD, ArchX86_64) -> [Opt_PIC] -- Due to PIE support in + -- Darwin always requires PIC. Especially on more recent macOS releases + -- there will be a 4GB __ZEROPAGE that prevents us from using 32bit addresses + -- while we could work around this on x86_64 (like WINE does), we won't be + -- able on aarch64, where this is enforced. + (OSDarwin, ArchX86_64) -> [Opt_PIC] + -- For AArch64, we need to always have PIC enabled. The relocation model + -- on AArch64 does not permit arbitrary relocations. Under ASLR, we can't + -- control much how far apart symbols are in memory for our in-memory static + -- linker; and thus need to ensure we get sufficiently capable relocations. + -- This requires PIC on AArch64, and ExternalDynamicRefs on Linux as on top + -- of that. Subsequently we expect all code on aarch64/linux (and macOS) to + -- be built with -fPIC. + (OSDarwin, ArchARM64) -> [Opt_PIC] + (OSLinux, ArchARM64) -> [Opt_PIC, Opt_ExternalDynamicRefs] + (OSOpenBSD, ArchX86_64) -> [Opt_PIC] -- Due to PIE support in -- OpenBSD since 5.3 release -- (1 May 2013) we need to -- always generate PIC. See |