https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115066
--- Comment #6 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #5)
> Just make it if (dwarf_split_debug_info) then?
That works as well indeed:
...
diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc
index eedb13bb069..70b7f5f42cd 100644
--- a/gcc/dwarf2out.cc
+++ b/gcc/dwarf2out.cc
@@ -29045,7 +29045,7 @@ output_macinfo_op (macinfo_entry *ref)
&& !DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET
&& (debug_str_section->common.flags & SECTION_MERGE) != 0)
{
- if (dwarf_split_debug_info && dwarf_version >= 5)
+ if (dwarf_split_debug_info)
ref->code = ref->code == DW_MACINFO_define
? DW_MACRO_define_strx : DW_MACRO_undef_strx;
else
@@ -29097,12 +29097,20 @@ output_macinfo_op (macinfo_entry *ref)
HOST_WIDE_INT_PRINT_UNSIGNED,
ref->lineno);
if (node->form == DW_FORM_strp)
- dw2_asm_output_offset (dwarf_offset_size, node->label,
- debug_str_section, "The macro: \"%s\"",
- ref->info);
+ {
+ gcc_assert (ref->code == DW_MACRO_define_strp
+ || ref->code == DW_MACRO_undef_strp);
+ dw2_asm_output_offset (dwarf_offset_size, node->label,
+ debug_str_section, "The macro: \"%s\"",
+ ref->info);
+ }
else
- dw2_asm_output_data_uleb128 (node->index, "The macro: \"%s\"",
- ref->info);
+ {
+ gcc_assert (ref->code == DW_MACRO_define_strx
+ || ref->code == DW_MACRO_undef_strx);
+ dw2_asm_output_data_uleb128 (node->index, "The macro: \"%s\"",
+ ref->info);
+ }
break;
case DW_MACRO_import:
dw2_asm_output_data (1, ref->code, "Import");
...
I've also added asserts detecting this PR.