[GHC] #9438: Dynamic GHCi doesn't support static libraries
GHC
ghc-devs at haskell.org
Tue May 29 19:35:15 UTC 2018
#9438: Dynamic GHCi doesn't support static libraries
-------------------------------------+-------------------------------------
Reporter: egl | Owner: (none)
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.8.3
(Linking) |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: GHCi crash | Test Case:
Blocked By: | Blocking:
Related Tickets: #8164, #14708, | Differential Rev(s): Phab:D4589
#15032 |
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Phyx-):
@bgamari It certainly *can* be implemented, but it really depends on how
`DYNAMIC_GHC_PROGRAMS` is implemented.
I haven't looked at the exact implementation but I would imagine, that in
order for this to work, the .so must export all symbols as globals. I
suspect (without looking) that ghc is linking the shared lib using
`--whole-archive`.
C static shared archives wouldn't be must of an issue. If you have no
reference to the C code in your own code it doesn't matter if the symbols
are not there. As you can't directly call C code anyway.
static Haskell libraries are a different issue, loading a static archive
would require all it's symbols to also be exported. Two libraries with the
exact same z-encoded symbol names would produce a duplicate symbol error,
while this need not be the case normally.
This is why I *think* it's currently not supported. An obvious work-around
would be to create multiple .so and link them in the same order as the
static archives.
So I think it can be supported, but will require a bit of changes to
`DYNAMIC_GHC_PROGRAMS`. You'd also have to track these archives. It would
be a bit annoying to recompile them on every scope change when they didn't
change. A totally naive implementation would be a bit of a performance
hit.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9438#comment:12>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list