From 3818d4ab066ee40b976513b247b5da5f20379b66 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 18 Mar 2021 20:46:28 -0700 Subject: elf: Handle .gnu.debuglto_.debug_* sections commit 994b25132814f4c2be93ce53a616a74139c4cf3c Author: H.J. Lu Date: Sun Jan 17 20:01:16 2021 -0800 ld/elf: Ignore section symbols when matching linkonce with comdat ignored section symbols when comparing symbols in 2 sections. Since all references to debugging sections are done with section symbols, symbols in debugging sections are ignored and we fail to match symbols in comdat debugging sections. Also .gnu.debuglto_.debug_* sections aren't treated as debugging sections. 1. Treate .gnu.debuglto_.debug_ section as debugging section unless it is marked with SHF_EXCLUDE. 2. Revert commit 994b2513281 in elf_create_symbuf. 3. Ignore section symbols only when matching non-debugging sections or linkonce section with comdat section. bfd/ PR ld/27590 * elf.c (_bfd_elf_make_section_from_shdr): Treate .gnu.debuglto_.debug_ section as debugging section unless it is marked with SHF_EXCLUDE. * elflink.c (elf_create_symbuf): Revert commit 994b2513281. (bfd_elf_match_symbols_in_sections): Ignore section symbols when matching non-debugging sections or linkonce section with comdat section. ld/ PR ld/27590 * testsuite/ld-elf/pr27590.s: New file. * testsuite/ld-elf/pr27590a.d: Likewise. * testsuite/ld-elf/pr27590b.d: Likewise. * testsuite/ld-i386/i386.exp: Also run ld/27193 test with --reduce-memory-overheads. --- ld/ChangeLog | 9 +++++++++ ld/testsuite/ld-elf/pr27590.s | 6 ++++++ ld/testsuite/ld-elf/pr27590a.d | 10 ++++++++++ ld/testsuite/ld-elf/pr27590b.d | 10 ++++++++++ ld/testsuite/ld-i386/i386.exp | 9 +++++++-- 5 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 ld/testsuite/ld-elf/pr27590.s create mode 100644 ld/testsuite/ld-elf/pr27590a.d create mode 100644 ld/testsuite/ld-elf/pr27590b.d (limited to 'ld') diff --git a/ld/ChangeLog b/ld/ChangeLog index d9b049f..30ac9b4 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,5 +1,14 @@ 2021-03-18 H.J. Lu + PR ld/27590 + * testsuite/ld-elf/pr27590.s: New file. + * testsuite/ld-elf/pr27590a.d: Likewise. + * testsuite/ld-elf/pr27590b.d: Likewise. + * testsuite/ld-i386/i386.exp: Also run ld/27193 test with + --reduce-memory-overheads. + +2021-03-18 H.J. Lu + PR ld/27587 * testsuite/ld-x86-64/pr27587.err: New file. * testsuite/ld-x86-64/pr27587a.obj.bz2: Likewise. diff --git a/ld/testsuite/ld-elf/pr27590.s b/ld/testsuite/ld-elf/pr27590.s new file mode 100644 index 0000000..f7340b4 --- /dev/null +++ b/ld/testsuite/ld-elf/pr27590.s @@ -0,0 +1,6 @@ + .section .gnu.debuglto_.debug_macro,"",%progbits +.Ldebug_macro0: + .dc.a .Ldebug_macro2 + .section .gnu.debuglto_.debug_macro,"G",%progbits,wm4,comdat +.Ldebug_macro2: + .long 0x4 diff --git a/ld/testsuite/ld-elf/pr27590a.d b/ld/testsuite/ld-elf/pr27590a.d new file mode 100644 index 0000000..c24cd89 --- /dev/null +++ b/ld/testsuite/ld-elf/pr27590a.d @@ -0,0 +1,10 @@ +#source: pr27590.s +#ld: -r tmpdir/pr27590.o +#readelf: -rW +#xfail: [is_generic] + +Relocation section '\.rel.*\.gnu\.debuglto_\.debug_macro' at offset 0x[0-9a-z]+ contains 2 entries: +[ \t]+Offset[ \t]+Info[ \t]+Type[ \t]+Sym.* +[0-9a-f]+[ \t]+[0-9a-f]+[ \t]+R_.*[ \t]+[0]+[ \t]+\.gnu\.debuglto_\.debug_macro.* +[0-9a-f]+[ \t]+[0-9a-f]+[ \t]+R_.*[ \t]+[0]+[ \t]+\.gnu\.debuglto_\.debug_macro.* +#pass diff --git a/ld/testsuite/ld-elf/pr27590b.d b/ld/testsuite/ld-elf/pr27590b.d new file mode 100644 index 0000000..68b198b --- /dev/null +++ b/ld/testsuite/ld-elf/pr27590b.d @@ -0,0 +1,10 @@ +#source: pr27590.s +#ld: -r tmpdir/pr27590.o --reduce-memory-overheads +#readelf: -rW +#xfail: [is_generic] + +Relocation section '\.rel.*\.gnu\.debuglto_\.debug_macro' at offset 0x[0-9a-z]+ contains 2 entries: +[ \t]+Offset[ \t]+Info[ \t]+Type[ \t]+Sym.* +[0-9a-f]+[ \t]+[0-9a-f]+[ \t]+R_.*[ \t]+[0]+[ \t]+\.gnu\.debuglto_\.debug_macro.* +[0-9a-f]+[ \t]+[0-9a-f]+[ \t]+R_.*[ \t]+[0]+[ \t]+\.gnu\.debuglto_\.debug_macro.* +#pass diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index d9075bf..6ad69a8 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -245,11 +245,16 @@ set i386tests { "-melf_i386 -shared -Bsymbolic -z notext" "" "--32 -mx86-used-note=yes" { pr19827a.S } {{readelf {-rW} pr19827.rd}} "pr19827.so"} - {"Build pr27193.so" + {"Build pr27193a.so" "-melf_i386 -shared" "" "--32" { pr27193a.o.bz2 pr27193b.s } - {{objdump {-dw} pr27193.dd}} "pr27193.so"} + {{objdump {-dw} pr27193.dd}} "pr27193a.so"} + {"Build pr27193b.so" + "-melf_i386 -shared --reduce-memory-overheads" "" + "--32" + { pr27193a.o.bz2 pr27193b.s } + {{objdump {-dw} pr27193.dd}} "pr27193b.so"} } proc iamcu_tests {} { -- cgit v1.1