Shared GHC libraries and the runtime system

Tyson Whitehead twhitehead at gmail.com
Mon Feb 22 16:34:20 EST 2010


I was working on a shared library that loads up the GHC runtime (via hs_init) 
and have been running into a bunch of undefined stg symbols.

A bit of digging and it seems that GHC doesn't embed

 - the dependency libHSrts-ghc6.12.1.so, and
 - the associated rpath /usr/lib/ghc-6.12.1

into shared libraries that it builds.  Thus, if your main executable isn't GHC 
generated (and hence has these), you run into unresolved symbols.

I can work around this by manually adding them myself.  Is there any reason 
GHC can't put this information by default into shared libraries though?

Thanks!  -Tyson

PS:  Further digging into the various shared libraries packaged with GHC 
(Debian GHC package 6.12.1-2) reveal that they are actually missing

 - the dependency libHSrts-ghc6.12.1.so, and
 - all rpaths (i.e., there are absolutely no rpaths in any of them)

$ objdump -p /usr/lib/ghc-6.12.1/base-4.2.0.0/libHSbase-4.2.0.0-ghc6.12.1.so
...
Dynamic Section:
  NEEDED      libHSinteger-gmp-0.2.0.0-ghc6.12.1.so
  NEEDED      libgmp.so.3
  NEEDED      libHSghc-prim-0.2.0.0-ghc6.12.1.so
  NEEDED      libc.so.6
  SONAME      libHSbase-4.2.0.0-ghc6.12.1.so
...

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : http://www.haskell.org/pipermail/glasgow-haskell-users/attachments/20100222/ebdc3694/attachment.bin


More information about the Glasgow-haskell-users mailing list