X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fghci%2FLinker.lhs;h=fbef432a95ca21edc5a3128f80f849a81422696a;hb=0323459f422cc1cc62335f2ef5aac68d6896473b;hp=759469f1cf03d3fa1bc134749cca57c89802ed37;hpb=ba58376a6bcbf50e0d6464456a96932e0c261abf;p=ghc-hetmet.git diff --git a/compiler/ghci/Linker.lhs b/compiler/ghci/Linker.lhs index 759469f..fbef432 100644 --- a/compiler/ghci/Linker.lhs +++ b/compiler/ghci/Linker.lhs @@ -230,13 +230,12 @@ dataConInfoPtrToName x = do -} getConDescAddress :: Ptr StgInfoTable -> IO (Ptr Word8) - getConDescAddress ptr = do -#ifdef GHCI_TABLES_NEXT_TO_CODE + getConDescAddress ptr + | ghciTablesNextToCode = do offsetToString <- peek $ ptr `plusPtr` (- wORD_SIZE) return $ (ptr `plusPtr` stdInfoTableSizeB) `plusPtr` (fromIntegral (offsetToString :: StgWord)) -#else + | otherwise = peek $ intPtrToPtr $ (ptrToIntPtr ptr) + fromIntegral stdInfoTableSizeB -#endif -- parsing names is a little bit fiddly because we have a string in the form: -- pkg:A.B.C.foo, and we want to split it into three parts: ("pkg", "A.B.C", "foo"). @@ -1069,11 +1068,11 @@ loadFrameworks pkg -- Try to find an object file for a given library in the given paths. -- If it isn't present, we assume it's a dynamic library. -#ifndef __PIC__ --- When the GHC package was not compiled as dynamic library (=__PIC__ not set), --- we search for .o libraries first. locateOneObj :: [FilePath] -> String -> IO LibrarySpec locateOneObj dirs lib + | not picIsOn + -- When the GHC package was not compiled as dynamic library + -- (=__PIC__ not set), we search for .o libraries first. = do { mb_obj_path <- findFile mk_obj_path dirs ; case mb_obj_path of Just obj_path -> return (Object obj_path) @@ -1082,14 +1081,9 @@ locateOneObj dirs lib ; case mb_lib_path of Just lib_path -> return (DLL (lib ++ "-ghc" ++ cProjectVersion)) Nothing -> return (DLL lib) }} -- We assume - where - mk_obj_path dir = dir lib <.> "o" - mk_dyn_lib_path dir = dir mkSOName (lib ++ "-ghc" ++ cProjectVersion) -#else --- When the GHC package was compiled as dynamic library (=__PIC__ set), --- we search for .so libraries first. -locateOneObj :: [FilePath] -> String -> IO LibrarySpec -locateOneObj dirs lib + | otherwise + -- When the GHC package was compiled as dynamic library (=__PIC__ set), + -- we search for .so libraries first. = do { mb_lib_path <- findFile mk_dyn_lib_path dirs ; case mb_lib_path of Just lib_path -> return (DLL (lib ++ "-ghc" ++ cProjectVersion)) @@ -1101,7 +1095,6 @@ locateOneObj dirs lib where mk_obj_path dir = dir (lib <.> "o") mk_dyn_lib_path dir = dir mkSOName (lib ++ "-ghc" ++ cProjectVersion) -#endif -- ---------------------------------------------------------------------------- -- Loading a dyanmic library (dlopen()-ish on Unix, LoadLibrary-ish on Win32)