https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98765
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Seems to be a gcc bug to me: .section .gnu.debuglto_.debug_info,"e",@progbits ... .long .LASF0 # DW_AT_name: "a.c" .long .LASF1 # DW_AT_comp_dir: "/var/tmp" .long .Ldebug_line0 # DW_AT_stmt_list ... .section .gnu.debuglto_.debug_line,"e",@progbits .Ldebug_line0: ... .uleb128 0x3 # File names count .long .LASF0 # File Entry: 0: "a.c" .byte 0 .long .LASF0 # File Entry: 0: "a.c" .byte 0 ... .section .gnu.debuglto_.debug_line_str,"eMS",@progbits,1 .LASF0: .string "a.c" ... .section .debug_info,"",@progbits .Ldebug_info1: .long .LASF0 # DW_AT_name: "a.c" .long .LASF1 # DW_AT_comp_dir: "/var/tmp" .quad .Ltext0 # DW_AT_low_pc .quad .Letext0-.Ltext0 # DW_AT_high_pc .long .Ldebug_line1 # DW_AT_stmt_list The references in .debug_info to .LASF0/.LASF1 labels from .gnu.debuglto_.debug_line_str is what is incorrect.