[Git][ghc/ghc][wip/T18550] WIP
Ben Gamari
gitlab at gitlab.haskell.org
Thu Sep 3 00:30:37 UTC 2020
Ben Gamari pushed to branch wip/T18550 at Glasgow Haskell Compiler / GHC
Commits:
0d79c84b by Ben Gamari at 2020-09-02T20:30:29-04:00
WIP
- - - - -
7 changed files:
- aclocal.m4
- compiler/GHC/Settings/IO.hs
- configure.ac
- hadrian/cfg/system.config.in
- hadrian/src/Builder.hs
- mk/config.mk.in
- rules/build-package-way.mk
Changes:
=====================================
aclocal.m4
=====================================
@@ -2635,6 +2635,7 @@ AC_DEFUN([CHECK_FOR_GOLD_T22266],[
# ------------------
# Find which linker to use to merge object files.
#
+# See Note [Merging object files for GHCi] in GHC.Driver.Pipeline.
AC_DEFUN([FIND_MERGE_OBJECTS],[
AC_REQUIRE([FIND_LD])
@@ -2655,6 +2656,9 @@ AC_DEFUN([FIND_MERGE_OBJECTS],[
AC_MSG_ERROR([Linker is affected by binutils 22266 but couldn't find another unaffected linker. Please set the MergeObjsCmd variable to a functional linker.])
fi
fi
+
+ AC_SUBST([MergeObjsCmd])
+ AC_SUBST([MergeObjsArgs])
])
# FIND_PYTHON
=====================================
compiler/GHC/Settings/IO.hs
=====================================
@@ -137,7 +137,7 @@ initSettings top_dir = do
as_args = map Option cc_args
ld_prog = cc_prog
ld_args = map Option (cc_args ++ words cc_link_args_str)
- ld_r_prog <- getSetting "Merge objects command"
+ ld_r_prog <- getToolSetting "Merge objects command"
ld_r_args <- getSetting "Merge objects flags"
llvmTarget <- getSetting "LLVM target"
=====================================
configure.ac
=====================================
@@ -448,6 +448,8 @@ then
NM="${mingwbin}nm.exe"
RANLIB="${mingwbin}ranlib.exe"
OBJDUMP="${mingwbin}objdump.exe"
+ MergeObjsCmd="$LD"
+ MergeObjsArgs="-r --oformat=pe-bigobj-x86-64"
fp_prog_ar="${mingwbin}ar.exe"
AC_PATH_PROG([Genlib],[genlib])
=====================================
hadrian/cfg/system.config.in
=====================================
@@ -14,6 +14,7 @@ hs-cpp = @HaskellCPPCmd@
ld = @LdCmd@
make = @MakeCmd@
nm = @NmCmd@
+merge-objects = @MergeObjsCmd@
objdump = @ObjdumpCmd@
ranlib = @REAL_RANLIB_CMD@
sphinx-build = @SPHINXBUILD@
@@ -115,10 +116,10 @@ conf-ld-linker-args-stage1 = @CONF_LD_LINKER_OPTS_STAGE1@
conf-ld-linker-args-stage2 = @CONF_LD_LINKER_OPTS_STAGE2@
conf-ld-linker-args-stage3 = @CONF_LD_LINKER_OPTS_STAGE3@
-conf-merge-objects-args-stage0 = @SettingsMergeObjectsFlags@
-conf-merge-objects-args-stage1 = @SettingsMergeObjectsFlags@
-conf-merge-objects-args-stage2 = @SettingsMergeObjectsFlags@
-conf-merge-objects-args-stage3 = @SettingsMergeObjectsFlags@
+conf-merge-objects-args-stage0 = @MergeObjsArgs@
+conf-merge-objects-args-stage1 = @MergeObjsArgs@
+conf-merge-objects-args-stage2 = @MergeObjsArgs@
+conf-merge-objects-args-stage3 = @MergeObjsArgs@
# Settings:
=====================================
hadrian/src/Builder.hs
=====================================
@@ -312,7 +312,7 @@ systemBuilderPath builder = case builder of
Happy -> fromKey "happy"
HsCpp -> fromKey "hs-cpp"
Ld _ -> fromKey "ld"
- MergeObjects _ -> fromKey "settings-merge-objects-command"
+ MergeObjects _ -> fromKey "merge-objects"
Make _ -> fromKey "make"
Makeinfo -> fromKey "makeinfo"
Nm -> fromKey "nm"
=====================================
mk/config.mk.in
=====================================
@@ -544,6 +544,16 @@ LD_STAGE1 = $(LD)
LD_STAGE2 = $(LD)
LD_STAGE3 = $(LD)
+MERGE_OBJS_STAGE0 = @MergeObjsCmd@
+MERGE_OBJS_STAGE1 = @MergeObjsCmd@
+MERGE_OBJS_STAGE2 = @MergeObjsCmd@
+MERGE_OBJS_STAGE3 = @MergeObjsCmd@
+
+MERGE_OBJS_STAGE0_FLAGS = @MergeObjsArgs@
+MERGE_OBJS_STAGE1_FLAGS = @MergeObjsArgs@
+MERGE_OBJS_STAGE2_FLAGS = @MergeObjsArgs@
+MERGE_OBJS_STAGE3_FLAGS = @MergeObjsArgs@
+
# Cross-compiling options
# See Note [CrossCompiling vs Stage1Only]
CrossCompiling = @CrossCompiling@
=====================================
rules/build-package-way.mk
=====================================
@@ -107,6 +107,7 @@ endif
endif
# Build the GHCi library
+# See Note [Merging object files for GHCi] in GHC.Driver.Pipeline.
ifneq "$(filter $3, v p)" ""
$1_$2_$3_GHCI_LIB = $1/$2/build/HS$$($1_$2_COMPONENT_ID).$$($3_osuf)
ifeq "$$($1_$2_BUILD_GHCI_LIB)" "YES"
@@ -116,7 +117,7 @@ BINDIST_LIBS += $$($1_$2_$3_GHCI_LIB)
endif
endif
$$($1_$2_$3_GHCI_LIB) : $$($1_$2_$3_HS_OBJS) $$($1_$2_$3_CMM_OBJS) $$($1_$2_$3_C_OBJS) $$($1_$2_$3_S_OBJS) $$($1_$2_EXTRA_OBJS) $$($1_$2_LD_SCRIPT)
- $$(call cmd,SettingsMergeObjectsCommand) $(SettingsMergeObjectsFlags) $$(if $$($1_$2_LD_SCRIPT),$$($1_$2_LD_SCRIPT_CMD) $$($1_$2_LD_SCRIPT)) -o $$@ $$(EXTRA_LD_LINKER_OPTS) $$($1_$2_$3_HS_OBJS) $$($1_$2_$3_CMM_OBJS) $$($1_$2_$3_C_OBJS) $$($1_$2_$3_S_OBJS) $$($1_$2_EXTRA_OBJS)
+ $$(call cmd,MERGE_OBJS_STAGE$4) $(MERGE_OBJS_STAGE$4_FLAGS) $$(if $$($1_$2_LD_SCRIPT),$$($1_$2_LD_SCRIPT_CMD) $$($1_$2_LD_SCRIPT)) -o $$@ $$(EXTRA_LD_LINKER_OPTS) $$($1_$2_$3_HS_OBJS) $$($1_$2_$3_CMM_OBJS) $$($1_$2_$3_C_OBJS) $$($1_$2_$3_S_OBJS) $$($1_$2_EXTRA_OBJS)
ifeq "$$($1_$2_BUILD_GHCI_LIB)" "YES"
# Don't bother making ghci libs for bootstrapping packages
ifneq "$4" "0"
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/0d79c84ba8ce032336d8f01a69a68684e90fb451
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/0d79c84ba8ce032336d8f01a69a68684e90fb451
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20200902/4d8fa697/attachment-0001.html>
More information about the ghc-commits
mailing list