ld/elf: Ignore section symbols when matching linkonce with comdat
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 18 Jan 2021 04:01:16 +0000 (20:01 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 18 Jan 2021 04:01:30 +0000 (20:01 -0800)
commit994b25132814f4c2be93ce53a616a74139c4cf3c
tree1b04e54141f4a3bc8179260b36ebf4bd480521cb
parent25294ff049728a081c703b68f848d2cc04eef483
ld/elf: Ignore section symbols when matching linkonce with comdat

When deciding if a single member comdat group section in file FOO should
be discarded by a linkonce section in file BAR, we check if 2 sections
define the same set of local and global symbols.  When only one of the
files doesn't contain the unused section symbols in the symbol table,
such as object files generated by clang or GNU assembler with

commit d1bcae833b32f1408485ce69f844dcd7ded093a8
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Thu Jan 7 06:42:00 2021 -0800

    ELF: Don't generate unused section symbols

the check will fail since one file has the extra unused section symbols.
We should ignore both undefined and section symbols in the symbol table
when making such a decision.

bfd/

PR ld/27193
* elflink.c (elf_create_symbuf): Also ignore section symbols.

ld/

PR ld/27193
* testsuite/ld-i386/i386.exp: Run PR ld/27193 test.
* testsuite/ld-i386/pr27193.dd: New file.
* testsuite/ld-i386/pr27193a.o.bz2: Likewise.
* testsuite/ld-i386/pr27193b.s: Likewise.
bfd/ChangeLog
bfd/elflink.c
ld/ChangeLog
ld/testsuite/ld-i386/i386.exp
ld/testsuite/ld-i386/pr27193.dd [new file with mode: 0644]
ld/testsuite/ld-i386/pr27193a.o.bz2 [new file with mode: 0644]
ld/testsuite/ld-i386/pr27193b.s [new file with mode: 0644]