https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82005

--- Comment #16 from Iain Sandoe <iains at gcc dot gnu.org> ---
So.. trying to understand what we need to do to get this working on Darwin.

in the original .s we have ...

        .section __GNU_DWARF_LTO,__debug_info,regular,debug
Lsection__debug_info_lto:
Ldebug_info0:
        .private_extern _pr82005_a.c.9d5291f5
        .globl _pr82005_a.c.9d5291f5
_pr82005_a.c.9d5291f5:
        .long   0x4dc   # Length of Compilation Unit Info
        .word   0x2     # DWARF version number
        .set L$set$0,Ldebug_abbrev0-Lsection__debug_abbrev_lto
        .long L$set$0   # Offset Into Abbrev. Section
        .byte   0x8     # Pointer Size (in bytes)
>> start + 11
        .byte   0x1     # uleb128 0x1; (DIE (0xb) DW_TAG_compile_unit)

... and we expect to copy that into a new file, with the  "__GNU_DWARF_LTO"
renamed to __DWARF so that the content will get linked into the final debug.

in the lto .s we have

        .section __DWARF,__debug_info,regular,debug
Lsection__debug_info:
Ldebug_info0:
        .long   0x16b   # Length of Compilation Unit Info
        .word   0x2     # DWARF version number
        .set L$set$13,Ldebug_abbrev0-Lsection__debug_abbrev
        .long L$set$13  # Offset Into Abbrev. Section
        .byte   0x8     # Pointer Size (in bytes)
<snip>
        .quad   Letext0 # DW_AT_high_pc
        .set L$set$14,Ldebug_line0-Lsection__debug_line
        .long L$set$14  # DW_AT_stmt_list
        .byte   0x2     # uleb128 0x2; (DIE (0x13b) DW_TAG_imported_unit)
        .quad   _pr82005_a.c.9d5291f5-Lsection__debug_info+11   # DW_AT_import

^^ so is intended to resolve to the address marked "start + 11" above?

.. and it's expected that the static linker will resolve that while linking the
debug sections between different files, including the copy-renamed dwarf data
from the original?

(this is going to be "fun", I suspect).

At this stage, presumably, we have a single LTO TU and if there were some way
to reconstruct the (copied renamed) DWARF (re-written as source) in that file
that would avoid the undefined syms

.. there will be one "copy-renamed" debug-only(+symtab) object for each
original TU ?

Reply via email to