dlsym can't use handle returned by dlopen?
Markus Hoenicka
markus.hoenicka at mhoenicka.de
Mon Nov 17 15:13:35 PST 2008
Don't mean to nag, but is there any news on this?
regards,
Markus
Markus Hoenicka writes:
> Jeremy Chadwick writes:
> > As promised: http://www.malkavian.com/~jdc/myprog.tar.gz
> >
>
> This test program indeed works as expected. However, this doesn't
> quite reflect the situation in libdbi. I took your files and modified
> them accordingly, see:
>
> http://libdbi.sourceforge.net/downloads/dlsymtest.tar.gz
>
> To run the test use:
>
> LD_LIBRARY_PATH=. ./myprog
>
> We need to set the environment variable to let the linker pick up a
> shared object that gmake builds.
>
> myprog.c now just calls a function which is provided in libmylib
> (built from mylib.c). The latter file does most of what your test case
> did in myprog.c. The second major change is that myshared.so is linked
> against libmysqlclient (just like a libdbi database driver is linked
> against the client library). myfunc now calls a MySQL function to show
> that it is accessible (if you don't have libmysqlclient handy, you can
> replace it with whatever function from some .so is convenient)
>
> Finally, libmylib tries to obtain a pointer to that MySQL function by
> means of a dlsym call. This new dlsym call, in contrast to the existing
> one that acesses myfunc in myshared.so, indeed fails:
>
> myint = 0xdeadbeef (3735928559)
> ==> entered myfunc()
> ==> double = 3.141590
> ==>mysql client version is 50051
> ==> exiting myfunc()
> dlsym() in shared lib failed: Undefined symbol
> "mysql_get_client_version"
>
> So, to make the problem clear again: while dlsym works when accessing
> symbols in dlopen()ed objects, it fails to access symbols which are
> linked into such an object if you use the handle returned by
> dlopen(). This is different from other OSes.
>
> regards,
> Markus
>
>
> --
> Markus Hoenicka
> markus.hoenicka at cats.de
> (Spam-protected email: replace the quadrupeds with "mhoenicka")
> http://www.mhoenicka.de
> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "freebsd-questions-unsubscribe at freebsd.org"
--
Markus Hoenicka
markus.hoenicka at cats.de
(Spam-protected email: replace the quadrupeds with "mhoenicka")
http://www.mhoenicka.de
More information about the freebsd-questions
mailing list