[GHC] #3252: having to call hs_add_root(__stginit_Foo) is a bit
of a pain
GHC
cvs-ghc at haskell.org
Wed May 19 13:55:11 EDT 2010
#3252: having to call hs_add_root(__stginit_Foo) is a bit of a pain
---------------------------------+------------------------------------------
Reporter: duncan | Owner:
Type: feature request | Status: new
Priority: normal | Milestone: 6.14.1
Component: Compiler (FFI) | Version: 6.10.2
Keywords: | Difficulty: Unknown
Os: Unknown/Multiple | Testcase:
Architecture: Unknown/Multiple | Failure: None/Unknown
---------------------------------+------------------------------------------
Comment(by lodi):
I recently ran into this issue when building a shared library with a
c-interface. A hand-built library (module CInterface, no package) would
link fine. A cabal-built library (package test-0.0) would fail with:
{{{
./libHStest-0.0-ghc6.12.1.so: undefined reference to
`__stginit_CInterface'
}}}
After some help from duncan:
{{{
> nm libHStest-0.0-ghc6.12.1.so | grep stginit
...
00004570 T __stginit_testzm0zi0_CInterface
00004500 T __stginit_testzm0zi0_CInterface_dyn
...
}}}
So it turns out that the package name ''and version'' are embedded into
the symbol. This necessitates manually updating the c source files
whenever the package version is incremented. The error is additionally
confusing since the manual states that ghc will automatically export
{{{__stginit_Foo}}}, and also since it isn't even reported until the
consuming application is linked.
Some way to have ghc take care of this automatically would be much
appreciated!
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/3252#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list