summaryrefslogtreecommitdiff
path: root/compiler/main
diff options
context:
space:
mode:
authorManuel M T Chakravarty <chak@cse.unsw.edu.au>2011-07-27 23:05:01 +1000
committerManuel M T Chakravarty <chak@cse.unsw.edu.au>2011-07-27 23:09:10 +1000
commit30ccc9f39dd2cf1ad14e6116778aa1fd94526c19 (patch)
treefc10ae8aa1fd4c6cdd1183227a550cee5c166920 /compiler/main
parentadc3fb884bc53d229faf9f599fb3f890cadeccb1 (diff)
downloadhaskell-30ccc9f39dd2cf1ad14e6116778aa1fd94526c19.tar.gz
On OS X x86_64, use "-Wl,-no_pie" and "-Wl,-no_compact_unwind" to avoid linker warnings
- "-Wl,-no_pie" can be removed once GMP gets updated
Diffstat (limited to 'compiler/main')
-rw-r--r--compiler/main/DriverPipeline.hs11
1 files changed, 11 insertions, 0 deletions
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs
index b328c3fb4d..b1f50acfb8 100644
--- a/compiler/main/DriverPipeline.hs
+++ b/compiler/main/DriverPipeline.hs
@@ -1666,6 +1666,17 @@ linkBinary dflags o_files dep_packages = do
then ["-Wl,--enable-auto-import"]
else [])
+ -- '-no_pie' - On OS X, the linker otherwise complains that it cannot build
+ -- position independent code due to some offensive code in GMP.
+ -- '-no_compact_unwind'
+ -- - C++/Objective-C exceptions cannot use optimised stack
+ -- unwinding code (the optimised form is the default in Xcode 4 on
+ -- x86_64).
+ ++ (if platformOS (targetPlatform dflags) == OSDarwin &&
+ platformArch (targetPlatform dflags) == ArchX86_64
+ then ["-Wl,-no_pie", "-Wl,-no_compact_unwind"]
+ else [])
+
++ o_files
++ extra_ld_inputs
++ lib_path_opts