Is it possible to directly call a function in a dlopen library

Brian Dessent brian@dessent.net
Sat Dec 23 13:03:00 GMT 2006


andy wang wrote:

> So maybe it is possible on Linux? I asked this question because I find
> this kind of logic in asterisk! the main program will load the .so
> using dlopen. i.e. module1.so and module2.so, and I notice that
> module2.so will call directly (without dlsym, just func1( ... ) which
> is defined in module1.so). I am very confused :-(. Is it because it
> used RTLD_GLOBAL?

Yes, ELF is a completely different world than PE/COFF.  ELF has many
capabilities that don't exist in PE/COFF, like lazy binding.  This is
essentially what the autoload.cc technique is reimplementing, a sort of
ersatz PLT.  Except on ELF this is provided by the operating system (or
more precisely the libc's dynamic linker ld.so) so there is no need for
the application to worry about it.  And programs that rely on this are
non-portable, as Win32 is not the only platform with this restriction,
although it's certainly the most common.

Brian

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list