aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2021-03-18 20:46:28 -0700
committerH.J. Lu <hjl.tools@gmail.com>2021-03-18 20:57:02 -0700
commit3818d4ab066ee40b976513b247b5da5f20379b66 (patch)
treeebb68ff9dea8c35f68178204ce3de18989126655 /ld
parent51f6e7a9f4210aed0f8156c1d2e348de6f96f37d (diff)
downloadgdb-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/ChangeLog9
-rw-r--r--ld/testsuite/ld-elf/pr27590.s6
-rw-r--r--ld/testsuite/ld-elf/pr27590a.d10
-rw-r--r--ld/testsuite/ld-elf/pr27590b.d10
-rw-r--r--ld/testsuite/ld-i386/i386.exp9
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 {} {