GC: Also check the local debug definition section
Extend
commit b7c871edcd
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.
This commit is contained in:
parent
bf48520113
commit
9e223787a4
@ -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-03-13 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 22113
|
||||
|
@ -12802,20 +12802,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;
|
||||
}
|
||||
|
@ -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-03-14 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* testsuite/ld-gc/gc.exp: Fix a typo: $LFLAGS -> $LDFLAGS.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user