diff options
| author | Karel Gardas <karel.gardas@centrum.cz> | 2014-01-13 17:00:18 -0600 |
|---|---|---|
| committer | Austin Seipp <austin@well-typed.com> | 2014-01-14 03:46:07 -0600 |
| commit | b9b94ec82d9125da47c619c69e626120b3e60457 (patch) | |
| tree | 3b0713b2fc20de40ab368e3df26554dfec51de7f | |
| parent | 59182e42bb0922238faba8fff3c5c20966d4af14 (diff) | |
| download | haskell-b9b94ec82d9125da47c619c69e626120b3e60457.tar.gz | |
Fix binary linking errors on Solaris
The -u option must be placed before libraries which define the necessary
symbols.
Signed-off-by: Austin Seipp <austin@well-typed.com>
| -rw-r--r-- | compiler/main/DriverPipeline.hs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs index df0f8e6492..a95c17901e 100644 --- a/compiler/main/DriverPipeline.hs +++ b/compiler/main/DriverPipeline.hs @@ -1800,7 +1800,16 @@ linkBinary' staticLink dflags o_files dep_packages = do -- HS packages, because libtool doesn't accept other options. -- In the case of iOS these need to be added by hand to the -- final link in Xcode. - else package_hs_libs ++ extra_libs ++ other_flags + else other_flags ++ package_hs_libs ++ extra_libs -- -Wl,-u,<sym> contained in other_flags + -- needs to be put before -l<package>, + -- otherwise Solaris linker fails linking + -- a binary with unresolved symbols in RTS + -- which are defined in base package + -- the reason for this is a note in ld(1) about + -- '-u' option: "The placement of this option + -- on the command line is significant. + -- This option must be placed before the library + -- that defines the symbol." pkg_framework_path_opts <- if platformUsesFrameworks platform |
