Package: libc6 Version: 2.3.2.ds1-11 It appears that, given: library libbar, providing version BAR1 of symbol bar_sym1; library libquux, linked against libbar and using (version BAR1 of) bar_sym1; and program foo, linked with -rdynamic, providing unversioned symbol bar_sym1, and dlopen()ing libquux, the versioned reference to bar_sym1 from libquux will be resolved using the unversioned symbol in foo, instead of the versioned symbol in libbar. This problem also manifests if the unversioned bar_sym1 symbol is provided by a library that was dlopen()ed prior to dlopen()ing libquux; if foo is linked against libquux rather than dlopen()ing it; and, presumably, if foo is linked against both a lib (libbar0) providing the unversioned symbol and against libquux, but libbar0 is opened first. I had somehow reached the conclusion that this was documented and deliberate behavior, but Andrew Suffield <asuffield@debian.org> indicates otherwise and asked that I file a bug. The attached tarball contains a small test case that can be used to reproduce the problem, showing that unversioned symbols are allowed to satisfy unresolved references to versioned symbols. -- Steve Langasek postmodern programmer
Attachment:
dlopentest.tgz
Description: GNU Unix tar archive
Attachment:
signature.asc
Description: Digital signature