work around libraries with versioned symbols in dynamic linker
authorRich Felker <dalias@aerifal.cx>
Thu, 8 Aug 2013 20:10:35 +0000 (16:10 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 8 Aug 2013 20:10:35 +0000 (16:10 -0400)
commit72482f9020e4362b8d35849df6dca49f26d24c54
tree7a635929d2df888adfcf47d98e91ff0ed06aa332
parente28c2ecae43468e2abf92957d3622dc830d90ada
work around libraries with versioned symbols in dynamic linker

this commit does not add versioning support; it merely fixes incorrect
lookups of symbols in libraries that contain versioned symbols.
previously, the version information was completely ignored, and
empirically this seems to have resulted in the oldest version being
chosen, but I am uncertain if that behavior was even reliable.

the new behavior being introduced is to completely ignore symbols
which are marked "hidden" (this seems to be the confusing nomenclature
for non-current-version) when versioning is present. this should solve
all problems related to libraries with symbol versioning as long as
all binaries involved are up-to-date (compatible with the
latest-version symbols), and it's the needed behavior for dlsym under
all circumstances.
src/ldso/dynlink.c