Bug 1764231

Summary: glibc: ld.so: Support moving versioned symbols between sonames [BZ #24741]
Product: Red Hat Enterprise Linux 8 Reporter: Carlos O'Donell <codonell>
Component: glibcAssignee: Carlos O'Donell <codonell>
Status: CLOSED ERRATA QA Contact: qe-baseos-tools-bugs
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 8.2CC: ashankar, codonell, dj, fweimer, mnewsome, pfrankli, skolosov
Target Milestone: rcKeywords: Patch, Triaged
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glibc-2.28-91 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-04-28 16:50:19 UTC Type: Feature Request
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1738779, 1746918, 1748197    

Description Carlos O'Donell 2019-10-22 13:51:30 UTC
Enable future work where we can move versioned symbols from one DSO to another.

commit f0b2132b35248c1f4a80f62a2c38cddcc802aa8c
Author: Florian Weimer <fweimer>
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,
    either.

Please backport patch to Fedora (if required):
Fedora 31
Fedora 30
Fedora 29

Comment 1 Carlos O'Donell 2019-10-25 02:59:28 UTC
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.

Comment 2 Carlos O'Donell 2019-11-15 18:29:15 UTC
*** Bug 1748194 has been marked as a duplicate of this bug. ***

Comment 5 Sergey Kolosov 2020-02-17 08:06:12 UTC
Verified with glibc tests: elf/tst-sonamemove-link, elf/tst-sonamemove-dlopen.

Comment 7 errata-xmlrpc 2020-04-28 16:50:19 UTC
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.

https://access.redhat.com/errata/RHSA-2020:1828