summaryrefslogtreecommitdiff
path: root/testsuite/tests/rts/linker/LinkerUnload.hs
blob: af71cadfac7e110bbc0ef6ad642f93c7f4c96552 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
module LinkerUnload (init) where

import GHC
import GHC.Driver.Session
import GHC.Runtime.Linker as Linker
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 { hscTarget = HscNothing
                         , ghcLink  = LinkInMemory }
    pkgs <- setSessionDynFlags dflags'
    hsc_env <- getSession
    liftIO $ Linker.linkPackages hsc_env pkgs