[Bug debug/98765] [11 Regression] stripping of LTO debug sections doesn't work anymore since switch to -gdwarf-5 by default
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Jan 20 13:26:25 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98765
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
--- gcc/dwarf2out.c.jj 2021-01-20 08:32:09.612958930 +0100
+++ gcc/dwarf2out.c 2021-01-20 14:15:14.735459774 +0100
@@ -4733,12 +4733,20 @@ int
reset_indirect_string (indirect_string_node **h, void *)
{
struct indirect_string_node *node = *h;
- if (node->form == DW_FORM_strp || node->form == dwarf_FORM (DW_FORM_strx))
+ if (node->form == DW_FORM_strp
+ || node->form == DW_FORM_line_strp
+ || node->form == dwarf_FORM (DW_FORM_strx))
{
+ bool line_strp = node->form == DW_FORM_line_strp;
free (node->label);
node->label = NULL;
node->form = (dwarf_form) 0;
node->index = 0;
+ if (line_strp)
+ {
+ set_indirect_string (node);
+ node->form = DW_FORM_line_strp;
+ }
}
return 1;
}
@@ -31395,10 +31403,7 @@ dwarf2out_finish (const char *filename)
/* Remove indirect string decisions. */
debug_str_hash->traverse<void *, reset_indirect_string> (NULL);
if (debug_line_str_hash)
- {
- debug_line_str_hash->traverse<void *, reset_indirect_string> (NULL);
- debug_line_str_hash = NULL;
- }
+ debug_line_str_hash->traverse<void *, reset_indirect_string> (NULL);
}
#if ENABLE_ASSERT_CHECKING
emits them in .debug_line_str, but emits also strings that aren't really
needed.
More information about the Gcc-bugs
mailing list