diff options
author | Simon Marlow <smarlow@fb.com> | 2015-01-20 03:59:25 -0800 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2015-01-20 12:39:41 +0000 |
commit | 6108d95a73f93d486223064ad72bf6bedc116cbd (patch) | |
tree | a69335a13fceac701dcbf27f2ab4d6ebd4701cc4 /testsuite/tests/rts/LinkerUnload.hs | |
parent | 9894f6a5b4883ea87fd5f280a2eb4a8abfbd2a6b (diff) | |
download | haskell-6108d95a73f93d486223064ad72bf6bedc116cbd.tar.gz |
Make the linker_unload test less fragile
Summary:
Now it invokes the GHC API to load packages, rather than trying to do it
manually. This should fix most of the issues we've had with this test,
and might make it work on Windows too.
Diffstat (limited to 'testsuite/tests/rts/LinkerUnload.hs')
-rw-r--r-- | testsuite/tests/rts/LinkerUnload.hs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/testsuite/tests/rts/LinkerUnload.hs b/testsuite/tests/rts/LinkerUnload.hs new file mode 100644 index 0000000000..7e9d1dd38a --- /dev/null +++ b/testsuite/tests/rts/LinkerUnload.hs @@ -0,0 +1,20 @@ +module LinkerUnload (init) where + +import GHC +import DynFlags +import Linker +import System.Environment +import MonadUtils ( 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' + dflags <- getSessionDynFlags + liftIO $ Linker.linkPackages dflags pkgs |