[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