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.