diff options
-rw-r--r-- | compiler/ghci/Linker.lhs | 11 | ||||
-rw-r--r-- | compiler/main/DriverPhases.hs | 10 |
2 files changed, 15 insertions, 6 deletions
diff --git a/compiler/ghci/Linker.lhs b/compiler/ghci/Linker.lhs index eb3e226ab4..274f2fbd44 100644 --- a/compiler/ghci/Linker.lhs +++ b/compiler/ghci/Linker.lhs @@ -378,7 +378,16 @@ preloadLib dflags lib_paths framework_paths lib_spec -> do maybe_errstr <- loadDLL (mkSOName platform dll_unadorned) case maybe_errstr of Nothing -> maybePutStrLn dflags "done" - Just mm -> preloadFailed mm lib_paths lib_spec + Just mm | platformOS platform /= OSDarwin -> + preloadFailed mm lib_paths lib_spec + Just mm | otherwise -> do + -- As a backup, on Darwin, try to also load a .so file + -- since (apparently) some things install that way - see + -- ticket #8770. + err2 <- loadDLL $ ("lib" ++ dll_unadorned) <.> "so" + case err2 of + Nothing -> maybePutStrLn dflags "done" + Just _ -> preloadFailed mm lib_paths lib_spec DLLPath dll_path -> do maybe_errstr <- loadDLL dll_path diff --git a/compiler/main/DriverPhases.hs b/compiler/main/DriverPhases.hs index 2de19b9795..c406f6ad0d 100644 --- a/compiler/main/DriverPhases.hs +++ b/compiler/main/DriverPhases.hs @@ -240,14 +240,14 @@ objish_suffixes :: Platform -> [String] -- Use the appropriate suffix for the system on which -- the GHC-compiled code will run objish_suffixes platform = case platformOS platform of - OSMinGW32 -> [ "o", "O", "obj", "OBJ" ] - _ -> [ "o" ] + OSMinGW32 -> [ "o", "O", "obj", "OBJ" ] + _ -> [ "o" ] dynlib_suffixes :: Platform -> [String] dynlib_suffixes platform = case platformOS platform of - OSMinGW32 -> ["dll", "DLL"] - OSDarwin -> ["dylib"] - _ -> ["so"] + OSMinGW32 -> ["dll", "DLL"] + OSDarwin -> ["dylib", "so"] + _ -> ["so"] isHaskellishSuffix, isHaskellSrcSuffix, isCishSuffix, isExtCoreSuffix, isHaskellUserSrcSuffix |