diff options
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 |