tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: dlopen(3) and symbol conflicts
On Thu, Mar 19, 2015 at 09:44:12AM -0400, Greg Troxel wrote:
> My not-really-thinking reaction is that having a function in any user
> program that has the same name as a function in libc is asking for
> trouble and should be avoided.
This is why libc symbol are weaks and are meant to be overriden by
the ones with same names from user libraries and programs.
In the case I face, the problem is with uuid_compare. NetBSD and Linux
have source and binary incompatible versions. A program like glusterfs
that uses UUID can work this around by providing its own implementation
(which is the Linux version). The result is that a uuid_compare() call
in glusterfs goes to libglusterfs's uuid_compare() and not libc
uuid_compare(). It works fine for any program linked with -lglusterfs
because libc symbols are weak.
However if we throw dlopen() into the equation, it breaks, libc weak
symbols are not treated as such anymore.
--
Emmanuel Dreyfus
manu%netbsd.org@localhost
Home |
Main Index |
Thread Index |
Old Index