--- binutils.orig/bfd/elflink.c 2018-03-14 10:14:49.729271271 +0000 +++ binutils-2.30/bfd/elflink.c 2018-03-14 10:15:15.748967793 +0000 @@ -12785,7 +12785,7 @@ _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, @@ -12794,11 +12794,22 @@ elf_gc_mark_debug_section (asection *sec struct elf_link_hash_entry *h, Elf_Internal_Sym *sym ATTRIBUTE_UNUSED) { - 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; }