Different behavior in ghci 7.8.3 vs 7.10.1?
djsamperi at gmail.com
Sat Jun 27 11:59:33 UTC 2015
On the second suggestion, I tried ldd and found that the undefined
symbol is flagged 'B' in the nm output (.bss section).
This symbol is defined in the shared library, and the output of ghc
-v2 shows that this shared library is
linked without problems on startup of ghci. When the Haskell/FFI
function is run the symbol is undefined.
On Sat, Jun 27, 2015 at 7:26 AM, Dominick Samperi <djsamperi at gmail.com> wrote:
> Thank you, the 'ghci -v2' suggestion was helpful. I now see the
> expected link steps.
> But when I try to run there are unresolved symbols (with ghci 7.10.1;
> everything works fine
> with ghci 7.8.3). This may be due to the fact that
> I have not installed the Haskell Platform with ghci 7.10.1 under
> Fedora 21. I'm using
> the latest released HP with ghci 7.8.3.
> To test ghci 7.10.1 I compiled from source and simply placed the
> resulting bin in
> my PATH. Perhaps this is not enough?
> On Sat, Jun 27, 2015 at 6:01 AM, Sergei Trofimovich <slyich at gmail.com> wrote:
>> On Fri, 26 Jun 2015 23:05:55 -0400
>> Dominick Samperi <djsamperi at gmail.com> wrote:
>>> I'm trying to run code that works with ghci 7.8.3 under ghci 7.10.1
>>> but this fails.
>>> Under 7.8.3, when I run from the shell:
>>> export LD_LIBRARY_PATH=thepath
>>> ghci -lmylib -fno-ghci-sandbox mydriver.hs
>>> I see the usual startup diagnostics along with
>>> Loading object (dynamic) mylib ... done
>>> final link ... done
>>> [1 of 1] Compiling Main
>>> But under 7.10.1, when I do the same, there is no indication that
>>> linking happens, and when I try to run the program there are
>>> undefined references.
>>> I probably missed the post that explains this behavior. Can somebody
>>> provide a pointer to a work-around?
>> There is two separate issues:
>> 1. ghc-7.10 became less chatty when loads libraries.
>> 'ghci -v2' gets it back with a bit of noise
>> 2. looks more like actual problem. is your mylib
>> fully linked against it's depends?
>> LD_LIBRARY_PATH=/the/path ldd -u /path/to/mylib.so
>> LD_LIBRARY_PATH=/the/path ldd /path/to/mylib.so
>> you can also try to inspect LD_DEBUG=help ghci ...
More information about the ghc-devs