diff options
author | Demi Obenour <demiobenour@gmail.com> | 2017-01-10 13:37:47 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2017-01-10 13:37:48 -0500 |
commit | 58e68b37e74fd226ef6be1d59785cb899e01dbd5 (patch) | |
tree | 33a876c7219ac6513fdae1f9bc7a16165bda2b35 /compiler | |
parent | 8a76d32e4fbdafe787a0f5b2a492c0d0ea1ed980 (diff) | |
download | haskell-58e68b37e74fd226ef6be1d59785cb899e01dbd5.tar.gz |
Enable subsections via symbols on iOS
Test Plan: GHC CI
Reviewers: austin, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D2915
GHC Trac Issues: #11040, #13049
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/main/DriverPipeline.hs | 2 | ||||
-rw-r--r-- | compiler/main/HscMain.hs | 4 | ||||
-rw-r--r-- | compiler/utils/Platform.hs | 6 |
3 files changed, 9 insertions, 3 deletions
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs index a62233d8a8..a54e05c1fb 100644 --- a/compiler/main/DriverPipeline.hs +++ b/compiler/main/DriverPipeline.hs @@ -1794,7 +1794,7 @@ linkBinary' staticLink dflags o_files dep_packages = do in ["-L" ++ l] ++ ["-Wl,-rpath", "-Wl," ++ libpath] | otherwise = ["-L" ++ l] - let dead_strip = if osMachOTarget (platformOS platform) + let dead_strip = if osSubsectionsViaSymbols (platformOS platform) then ["-Wl,-dead_strip"] else [] let lib_paths = libraryPaths dflags diff --git a/compiler/main/HscMain.hs b/compiler/main/HscMain.hs index 12e8a1d2f7..2fc7341c63 100644 --- a/compiler/main/HscMain.hs +++ b/compiler/main/HscMain.hs @@ -137,7 +137,7 @@ import Maybes import DynFlags import ErrUtils -import Platform ( platformOS, OS(OSDarwin) ) +import Platform ( platformOS, osSubsectionsViaSymbols ) import Outputable import NameEnv @@ -1394,7 +1394,7 @@ doCodeGen hsc_env this_mod data_tycons let pipeline_stream | gopt Opt_SplitObjs dflags || gopt Opt_SplitSections dflags || - platformOS (targetPlatform dflags) == OSDarwin + osSubsectionsViaSymbols (platformOS (targetPlatform dflags)) = {-# SCC "cmmPipeline" #-} let run_pipeline us cmmgroup = do let (topSRT', us') = initUs us emptySRT diff --git a/compiler/utils/Platform.hs b/compiler/utils/Platform.hs index 600ed8099d..86c70a9789 100644 --- a/compiler/utils/Platform.hs +++ b/compiler/utils/Platform.hs @@ -14,6 +14,7 @@ module Platform ( isARM, osElfTarget, osMachOTarget, + osSubsectionsViaSymbols, platformUsesFrameworks, platformBinariesAreStaticLibs, ) @@ -161,6 +162,11 @@ osBinariesAreStaticLibs :: OS -> Bool osBinariesAreStaticLibs OSiOS = True osBinariesAreStaticLibs _ = False +osSubsectionsViaSymbols :: OS -> Bool +osSubsectionsViaSymbols OSDarwin = True +osSubsectionsViaSymbols OSiOS = True +osSubsectionsViaSymbols _ = False + platformBinariesAreStaticLibs :: Platform -> Bool platformBinariesAreStaticLibs = osBinariesAreStaticLibs . platformOS |