HomeFreeBSD

objcopy: restore behaviour required by GCC's build

Description

objcopy: restore behaviour required by GCC's build

In r339350 filter_reloc() was removed, to fix the case of stripping
statically linked binaries with relocations (which may come from ifunc
use, for example). As a side effect this changed the behaviour when
stripping object files - the output was broken both before and after
r339350, in different ways. Unfortunately GCC's build process relies
on the previous behaviour, so:

  • Revert r339350, restoring filter_reloc().
  • Fix an unitialized variable use (commited as r3638 in ELF Tool Chain).
  • Change filter_reloc() to omit relocations referencing removed symbols, while retaining relocations with no symbol reference.
  • Retain the entire relocation section if it references the dynamic symbol table (fix from kaiw in D17596).

PR: 232176
Reported by: antoine
Reviewed by: kaiw
MFC with: r339350
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D17596

Details

Provenance
emasteAuthored on
Reviewer
kaiw
Differential Revision
D17596: objcopy: restore behaviour required by GCC's build
Parents
rS339450: A single comma was missing to separate the "see also" items in
Branches
Unknown
Tags
Unknown