diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2014-11-18 12:40:20 -0600 |
---|---|---|
committer | Austin Seipp <austin@well-typed.com> | 2014-11-18 12:40:24 -0600 |
commit | e7b414a3cc0e27049f2608f5e0a00c47146cc46d (patch) | |
tree | 80eed7446a44533257924f88f55dd373a35d5043 /compiler/main/SysTools.lhs | |
parent | c557f991a9fa6f6afad4850e4f5db6a08fa1cb6c (diff) | |
download | haskell-e7b414a3cc0e27049f2608f5e0a00c47146cc46d.tar.gz |
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@well-typed.com>
Diffstat (limited to 'compiler/main/SysTools.lhs')
-rw-r--r-- | compiler/main/SysTools.lhs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/main/SysTools.lhs b/compiler/main/SysTools.lhs index 67926f5576..c13790a4ff 100644 --- a/compiler/main/SysTools.lhs +++ b/compiler/main/SysTools.lhs @@ -741,7 +741,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 @@ -792,7 +795,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' |