summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDemi Obenour <demiobenour@gmail.com>2017-01-10 13:37:47 -0500
committerBen Gamari <ben@smart-cactus.org>2017-01-10 13:37:48 -0500
commit58e68b37e74fd226ef6be1d59785cb899e01dbd5 (patch)
tree33a876c7219ac6513fdae1f9bc7a16165bda2b35
parent8a76d32e4fbdafe787a0f5b2a492c0d0ea1ed980 (diff)
downloadhaskell-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
-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