
I'm a little worried about whether the obvious fix for this (adding `-lfoo` to the gcc command line for building the temporary shared objects for each library `-lfoo` specified on the ghci command line) might cause #8935 to occur again in some configurations. If we add every library that we've loaded there then what was the point of loading the libraries with RTLD_LOCAL? We need RTLD_LOCAL when we want to override symbols in a shared library
#10458: GHCi fails to load shared object (the 'impossible' happened) ---------------------------------+----------------------------------------- Reporter: rleslie | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.10.2 Component: GHCi | Version: 7.10.1 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 (amd64) Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: ---------------------------------+----------------------------------------- Comment (by trommler): Replying to [comment:5 rwbarton]: previously loaded with symbols from a shared library loaded later. Given that we do not want to override symbols from C libraries, we can add them to the link command. My understanding of what we want to be able to override is very hazy. Do we have a wiki page that describes the semantics of loading packages and libraries into ghci?
Possibly we only need to use RTLD_LOCAL when building the ghci linker statically? Then we could revert the other changes like #10322 and #10110 and #10058. What does it mean "building the ghci linker statically"?
-- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10458#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler