[Bug 232176] elftoolchain elfcopy/strip incorrectly strips relocations
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Sat Oct 13 21:26:31 UTC 2018
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=232176
--- Comment #4 from commit-hook at freebsd.org ---
A commit references this bug:
Author: emaste
Date: Sat Oct 13 21:26:07 UTC 2018
New revision: 339350
URL: https://svnweb.freebsd.org/changeset/base/339350
Log:
elfcopy: delete filter_reloc, it is broken and unnecessary
elfcopy contained logic to filter individual relocations in STRIP_ALL
mode. However, this is not valid; relocations emitted by the linker are
required, unless they apply to an entire section being removed (which is
handled by other logic in elfcopy).
Note that filter_reloc was also buggy: for RELA relocation sections it
operated on uninitialized rel.r_info resulting in invalid operation.
The logic most likely needs to be inverted: instead of removing
relocations because their associated symbols are being removed, we must
keep symbols referenced by relocations. That said, in practice we do
not encounter this code path today: objects being stripped are either
dynamically linked binaries which retain .dynsym, or static binaries
with no relocations.
Just remove filter_reloc. This fixes certain cases including statically
linked binaries containing ifuncs. Stripping binaries with relocations
referencing removed symbols was already broken, and after this change
may still be broken in a different way.
PR: 232176
Reviewed by: kaiw, kib, markj
Approved by: re (rgrimes)
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D17519
Changes:
head/contrib/elftoolchain/elfcopy/sections.c
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list