From 0fcc454329c4e3e0dc4474412bff599d0e9bdfcd Mon Sep 17 00:00:00 2001 From: Peter Trommler Date: Sat, 7 Mar 2015 11:13:37 -0600 Subject: Dynamically link all loaded packages in new object Summary: As a result of fixing #8935 we needed to open shared libraries with RTLD_LOCAL and so symbols from packages loaded earlier cannot be found anymore. We need to include in the link all packages loaded so far. This fixes #10058 Test Plan: validate Reviewers: hvr, simonmar, austin Reviewed By: austin Subscribers: rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D676 GHC Trac Issues: #10058 --- compiler/ghci/Linker.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'compiler') diff --git a/compiler/ghci/Linker.hs b/compiler/ghci/Linker.hs index 0e36cd9d20..a2e694e879 100644 --- a/compiler/ghci/Linker.hs +++ b/compiler/ghci/Linker.hs @@ -846,7 +846,10 @@ dynLoadObjs dflags pls objs = do buildTag = mkBuildTag [WayDyn], outputFile = Just soFile } - linkDynLib dflags2 objs [] + -- link all "loaded packages" so symbols in those can be resolved + -- Note: We are loading packages with local scope, so to see the + -- symbols in this link we must link all loaded packages again. + linkDynLib dflags2 objs (pkgs_loaded pls) consIORef (filesToNotIntermediateClean dflags) soFile m <- loadDLL soFile case m of -- cgit v1.2.1