summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorGabriella Gonzalez <gabriella@mercury.com>2023-02-01 13:44:44 -0800
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-03-06 17:06:50 -0500
commit5ed77deb1b49bff7bae9660487ee4a40a496476d (patch)
treeff53bb9ff50c50657fc9513a0bb7184f0f3a1403 /compiler
parent232cfc241c14ba6a49d9552a90a94857255e455d (diff)
downloadhaskell-5ed77deb1b49bff7bae9660487ee4a40a496476d.tar.gz
Enable response files for linker if supported
Diffstat (limited to 'compiler')
-rw-r--r--compiler/GHC/Settings.hs4
-rw-r--r--compiler/GHC/Settings/IO.hs2
-rw-r--r--compiler/GHC/SysTools/Tasks.hs5
3 files changed, 7 insertions, 4 deletions
diff --git a/compiler/GHC/Settings.hs b/compiler/GHC/Settings.hs
index 291c77b860..c2b34b0c10 100644
--- a/compiler/GHC/Settings.hs
+++ b/compiler/GHC/Settings.hs
@@ -19,6 +19,7 @@ module GHC.Settings
, sGlobalPackageDatabasePath
, sLdSupportsCompactUnwind
, sLdSupportsFilelist
+ , sLdSupportsResponseFiles
, sLdIsGnuLd
, sGccSupportsNoPie
, sUseInplaceMinGW
@@ -87,6 +88,7 @@ data Settings = Settings
data ToolSettings = ToolSettings
{ toolSettings_ldSupportsCompactUnwind :: Bool
, toolSettings_ldSupportsFilelist :: Bool
+ , toolSettings_ldSupportsResponseFiles :: Bool
, toolSettings_ldIsGnuLd :: Bool
, toolSettings_ccSupportsNoPie :: Bool
, toolSettings_useInplaceMinGW :: Bool
@@ -189,6 +191,8 @@ sLdSupportsCompactUnwind :: Settings -> Bool
sLdSupportsCompactUnwind = toolSettings_ldSupportsCompactUnwind . sToolSettings
sLdSupportsFilelist :: Settings -> Bool
sLdSupportsFilelist = toolSettings_ldSupportsFilelist . sToolSettings
+sLdSupportsResponseFiles :: Settings -> Bool
+sLdSupportsResponseFiles = toolSettings_ldSupportsResponseFiles . sToolSettings
sLdIsGnuLd :: Settings -> Bool
sLdIsGnuLd = toolSettings_ldIsGnuLd . sToolSettings
sGccSupportsNoPie :: Settings -> Bool
diff --git a/compiler/GHC/Settings/IO.hs b/compiler/GHC/Settings/IO.hs
index 06952774fd..31c3164bc1 100644
--- a/compiler/GHC/Settings/IO.hs
+++ b/compiler/GHC/Settings/IO.hs
@@ -95,6 +95,7 @@ initSettings top_dir = do
cxx_args = words cxx_args_str
ldSupportsCompactUnwind <- getBooleanSetting "ld supports compact unwind"
ldSupportsFilelist <- getBooleanSetting "ld supports filelist"
+ ldSupportsResponseFiles <- getBooleanSetting "ld supports response files"
ldIsGnuLd <- getBooleanSetting "ld is GNU ld"
arSupportsDashL <- getBooleanSetting "ar supports -L"
@@ -163,6 +164,7 @@ initSettings top_dir = do
, sToolSettings = ToolSettings
{ toolSettings_ldSupportsCompactUnwind = ldSupportsCompactUnwind
, toolSettings_ldSupportsFilelist = ldSupportsFilelist
+ , toolSettings_ldSupportsResponseFiles = ldSupportsResponseFiles
, toolSettings_ldIsGnuLd = ldIsGnuLd
, toolSettings_ccSupportsNoPie = gccSupportsNoPie
, toolSettings_useInplaceMinGW = useInplaceMinGW
diff --git a/compiler/GHC/SysTools/Tasks.hs b/compiler/GHC/SysTools/Tasks.hs
index 66f0346886..463cf39145 100644
--- a/compiler/GHC/SysTools/Tasks.hs
+++ b/compiler/GHC/SysTools/Tasks.hs
@@ -29,7 +29,6 @@ import GHC.Utils.Outputable
import GHC.Utils.Misc
import GHC.Utils.Logger
import GHC.Utils.TmpFs
-import GHC.Utils.Constants (isWindowsHost)
import GHC.Utils.Panic
import Data.List (tails, isPrefixOf)
@@ -350,9 +349,7 @@ runMergeObjects logger tmpfs dflags args =
, "does not support object merging." ]
optl_args = map Option (getOpts dflags opt_lm)
args2 = args0 ++ args ++ optl_args
- -- N.B. Darwin's ld64 doesn't support response files. Consequently we only
- -- use them on Windows where they are truly necessary.
- if isWindowsHost
+ if toolSettings_ldSupportsResponseFiles (toolSettings dflags)
then do
mb_env <- getGccEnv args2
runSomethingResponseFile logger tmpfs dflags id "Merge objects" p args2 mb_env