Bug 1764231 - glibc: ld.so: Support moving versioned symbols between sonames [BZ #24741]
Summary: glibc: ld.so: Support moving versioned symbols between sonames [BZ #24741]
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: glibc
Version: 8.2
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: 8.0
Assignee: Carlos O'Donell
QA Contact: qe-baseos-tools-bugs
URL:
Whiteboard:
: 1748194 (view as bug list)
Depends On:
Blocks: 1746918 1738779 1748197
TreeView+ depends on / blocked
 
Reported: 2019-10-22 13:51 UTC by Carlos O'Donell
Modified: 2020-04-28 16:50 UTC (History)
7 users (show)

Fixed In Version: glibc-2.28-91
Doc Type: No Doc Update
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-04-28 16:50:19 UTC
Type: Feature Request
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2020:1828 None None None 2020-04-28 16:50:46 UTC
Sourceware 24741 P2 RESOLVED ld.so should not require that a versioned symbol is always implemented in the same library 2020-03-20 18:18:17 UTC

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@redhat.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,
    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


Note You need to log in before you can comment on or make changes to this bug.