Enable future work where we can move versioned symbols from one DSO to another.
Author: Florian Weimer <email@example.com>
Date: Fri Jun 28 10:12:50 2019 +0200
ld.so: Support moving versioned symbols between sonames [BZ #24741]
This change should be fully backwards-compatible because the old
code aborted the load if a soname mismatch was encountered
(instead of searching further for a matching symbol). This means
that no different symbols are found.
The soname check was explicitly disabled for the skip_map != NULL
case. However, this only happens with dl(v)sym and RTLD_NEXT,
and those lookups do not come with a verneed entry that could be used
for the check.
The error check was already explicitly disabled for the skip_map !=
NULL case, that is, when dl(v)sym was called with RTLD_NEXT. But
_dl_vsym always sets filename in the struct r_found_version argument
to NULL, so the check was not active anyway. This means that
symbol lookup results for the skip_map != NULL case do not change,
Please backport patch to Fedora (if required):
Not required on f31. (Already upstream)
Not required on f30. (Already backported by Florian in 34bc6caeb760409bbfc6e9e04ce02d62255a8557).
Required for f29. Backported it just for the sake of having it there for parity.
Builds in progress.
*** Bug 1748194 has been marked as a duplicate of this bug. ***
Verified with glibc tests: elf/tst-sonamemove-link, elf/tst-sonamemove-dlopen.
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.