[commit: ghc] master: Dynamically link all loaded packages in new object (0fcc454)

git at git.haskell.org git at git.haskell.org
Sat Mar 7 17:15:31 UTC 2015


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/0fcc454329c4e3e0dc4474412bff599d0e9bdfcd/ghc

>---------------------------------------------------------------

commit 0fcc454329c4e3e0dc4474412bff599d0e9bdfcd
Author: Peter Trommler <ptrommler at acm.org>
Date:   Sat Mar 7 11:13:37 2015 -0600

    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


>---------------------------------------------------------------

0fcc454329c4e3e0dc4474412bff599d0e9bdfcd
 compiler/ghci/Linker.hs | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/compiler/ghci/Linker.hs b/compiler/ghci/Linker.hs
index 0e36cd9..a2e694e 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



More information about the ghc-commits mailing list