Enable subsections via symbols on iOS
authorDemi Obenour <demiobenour@gmail.com>
Tue, 10 Jan 2017 18:37:47 +0000 (13:37 -0500)
committerBen Gamari <ben@smart-cactus.org>
Tue, 10 Jan 2017 18:37:48 +0000 (13:37 -0500)
Test Plan: GHC CI

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2915

GHC Trac Issues: #11040, #13049

compiler/main/DriverPipeline.hs
compiler/main/HscMain.hs
compiler/utils/Platform.hs

index a62233d..a54e05c 100644 (file)
@@ -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
index 12e8a1d..2fc7341 100644 (file)
@@ -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
index 600ed80..86c70a9 100644 (file)
@@ -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