summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2022-02-04 19:05:46 -0500
committerBen Gamari <ben@smart-cactus.org>2022-02-09 15:56:11 -0500
commit1cc6a49518cec25e753111520411713ddcb584f2 (patch)
tree23bd405d497fe31c903c80e77c75c6d8af66b475
parent60bc48be5e6a4dee46aaf3dc422460a175a29c5b (diff)
downloadhaskell-1cc6a49518cec25e753111520411713ddcb584f2.tar.gz
Drop --oformat=pe-bigobj-x86-64 arguments from ld flags
It appears that LLD detects that the output is large on its own.
-rw-r--r--compiler/GHC/Driver/Pipeline/Execute.hs5
-rw-r--r--configure.ac2
-rw-r--r--m4/fp_settings.m42
3 files changed, 6 insertions, 3 deletions
diff --git a/compiler/GHC/Driver/Pipeline/Execute.hs b/compiler/GHC/Driver/Pipeline/Execute.hs
index 6bc9df7c6f..4fafb5c294 100644
--- a/compiler/GHC/Driver/Pipeline/Execute.hs
+++ b/compiler/GHC/Driver/Pipeline/Execute.hs
@@ -1089,12 +1089,15 @@ enabled in the toolchain:
suggests, this tells the linker to produce a bigobj-enabled COFF object, no a
PE executable.
-We must enable bigobj output in a few places:
+Previously when we used ld.bfd we had to enable bigobj output in a few places:
* When merging object files (GHC.Driver.Pipeline.Execute.joinObjectFiles)
* When assembling (GHC.Driver.Pipeline.runPhase (RealPhase As ...))
+However, this is no longer necessary with ld.lld, which detects that the
+object is large on its own.
+
Unfortunately the big object format is not supported on 32-bit targets so
none of this can be used in that case.
diff --git a/configure.ac b/configure.ac
index 3504733476..df24bc472e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -450,7 +450,7 @@ then
OBJDUMP="${mingwbin}llvm-objdump.exe"
DLLTOOL="${mingwbin}llvm-dlltool.exe"
MergeObjsCmd="${mingwbin}ld.lld.exe"
- MergeObjsArgs="-r --oformat=pe-bigobj-x86-64"
+ MergeObjsArgs="-r"
AC_PATH_PROG([Genlib],[genlib])
fi
diff --git a/m4/fp_settings.m4 b/m4/fp_settings.m4
index f3f151dd11..9f9636a520 100644
--- a/m4/fp_settings.m4
+++ b/m4/fp_settings.m4
@@ -14,7 +14,7 @@ AC_DEFUN([FP_SETTINGS],
# Overrides FIND_MERGE_OBJECTS in order to avoid hard-coding linker
# path on Windows (#18550).
SettingsMergeObjectsCommand="${SettingsLdCommand}"
- SettingsMergeObjectsFlags="-r --oformat=pe-bigobj-x86-64"
+ SettingsMergeObjectsFlags="-r"
SettingsArCommand="${mingw_bin_prefix}llvm-ar.exe"
SettingsRanlibCommand="${mingw_bin_prefix}llvm-ranlib.exe"
SettingsDllWrapCommand="${mingw_bin_prefix}llvm-dllwrap.exe"