]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
GC: Also check the local debug definition section
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 14 Mar 2018 11:23:24 +0000 (04:23 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 14 Mar 2018 12:19:38 +0000 (05:19 -0700)
Extend

commit b7c871edcd83ccdc5fcd8148a7f433efd6b52255
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed May 17 07:57:15 2017 -0700

    Mark debug sections referenced by kept debug sections

to handle the local debug definition section.

bfd/

PR ld/20882
* elflink.c (elf_gc_mark_debug_section): Also check the local
debug definition section.

ld/

PR ld/20882
* testsuite/ld-gc/pr20882.d: Also dump and check .debug_abbrev
section.
* testsuite/ld-gc/pr20882b.s: Add .debug_abbrev section.

(cherry picked from commit 9e223787a474c672c5f1cfd4574857241ae4eafa)

bfd/ChangeLog
bfd/elflink.c
ld/ChangeLog
ld/testsuite/ld-gc/pr20882.d
ld/testsuite/ld-gc/pr20882b.s

index de354fc50bec55cb48a993ffbc44eadbc7ae7afb..6d1a9678a47adb217f7353cf3be9a9754f33736a 100644 (file)
@@ -1,3 +1,9 @@
+2018-03-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/20882
+       * elflink.c (elf_gc_mark_debug_section): Also check the local
+       debug definition section.
+
 2018-02-28  Jim Wilson  <jimw@sifive.com>
 
        Import patch from mainline:
index e3751fa122cf936a3c277ddd36631a5b0d2647f2..72aa3ac9c2db84a824e9e37aba0f12f47bcbdc26 100644 (file)
@@ -12785,20 +12785,31 @@ _bfd_elf_gc_mark_hook (asection *sec,
   return NULL;
 }
 
-/* Return the global debug definition section.  */
+/* Return the debug definition section.  */
 
 static asection *
 elf_gc_mark_debug_section (asection *sec ATTRIBUTE_UNUSED,
                           struct bfd_link_info *info ATTRIBUTE_UNUSED,
                           Elf_Internal_Rela *rel ATTRIBUTE_UNUSED,
                           struct elf_link_hash_entry *h,
-                          Elf_Internal_Sym *sym ATTRIBUTE_UNUSED)
+                          Elf_Internal_Sym *sym)
 {
-  if (h != NULL
-      && (h->root.type == bfd_link_hash_defined
-         || h->root.type == bfd_link_hash_defweak)
-      && (h->root.u.def.section->flags & SEC_DEBUGGING) != 0)
-    return h->root.u.def.section;
+  if (h != NULL)
+    {
+      /* Return the global debug definition section.  */
+      if ((h->root.type == bfd_link_hash_defined
+          || h->root.type == bfd_link_hash_defweak)
+         && (h->root.u.def.section->flags & SEC_DEBUGGING) != 0)
+       return h->root.u.def.section;
+    }
+  else
+    {
+      /* Return the local debug definition section.  */
+      asection *isec = bfd_section_from_elf_index (sec->owner,
+                                                  sym->st_shndx);
+      if ((isec->flags & SEC_DEBUGGING) != 0)
+       return isec;
+    }
 
   return NULL;
 }
index a4b3639ce60ef75d530488d2a1ea87834df39dfa..b5cf58ace2a3799aad37988eca49f570b12d206d 100644 (file)
@@ -1,3 +1,10 @@
+2018-03-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/20882
+       * testsuite/ld-gc/pr20882.d: Also dump and check .debug_abbrev
+       section.
+       * testsuite/ld-gc/pr20882b.s: Add .debug_abbrev section.
+
 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
 
        * testsuite/ld-elf/pr22450.d: Remove reference to SPARC64.
index dd388c51c960aed06f5b1db6c41087dce09b2896..1d68d05f38b9113d34ddbf54436be84a2e772f86 100644 (file)
@@ -3,7 +3,10 @@
 #source: pr20882b.s
 #source: pr20882c.s
 #ld: --gc-sections -e main
-#readelf: -x .debug_info
+#readelf: -x .debug_info -x .debug_abbrev
 
-#...
-  0x0+ (0a000000 00000000 |00000000 0000000a |06000000 |00000006 |0400|0004)28 .*
+Hex dump of section '\.debug_info':
+  0x0+ .*
+
+Hex dump of section '\.debug_abbrev':
+  0x0+ 61626364 +abcd
index ea0cf2e4adad95812587ea0afae05f5ef991577f..baabf557793cda862a590fdc6a836e9c5d981537 100644 (file)
@@ -2,4 +2,11 @@
        .hidden t.c.4903c230
        .globl t.c.4903c230
 t.c.4903c230:
-       .byte 0x28
+       .dc.a  .Ldebug_abbrev0
+
+       .section .debug_abbrev,"",%progbits
+.Ldebug_abbrev0:
+       .byte 0x61
+       .byte 0x62
+       .byte 0x63
+       .byte 0x64