DWARF LTO debug sections vs. .stabstr
The exception for debug sections in clearing SEC_EXCLUDE when relocatable was really for one specific debug section, so let's make it do just that. bfd/ PR 27590 * elf.c (_bfd_elf_make_section_from_shdr): Remove SHF_EXCLUDE test for .gnu.debuglto*. ld/ PR 27590 * ldlang.c (lang_gc_sections): Clear SEC_EXCLUDE when relocatable for all sections except .stabstr.
This commit is contained in:
parent
6536577167
commit
15407e7e0d
@ -1,7 +1,13 @@
|
|||||||
|
2021-03-20 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
PR 27590
|
||||||
|
* elf.c (_bfd_elf_make_section_from_shdr): Remove SHF_EXCLUDE
|
||||||
|
test for .gnu.debuglto*.
|
||||||
|
|
||||||
2021-03-18 H.J. Lu <hongjiu.lu@intel.com>
|
2021-03-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR ld/27590
|
PR ld/27590
|
||||||
* elf.c (_bfd_elf_make_section_from_shdr): Treate
|
* elf.c (_bfd_elf_make_section_from_shdr): Treat
|
||||||
.gnu.debuglto_.debug_ section as debugging section unless it is
|
.gnu.debuglto_.debug_ section as debugging section unless it is
|
||||||
marked with SHF_EXCLUDE.
|
marked with SHF_EXCLUDE.
|
||||||
* elflink.c (elf_create_symbuf): Revert commit 994b2513281.
|
* elflink.c (elf_create_symbuf): Revert commit 994b2513281.
|
||||||
|
@ -1085,10 +1085,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
|
|||||||
if (name [0] == '.')
|
if (name [0] == '.')
|
||||||
{
|
{
|
||||||
if (strncmp (name, ".debug", 6) == 0
|
if (strncmp (name, ".debug", 6) == 0
|
||||||
/* NB: Treate .gnu.debuglto_.debug_ section as debugging
|
|| strncmp (name, ".gnu.debuglto_.debug_", 21) == 0
|
||||||
section unless it is marked with SHF_EXCLUDE. */
|
|
||||||
|| ((flags & SEC_EXCLUDE) == 0
|
|
||||||
&& strncmp (name, ".gnu.debuglto_.debug_", 21) == 0)
|
|
||||||
|| strncmp (name, ".gnu.linkonce.wi.", 17) == 0
|
|| strncmp (name, ".gnu.linkonce.wi.", 17) == 0
|
||||||
|| strncmp (name, ".zdebug", 7) == 0)
|
|| strncmp (name, ".zdebug", 7) == 0)
|
||||||
flags |= SEC_DEBUGGING | SEC_ELF_OCTETS;
|
flags |= SEC_DEBUGGING | SEC_ELF_OCTETS;
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2021-03-20 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
PR 27590
|
||||||
|
* ldlang.c (lang_gc_sections): Clear SEC_EXCLUDE when relocatable
|
||||||
|
for all sections except .stabstr.
|
||||||
|
|
||||||
2021-03-19 Alan Modra <amodra@gmail.com>
|
2021-03-19 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
PR 27590
|
PR 27590
|
||||||
|
@ -7565,7 +7565,7 @@ lang_gc_sections (void)
|
|||||||
lang_gc_sections_1 (statement_list.head);
|
lang_gc_sections_1 (statement_list.head);
|
||||||
|
|
||||||
/* SEC_EXCLUDE is ignored when doing a relocatable link, except in
|
/* SEC_EXCLUDE is ignored when doing a relocatable link, except in
|
||||||
the special case of debug info. (See bfd/stabs.c)
|
the special case of .stabstr debug info. (See bfd/stabs.c)
|
||||||
Twiddle the flag here, to simplify later linker code. */
|
Twiddle the flag here, to simplify later linker code. */
|
||||||
if (bfd_link_relocatable (&link_info))
|
if (bfd_link_relocatable (&link_info))
|
||||||
{
|
{
|
||||||
@ -7577,7 +7577,8 @@ lang_gc_sections (void)
|
|||||||
continue;
|
continue;
|
||||||
#endif
|
#endif
|
||||||
for (sec = f->the_bfd->sections; sec != NULL; sec = sec->next)
|
for (sec = f->the_bfd->sections; sec != NULL; sec = sec->next)
|
||||||
if ((sec->flags & SEC_DEBUGGING) == 0)
|
if ((sec->flags & SEC_DEBUGGING) == 0
|
||||||
|
|| strcmp (sec->name, ".stabstr") != 0)
|
||||||
sec->flags &= ~SEC_EXCLUDE;
|
sec->flags &= ~SEC_EXCLUDE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user