summaryrefslogtreecommitdiff
path: root/compiler/main
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2016-11-10 23:48:27 -0500
committerBen Gamari <ben@smart-cactus.org>2016-11-10 23:48:39 -0500
commit60bb9d1ccaa27fe6490ece215deb38ad288a9889 (patch)
treeb29e0b32489ab5fff0091fc62c6499c0d91530b2 /compiler/main
parent03e8d26fe0a8f7981a76550118f3c584cad76c47 (diff)
downloadhaskell-60bb9d1ccaa27fe6490ece215deb38ad288a9889.tar.gz
Revert "Pass -no-pie to GCC"
This reverts commit bae4a55b1fb403f610b4b55a1b6fb3f03e9c2026. This will be superceded by D2693.
Diffstat (limited to 'compiler/main')
-rw-r--r--compiler/main/DriverPipeline.hs9
-rw-r--r--compiler/main/SysTools.hs13
2 files changed, 0 insertions, 22 deletions
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs
index 23badbd885..b578612ac4 100644
--- a/compiler/main/DriverPipeline.hs
+++ b/compiler/main/DriverPipeline.hs
@@ -1859,11 +1859,6 @@ linkBinary' staticLink dflags o_files dep_packages = do
++ map SysTools.Option (
[]
-#if GCC_SUPPORTS_NO_PIE
- -- See Note [No PIE eating when linking]
- ++ ["-no-pie"]
-#endif
-
-- Permit the linker to auto link _symbol to _imp_symbol.
-- This lets us link against DLLs without needing an "import library".
++ (if platformOS platform == OSMinGW32
@@ -2162,10 +2157,6 @@ joinObjectFiles dflags o_files output_fn = do
SysTools.Option "-nostdlib",
SysTools.Option "-Wl,-r"
]
-#if GCC_SUPPORTS_NO_PIE
- -- See Note [No PIE eating while linking] in SysTools
- ++ [SysTools.Option "-no-pie"]
-#endif
++ (if any (cc ==) [Clang, AppleClang, AppleClang51]
then []
else [SysTools.Option "-nodefaultlibs"])
diff --git a/compiler/main/SysTools.hs b/compiler/main/SysTools.hs
index 82a6383dd5..5fb92c8583 100644
--- a/compiler/main/SysTools.hs
+++ b/compiler/main/SysTools.hs
@@ -1546,15 +1546,6 @@ linesPlatform xs =
#endif
-{-
-Note [No PIE eating while linking]
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-As of 2016 some Linux distributions (e.g. Debian) have started enabling -pie by
-default in their gcc builds. This is incompatible with -r as it implies that we
-are producing an executable. Consequently, we must manually pass -no-pie to gcc
-when joining object files or linking dynamic libraries. See #12759.
--}
-
linkDynLib :: DynFlags -> [String] -> [InstalledUnitId] -> IO ()
linkDynLib dflags0 o_files dep_packages
= do
@@ -1720,10 +1711,6 @@ linkDynLib dflags0 o_files dep_packages
++ [ Option "-o"
, FileOption "" output_fn
]
-#if GCC_SUPPORTS_NO_PIE
- -- See Note [No PIE eating when linking]
- ++ [ Option "-no-pie" ]
-#endif
++ map Option o_files
++ [ Option "-shared" ]
++ map Option bsymbolicFlag