https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99618
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- For normal non-LTO debug macro we emit: .section .debug_macro,"",@progbits .Ldebug_macro0: .value 0x5 # DWARF macro version number .byte 0x2 # Flags: 32-bit, lineptr present .long .Ldebug_line0 .byte 0x7 # Import .long .Ldebug_macro2 ... .section .debug_macro,"G",@progbits,wm4.0.d634b2ca9ddb72f687ab125549c033d0,comdat .Ldebug_macro2: .value 0x5 # DWARF macro version number .byte 0 # Flags: 32-bit .byte 0x5 # Define macro strp .uleb128 0 # At line number 0 ... I don't see how that is any different from the above. The intent is (and it has been working fine for years) that linker merges the comdat sections with the same hash into one, and the import relocations resolve to the start of that section.