summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/main/DriverPipeline.hs2
-rw-r--r--compiler/main/HscMain.hs4
-rw-r--r--compiler/utils/Platform.hs6
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