
#10458: GHCi fails to load shared object (the 'impossible' happened) -------------------------------+---------------------------------------- Reporter: rleslie | Owner: Type: bug | Status: new Priority: high | Milestone: 8.0.1 Component: GHCi | Version: 7.10.1 Resolution: | Keywords: Operating System: Linux | Architecture: Unknown/Multiple Type of failure: GHCi crash | Test Case: Blocked By: | Blocking: 11042 Related Tickets: | Differential Rev(s): Phab:D1631 Wiki Page: | -------------------------------+---------------------------------------- Changes (by trommler): * status: patch => new Comment: @simonmar did not like my hack, and he is right. Let me sit down and actually fix dynamic linking properly. My plan for a redesign of dynamic linking is (I'll add that to Trac #11238 too): 1. Use ld to generate a temporary shared object .so from an object file .o linking no other libraries at all. ELF shared objects allow undefined symbols at link time. 1. Link all temporary shared objects, Haskell libraries, and command line C libraries (in that order) into a dummy shared object. Exclude shared objects that are to be unloaded from the link. 1. Load the dummy shared object. Call this the "new" dummy shared object and call the one that was previously loaded the "old" dummy shared object. 1. Unload (dlclose) the dummy shared object. This will also unload shared objects that are to be unloaded (unless they are still referenced by other still loaded libraries). See Phab:1631 for details. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10458#comment:29 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler