diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2021-03-18 20:46:28 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2021-03-18 20:57:02 -0700 |
commit | 3818d4ab066ee40b976513b247b5da5f20379b66 (patch) | |
tree | ebb68ff9dea8c35f68178204ce3de18989126655 /ld | |
parent | 51f6e7a9f4210aed0f8156c1d2e348de6f96f37d (diff) | |
download | gdb-3818d4ab066ee40b976513b247b5da5f20379b66.zip gdb-3818d4ab066ee40b976513b247b5da5f20379b66.tar.gz gdb-3818d4ab066ee40b976513b247b5da5f20379b66.tar.bz2 |
elf: Handle .gnu.debuglto_.debug_* sections
commit 994b25132814f4c2be93ce53a616a74139c4cf3c
Author: H.J. Lu <hjl.tools@gmail.com>
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.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 9 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr27590.s | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr27590a.d | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr27590b.d | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/i386.exp | 9 |
5 files changed, 42 insertions, 2 deletions
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 <hongjiu.lu@intel.com> + 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 <hongjiu.lu@intel.com> + 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 {} { |