summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/main/DriverPipeline.hs6
-rw-r--r--compiler/main/DynFlags.hs1
-rw-r--r--compiler/main/SysTools.lhs2
3 files changed, 9 insertions, 0 deletions
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs
index fdae0fa20e..bdc2e8e812 100644
--- a/compiler/main/DriverPipeline.hs
+++ b/compiler/main/DriverPipeline.hs
@@ -2134,6 +2134,12 @@ joinObjectFiles dflags o_files output_fn = do
script <- newTempName dflags "ldscript"
writeFile script $ "INPUT(" ++ unwords o_files ++ ")"
ld_r [SysTools.FileOption "" script]
+ else if sLdSupportsFilelist mySettings
+ then do
+ filelist <- newTempName dflags "filelist"
+ writeFile filelist $ unlines o_files
+ ld_r [SysTools.Option "-Wl,-filelist",
+ SysTools.FileOption "-Wl," filelist]
else do
ld_r (map (SysTools.FileOption "") o_files)
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
index dbec98a21b..17484e0ddd 100644
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -758,6 +758,7 @@ data Settings = Settings {
sSystemPackageConfig :: FilePath,
sLdSupportsCompactUnwind :: Bool,
sLdSupportsBuildId :: Bool,
+ sLdSupportsFilelist :: Bool,
sLdIsGnuLd :: Bool,
-- commands for particular phases
sPgm_L :: String,
diff --git a/compiler/main/SysTools.lhs b/compiler/main/SysTools.lhs
index 79af4f6673..bacd53e937 100644
--- a/compiler/main/SysTools.lhs
+++ b/compiler/main/SysTools.lhs
@@ -243,6 +243,7 @@ initSysTools mbMinusB
++ tntc_gcc_args)
ldSupportsCompactUnwind <- getBooleanSetting "ld supports compact unwind"
ldSupportsBuildId <- getBooleanSetting "ld supports build-id"
+ ldSupportsFilelist <- getBooleanSetting "ld supports filelist"
ldIsGnuLd <- getBooleanSetting "ld is GNU ld"
perl_path <- getSetting "perl command"
@@ -315,6 +316,7 @@ initSysTools mbMinusB
sSystemPackageConfig = pkgconfig_path,
sLdSupportsCompactUnwind = ldSupportsCompactUnwind,
sLdSupportsBuildId = ldSupportsBuildId,
+ sLdSupportsFilelist = ldSupportsFilelist,
sLdIsGnuLd = ldIsGnuLd,
sPgm_L = unlit_path,
sPgm_P = (cpp_prog, cpp_args),