tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

dlopen(3) and symbol conflicts



Hello

I use dlopen(3) to load a api.so, which depends on libglustefs.so. The
later embeds its own uuid_compare symbol which is binary incompatible
with NetBSD's libc uuid_compare. The thing explodes because when I call
uuid_compare(), the libc version is used insteadof libglusterfs.so's
one.

The problem is specific to dlopen(3): when linking at build time, libc's
uuid_compare is overriden and everything goes fine. Is it a problem on
how api.so is linked? Or how dlopen() is invoked? Or a bug in dlopen(3)?

$ ldd api.so
        -lgfapi.0 => /autobuild/install/lib/libgfapi.so.0
        -lgfrpc.0 => /autobuild/install/lib/libgfrpc.so.0
        -lexecinfo.0 => /usr/lib/libexecinfo.so.0
        -lelf.1 => /usr/lib/libelf.so.1
        -lgcc_s.1 => /usr/lib/libgcc_s.so.1
        -lc.12 => /usr/lib/libc.so.12
        -lglusterfs.0 => /autobuild/install/lib/libglusterfs.so.0
        -lz.1 => /usr/lib/libz.so.1
        -lrt.1 => /usr/lib/librt.so.1
        -lintl.1 => /usr/lib/libintl.so.1
        -lpthread.1 => /usr/lib/libpthread.so.1
        -lcrypto.8 => /usr/lib/libcrypto.so.8
        -lcrypt.1 => /lib/libcrypt.so.1
        -lgfxdr.0 => /autobuild/install/lib/libgfxdr.so.0

$ nm /autobuild/install/lib/libglusterfs.so|grep uuid_compare 
00067c20 T uuid_compare



-- 
Emmanuel Dreyfus
http://hcpnet.free.fr/pubz
manu%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index