[commit: ghc] master: Add -fuse-ld flag to CFLAGS during configure (960918b)
git at git.haskell.org
git at git.haskell.org
Mon Jul 3 23:43:00 UTC 2017
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/960918bd1f7e3811845a525ba85bbd390ddf28c8/ghc
>---------------------------------------------------------------
commit 960918bd1f7e3811845a525ba85bbd390ddf28c8
Author: Ben Gamari <bgamari.foss at gmail.com>
Date: Mon Jul 3 19:09:39 2017 -0400
Add -fuse-ld flag to CFLAGS during configure
The decisions made by configure later in the script may depend upon the
linker used. Consequently, it is important that configure uses the same
linker as GHC will eventually use.
For instance, on Nix I found that a program requiring `libpthread` would
link fine with only `-lrt` when linked with BFD ld. However, with gold
we needed to explicitly provide the `-lpthread` dependency. Presumably
the former would happily loaded any `NEEDED` libraries whereas the
latter wants them explicitly given. Regardless, since `configure`'s
`NEED_PTHREAD_LIB` check didn't use the `-fuse-ld` flag that GHC would
eventually use, we inferred the wrong value, resulting in link errors
later in the build.
Test Plan: Validate
Reviewers: austin, hvr
Subscribers: rwbarton, thomie, erikd
GHC Trac Issues: #13541
Differential Revision: https://phabricator.haskell.org/D3694
>---------------------------------------------------------------
960918bd1f7e3811845a525ba85bbd390ddf28c8
configure.ac | 1 +
distrib/configure.ac.in | 1 +
2 files changed, 2 insertions(+)
diff --git a/configure.ac b/configure.ac
index 92d3714..c31deba 100644
--- a/configure.ac
+++ b/configure.ac
@@ -535,6 +535,7 @@ FIND_LD([$target],[GccUseLdOpt])
CONF_GCC_LINKER_OPTS_STAGE1="$CONF_GCC_LINKER_OPTS_STAGE1 $GccUseLdOpt"
CONF_GCC_LINKER_OPTS_STAGE2="$CONF_GCC_LINKER_OPTS_STAGE2 $GccUseLdOpt"
LdCmd="$LD"
+CFLAGS="$CFLAGS $GccUseLdOpt"
AC_SUBST([LdCmd])
dnl ** Which nm to use?
diff --git a/distrib/configure.ac.in b/distrib/configure.ac.in
index 53c79e1..ac6af24 100644
--- a/distrib/configure.ac.in
+++ b/distrib/configure.ac.in
@@ -121,6 +121,7 @@ FIND_LD([$target],[GccUseLdOpt])
CONF_GCC_LINKER_OPTS_STAGE1="$CONF_GCC_LINKER_OPTS_STAGE1 $GccUseLdOpt"
CONF_GCC_LINKER_OPTS_STAGE2="$CONF_GCC_LINKER_OPTS_STAGE2 $GccUseLdOpt"
LdCmd="$LD"
+CFLAGS="$CFLAGS $GccUseLdOpt"
AC_SUBST([LdCmd])
FP_PROG_LD_IS_GNU
More information about the ghc-commits
mailing list