[Bug 1978129] Re: Incomplete support for DT_RELR relocations on Ubuntu 22.04
Launchpad Bug Tracker
1978129 at bugs.launchpad.net
Mon Oct 24 20:59:43 UTC 2022
This bug was fixed in the package binutils - 2.38-4ubuntu2
---------------
binutils (2.38-4ubuntu2) jammy-proposed; urgency=medium
* SRU: LP: #1982105. Update from the binutils 2.38 branch:
- IBM zSystems: Add support for z16 as CPU name. LP: #1974115.
- Fix PR libctf/29242, linking together multiple objects derived from
the same source.
- PowerPC64: fix assertion in ppc_build_one_stub with -Os code.
- Fix PR ld/29216, x86: Properly handle IFUNC function pointer reference.
- AArch64: Enable FP16 by default for Armv9-A.
- Fix PR binutils/29142, segv in ar with empty archive and libdeps
specified.
- M68K: avoid quadratic slowdlow in label alignment check.
- Adjust ld ctf test for 32-bit targets.
binutils (2.38-4ubuntu1) kinetic; urgency=medium
* Merge with Debian; remaining changes:
- Build from upstream sources.
binutils (2.38-4) unstable; urgency=medium
* Update from the binutils 2.38 branch:
- Fix PR ld/29087, x86: invalid relocation against protected symbol.
- s390: Add DT_JMPREL pointing to .rela.[i]plt with static-pie.
- Fix PR ld/22263, s390: Avoid dynamic TLS relocs in PIE.
- Fix PR libctf/28933: ld: diagnose corrupted CTF header cth_strlen.
- Fix PR 28885.
- PR28959, obdump doesn't disassemble mftb instruction.
- PowerPC64 DT_RELR relative reloc addresses. LP: #1978129.
* Fix reproducible builds: source tarball embeds build user and group.
Closes: #1010238.
-- Matthias Klose <doko at ubuntu.com> Tue, 19 Jul 2022 12:17:47 +0200
** Changed in: binutils (Ubuntu Jammy)
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to binutils in Ubuntu.
https://bugs.launchpad.net/bugs/1978129
Title:
Incomplete support for DT_RELR relocations on Ubuntu 22.04
Status in The Ubuntu-power-systems project:
Fix Committed
Status in binutils package in Ubuntu:
Fix Released
Status in binutils source package in Jammy:
Fix Released
Status in binutils source package in Kinetic:
Fix Released
Bug description:
SRU Justification:
==================
[Impact]
* The latest glibc uses DT_RELR relocations,
but it turned out that the linker support is still incomplete,
as of binutils-2.38-3ubuntu1 on Ubuntu 22.04.
* It lacks the fix/commit 'PowerPC64 DT_RELR relative reloc
addresses'.
* As discussed at the binutils mailing list:
https://sourceware.org/pipermail/binutils/2022-March/119921.html
this fixes several (glibc) regressions (from 574 to 17).
* Instead of stashing r_offset final address calculations in
ppc64_elf_size_stubs for use by ppc64_elf_build_stubs,
section/offset pairs need to be kept.
[Test Plan]
* Build and run the official (make) check:
git clone git://sourceware.org/git/glibc.git
mkdir build && cd build
../glibc/configure --prefix=/usr && make -j8 && make check
[Where problems could occur]
* In case relr_addr is not replaced everywhere it's deletion in
elf64-ppc.c can cause problems, which will mainly occur at build time.
* The relr section/offset array may lead to problems if the array is not
properly handled or used.
* The rewrite of append_relr_off may cause issues due to wrong allocs
erroneous pointer arithmetic or array handling.
* The entirely new sort_relr function may introduce new code issues
or performance issues.
* The adjustments of ppc64_elf_size_stubs and ppc64_elf_build_stubs to
the new relr code could be done wrong
in which case the linker support is still not working.
* But the patch was discussed at the upstream mailing list:
https://sourceware.org/pipermail/binutils/2022-March/thread.html#119921
* and is limited to ppc, and even to file 'elf64-ppc.c'.
__________
== Comment: #0 - Matheus Salgueiro Castanho <mscastanho at ibm.com> - 2022-06-09 09:32:29 ==
---Problem Description---
Latest glibc uses DT_RELR relocations, but linker support is incomplete as of binutils-2.38-3ubuntu1 on Ubuntu 22.04. It lacks the following fix integrated into the upstream 2.38 branch:
PowerPC64 DT_RELR relative reloc addresses
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=e4a35c7319628045302d4c597cb27f1b0a08c858
As mentioned in the binutils mailing list when this patch was discussed, this fixes several glibc regressions:
https://sourceware.org/pipermail/binutils/2022-March/119921.html
Contact Information = Matheus Castanho/mscastanho at ibm.com
---uname output---
N/A
Machine Type = N/A
---Debugger---
A debugger is not configured
---Steps to Reproduce---
git clone git://sourceware.org/git/glibc.git
mkdir build && cd build
../glibc/configure --prefix=/usr && make -j8 && make check
Userspace tool common name: binutils
The userspace tool has the following bit modes: 64-bit
Userspace rpm: binutils
Userspace tool obtained from project website: na
*Additional Instructions for Matheus Castanho/mscastanho at ibm.com:
-Attach ltrace and strace of userspace application.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-power-systems/+bug/1978129/+subscriptions
More information about the foundations-bugs
mailing list