[lldb-dev] multiple debug line sections & DWARFDebugLine::ParseSupportFiles

Carlo Kok ck at remobjects.com
Fri Sep 27 02:11:44 PDT 2013


Latest llvm (i386 target) generates a debug_line section with multiple 
debug_line blocks in it like:

.debug_line contents:
----------------------------------------------------------------------
debug_line[0x00000000]
----------------------------------------------------------------------
Line table prologue:
    total_length: 0x0000005e
         version: 0x0002
prologue_length: 0x00000040
min_inst_length: 0x01
default_is_stmt: 0x01
       line_base: -5
      line_range: 14
     opcode_base: 0x0d

...
standard_opcode_lengths[ DW_LNS_set_prologue_end ] = 0
standard_opcode_lengths[ DW_LNS_set_epilogue_begin ] = 0
standard_opcode_lengths[ DW_LNS_set_isa          ] = 1
                 Dir  Mod Time   File Len   File Name
                 ---- ---------- ---------- ---------------------------
file_names[  1]    0 0x00000000 0x00000000 universalapp13.oxygene
file_names[  2]    0 0x00000000 0x00000000 appdelegate.pas
             0x000000000000a703      2     29      9 is_stmt

----------------------------------------------------------------------
debug_line[0x00000062]
----------------------------------------------------------------------
Line table prologue:
    total_length: 0x00000033
         version: 0x0002
prologue_length: 0x0000002d
min_inst_length: 0x01
default_is_stmt: 0x01
       line_base: -5
      line_range: 14
     opcode_base: 0x0d
..

standard_opcode_lengths[ DW_LNS_set_epilogue_begin ] = 0
standard_opcode_lengths[ DW_LNS_set_isa          ] = 1
                 Dir  Mod Time   File Len   File Name
                 ---- ---------- ---------- ---------------------------
file_names[  1]    0 0x00000000 0x00000000 universalapp13.oxygene


(full dump at http://pastebin.com/YfLUMQXC)

However, it seems that DWARFDebugLine::ParseSupportFiles / bool
SymbolFileDWARF::ParseCompileUnitSupportFiles only parses 1 of these, so 
it only considers "appdelegate.pas" part of this. Is this a current lldb 
limitation or is there something wrong with how the debug info is emitted?

-- 
Carlo Kok
RemObjects Software



More information about the lldb-dev mailing list