blob: 6529dd654d2f41ce59824c199bbfd538b9d4e6db (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
module LinkerUnload (init) where
import GHC
import GHC.Unit.State
import GHC.Driver.Env
import GHC.Driver.Session
import GHC.Driver.Backend
import qualified GHC.Linker.Loader as Loader
import System.Environment
import GHC.Utils.Monad ( MonadIO(..) )
foreign export ccall loadPackages :: IO ()
loadPackages :: IO ()
loadPackages = do
[libdir] <- getArgs
runGhc (Just libdir) $ do
dflags <- getSessionDynFlags
let dflags' = dflags { backend = NoBackend
, ghcLink = LinkInMemory }
setSessionDynFlags dflags'
hsc_env <- getSession
liftIO $ Loader.loadPackages hsc_env (preloadUnits (hsc_units hsc_env))
|