Fix #8451
authorGabor Pali <pali.gabor@gmail.com>
Sat, 18 Jan 2014 02:02:21 +0000 (03:02 +0100)
committerGabor Pali <pali.gabor@gmail.com>
Sat, 18 Jan 2014 02:20:20 +0000 (03:20 +0100)
On FreeBSD, /usr/lib has to be added to the library path on linking when
libthr is needed but -nostdlib is used (which is the case when the -prof
and -threaded flags are combined).

compiler/main/DriverPipeline.hs

index 19fb717..b2f182a 100644 (file)
@@ -2124,12 +2124,16 @@ joinObjectFiles :: DynFlags -> [FilePath] -> FilePath -> IO ()
 joinObjectFiles dflags o_files output_fn = do
   let mySettings = settings dflags
       ldIsGnuLd = sLdIsGnuLd mySettings
+      osInfo = platformOS (targetPlatform dflags)
       ld_r args ccInfo = SysTools.runLink dflags ([
                             SysTools.Option "-nostdlib",
                             SysTools.Option "-Wl,-r"
                             ]
                          ++ (if ccInfo == Clang then []
                               else [SysTools.Option "-nodefaultlibs"])
+                         ++ (if osInfo == OSFreeBSD
+                              then [SysTools.Option "-L/usr/lib"]
+                              else [])
                             -- gcc on sparc sets -Wl,--relax implicitly, but
                             -- -r and --relax are incompatible for ld, so
                             -- disable --relax explicitly.