summaryrefslogtreecommitdiff
path: root/testsuite/tests/rts/LinkerUnload.hs
diff options
context:
space:
mode:
authorSimon Marlow <smarlow@fb.com>2015-01-20 03:59:25 -0800
committerSimon Marlow <marlowsd@gmail.com>2015-01-20 12:39:41 +0000
commit6108d95a73f93d486223064ad72bf6bedc116cbd (patch)
treea69335a13fceac701dcbf27f2ab4d6ebd4701cc4 /testsuite/tests/rts/LinkerUnload.hs
parent9894f6a5b4883ea87fd5f280a2eb4a8abfbd2a6b (diff)
downloadhaskell-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.hs20
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