[Expat-discuss] Re: Conflict with two expat shared libraries
Karl Waclawek
karl at waclawek.net
Tue Oct 19 20:02:34 CEST 2004
----- Original Message -----
From: "Steinar Bang" <sb at dod.no>
Sent: Tuesday, October 19, 2004 1:54 PM
>>>>>> "Karl Waclawek" <karl at waclawek.net>:
>
>> However, should it not work anyway?
>> When the ELF library is loaded, aren't the links to these functiones
>> like XmlGetUtf16InternalEncoding resolved already (at compile time),
>> at least for those calls that are internal to the library?
>
> Nope. But the -Bsymbolic flag effectively achives this effect (though
> in a different manner, see below).
>
>> Or are they still left open for late binding?
>
> Yes.
>
>> Would that late binding then happen when dlopen() is called, or even
>> later, when dlsym() is called?
>
> That's what I experienced.
I did a quick readup, and I found that contray to Windows Dlls
ELF libraries share a global namespace for all their symbols.
This together with late binding for internal links obviosuly explains it.
> However, using the -Bsymbolic flag when creating the shared library
> solved my problem. What it does (for listing googleable terms), is to
> is set the DT_SYMBOLIC dynamic entry. This is interpreted to search
> the module itself, and its immediate dependencies, instead of doing a
> global search.
I saw that flag mentioned as well. Supposedly it is not well supported.
Hhmm, would it not be better then to find a way to control
which symbols are exported from within Expat? In other words,
isn't there a design issue with Expat?
Karl
More information about the Expat-discuss
mailing list