tech-userlevel archive

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

dlopen(3) and symbol conflicts


I use dlopen(3) to load a, which depends on 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's

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 is linked? Or how dlopen() is invoked? Or a bug in dlopen(3)?

$ ldd
        -lgfapi.0 => /autobuild/install/lib/
        -lgfrpc.0 => /autobuild/install/lib/
        -lexecinfo.0 => /usr/lib/
        -lelf.1 => /usr/lib/
        -lgcc_s.1 => /usr/lib/
        -lc.12 => /usr/lib/
        -lglusterfs.0 => /autobuild/install/lib/
        -lz.1 => /usr/lib/
        -lrt.1 => /usr/lib/
        -lintl.1 => /usr/lib/
        -lpthread.1 => /usr/lib/
        -lcrypto.8 => /usr/lib/
        -lcrypt.1 => /lib/
        -lgfxdr.0 => /autobuild/install/lib/

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

Emmanuel Dreyfus

Home | Main Index | Thread Index | Old Index