Strip global symbol defined in discarded section
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 6 May 2016 16:46:34 +0000 (09:46 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 6 May 2016 16:46:50 +0000 (09:46 -0700)
commit97196564c7e981bab7b968e19b171c5dfcb28c3c
tree4a4394c52a91f1baf906d5541da3d8653bf82991
parent030e823caf4243a3337c2134a4a2f38490d3cf3d
Strip global symbol defined in discarded section

When a global symbol is defined in COMDAT group, we shouldn't leave an
undefined symbol in symbol table when the symbol section is discarded
unless there is a reference to the symbol outside of COMDAT group.

bfd/

PR ld/17550
* elf-bfd.h (elf_link_hash_entry): Update comments for indx,
documenting that indx == -3 if symbol is defined in a discarded
section.
* elflink.c (elf_link_add_object_symbols): Set indx to -3 if
symbol is defined in a discarded section.
(elf_link_output_extsym): Strip a global symbol defined in a
discarded section.

ld/

PR ld/17550
* testsuite/ld-elf/pr17550-1.s: New file.
* testsuite/ld-elf/pr17550-2.s: Likewise.
* testsuite/ld-elf/pr17550-3.s: Likewise.
* testsuite/ld-elf/pr17550-4.s: Likewise.
* testsuite/ld-elf/pr17550a.d: Likewise.
* testsuite/ld-elf/pr17550b.d: Likewise.
* testsuite/ld-elf/pr17550c.d: Likewise.
* testsuite/ld-elf/pr17550d.d: Likewise.
12 files changed:
bfd/ChangeLog
bfd/elf-bfd.h
bfd/elflink.c
ld/ChangeLog
ld/testsuite/ld-elf/pr17550-1.s [new file with mode: 0644]
ld/testsuite/ld-elf/pr17550-2.s [new file with mode: 0644]
ld/testsuite/ld-elf/pr17550-3.s [new file with mode: 0644]
ld/testsuite/ld-elf/pr17550-4.s [new file with mode: 0644]
ld/testsuite/ld-elf/pr17550a.d [new file with mode: 0644]
ld/testsuite/ld-elf/pr17550b.d [new file with mode: 0644]
ld/testsuite/ld-elf/pr17550c.d [new file with mode: 0644]
ld/testsuite/ld-elf/pr17550d.d [new file with mode: 0644]