Hello Simon,
* Simon White wrote on Tue, Nov 06, 2007 at 04:03:48PM CET:
>
> I have some modules with the same exported interface. All modules are
> built to hide all symbols by default with only the public ones being
> marked as __attribute__((visibility("default"))). They are designed
> to be drop in replacements, however sometimes more than one of these
> modules may need to be loaded at he same time.
>
> I've successfully lt_dlopen'ed multiple libraries and used lt_dlsym to
> resolve the names in each. Calling via the returned pointers works as
> expected.
>
> However if one of those modules internally calls a function that is
> also marked as being exported it does not necessarily call the
> function in its own library. Depending on order it may call the
> function that exists in the other library instead. Note that both
> modules are only manually loaded and neither are loading symbols from
> each other.
>
> Is this expected behaviour and/or is there a way to stop it?
The libltdl from Libtool HEAD by default dlopen's with RTLD_LOCAL
(actually, it's configurable), unlike 1.5.x which used RTLD_GLOBAL.
So I'm afraid you'll have to use that or patch your 1.5.x.
Cheers,
Ralf
_______________________________________________
http://lists.gnu.org/mailman/listinfo/libtool