Backport 22782 fix to 2.30 branch?
Roland McGrath via binutils
binutils@sourceware.org
Sat Apr 21 02:18:00 GMT 2018
https://sourceware.org/bugzilla/show_bug.cgi?id=22782 is biting me in
trying to update to 2.30.
In my case (which I'm not sure how to reproduce in a small case off
hand), this bug was not present in 2.27 or 2.28 but is present in 2.29
and 2.30, and fixed on trunk.
commit cd04836359da82ae1dc67e5a05565536f4427b51 is HJ's fix on trunk.
An unattended cherry-pick onto 2.30 branch applied cleanly and fixed
the regression for me.
It caused no check-ld failures for --target=x86_64-elf. The log entry
is below for reference.
Can we put this onto the 2.30 branch?
Thanks,
Roland
commit cd04836359da82ae1dc67e5a05565536f4427b51
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Mon Feb 5 08:38:16 2018 -0800
x86: Remove the unused _GLOBAL_OFFSET_TABLE_
Since _GLOBAL_OFFSET_TABLE_ may be referenced implicitly on x86,
checking ref_regular_nonweak leaves the unused _GLOBAL_OFFSET_TABLE_
in output. This patch checks explicit GOT references instead.
ld-i386/discarded1.s and ld-x86-64/discarded1.s are updated to avoid
linker optimization which removes GOT references.
bfd/
PR ld/22782
* elf32-i386.c (elf_i386_check_relocs): Set got_referenced if
_GLOBAL_OFFSET_TABLE_ is referenced or GOT is needed to resolve
undefined weak symbol to 0.
* elf64-x86-64.c (elf_x86_64_check_relocs): Set got_referenced
if _GLOBAL_OFFSET_TABLE_ is referenced.
* elfxx-x86.c (_bfd_x86_elf_size_dynamic_sections): Check
got_referenced instead of ref_regular_nonweak. Remove the
unused _GLOBAL_OFFSET_TABLE_ from symbol table.
* elfxx-x86.h (elf_x86_link_hash_table): Add got_referenced.
ld/
PR ld/22782
* testsuite/ld-i386/discarded1.s: Replace mov with div.
* testsuite/ld-x86-64/discarded1.s: Likewise.
* testsuite/ld-i386/i386.exp: Run pr22782.
* testsuite/ld-i386/load1-nacl.d: Updated for removing
_GLOBAL_OFFSET_TABLE_ from output.
* testsuite/ld-i386/load1.d: Likewise.
* testsuite/ld-x86-64/load1a-nacl.d: Likewise.
* testsuite/ld-x86-64/load1a.d: Likewise.
* testsuite/ld-x86-64/load1b-nacl.d: Likewise.
* testsuite/ld-x86-64/load1b.d: Likewise.
* testsuite/ld-i386/pr22782.d: New file.
* testsuite/ld-i386/pr22782.s: Likewise.
* testsuite/ld-x86-64/pr22782.s: Likewise.
* testsuite/ld-x86-64/pr22782a.d: Likewise.
* testsuite/ld-x86-64/pr22782b.d: Likewise.
* testsuite/ld-x86-64/x86-64.exp: Run pr22782a and pr22782b.
More information about the Binutils
mailing list