[commit: ghc] ghc-7.8: Fix detection of GNU gold linker if invoked via gcc with parameters (550877a)

git at git.haskell.org git at git.haskell.org
Mon Dec 15 14:55:05 UTC 2014


Repository : ssh://git@git.haskell.org/ghc

On branch  : ghc-7.8
Link       : http://ghc.haskell.org/trac/ghc/changeset/550877a8496d57dcab30f7864a84833df5e13d19/ghc

>---------------------------------------------------------------

commit 550877a8496d57dcab30f7864a84833df5e13d19
Author: Sebastian Dröge <sebastian at centricular.com>
Date:   Tue Nov 18 12:40:20 2014 -0600

    Fix detection of GNU gold linker if invoked via gcc with parameters
    
    Previously the linker was called without any commandline parameters to
    detect whether bfd or gold is used. However the -fuse-ld parameter can
    be used to switch between gold and bfd and should be taken into account
    here.
    
    Trac #9336
    
    Signed-off-by: Austin Seipp <austin at well-typed.com>
    (cherry picked from commit e7b414a3cc0e27049f2608f5e0a00c47146cc46d)


>---------------------------------------------------------------

550877a8496d57dcab30f7864a84833df5e13d19
 compiler/main/SysTools.lhs | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/compiler/main/SysTools.lhs b/compiler/main/SysTools.lhs
index cd9b9f5..8c02cc4 100644
--- a/compiler/main/SysTools.lhs
+++ b/compiler/main/SysTools.lhs
@@ -739,7 +739,10 @@ getLinkerInfo' :: DynFlags -> IO LinkerInfo
 getLinkerInfo' dflags = do
   let platform = targetPlatform dflags
       os = platformOS platform
-      (pgm,_) = pgm_l dflags
+      (pgm,args0) = pgm_l dflags
+      args1     = map Option (getOpts dflags opt_l)
+      args2     = args0 ++ args1
+      args3     = filter notNull (map showOpt args2)
 
       -- Try to grab the info from the process output.
       parseLinkerInfo stdo _stde _exitc
@@ -790,7 +793,7 @@ getLinkerInfo' dflags = do
                  -- In practice, we use the compiler as the linker here. Pass
                  -- -Wl,--version to get linker version info.
                  (exitc, stdo, stde) <- readProcessEnvWithExitCode pgm
-                                        ["-Wl,--version"]
+                                        (["-Wl,--version"] ++ args3)
                                         en_locale_env
                  -- Split the output by lines to make certain kinds
                  -- of processing easier. In particular, 'clang' and 'gcc'



More information about the ghc-commits mailing list