107 lines
4.8 KiB
ArmAsm
107 lines
4.8 KiB
ArmAsm
# This test that we don't get confused by line tables containing a tombstone
|
|
# (-1) value, as produced by recent lld's. Line sequences with the tombstone
|
|
# value should be completely ignored. The tombstone sequence is deliberately
|
|
# longer so that any attempt at an address binary search will likely land inside
|
|
# the sequence.
|
|
|
|
# RUN: llvm-mc --filetype=obj --triple=x86_64-pc-linux %s -o %t
|
|
# RUN: %lldb -o "image lookup -n main -v" -o "image dump line-table main.cpp" \
|
|
# RUN: -o exit %t | FileCheck %s
|
|
|
|
# CHECK-LABEL: image lookup -n main -v
|
|
# CHECK: LineEntry: [0x0000000000001000-0x0000000000001001): main.cpp:1
|
|
# CHECK-LABEL: image dump line-table main.cpp
|
|
# CHECK-NEXT: Line table for main.cpp
|
|
# CHECK-NEXT: 0x0000000000001000: main.cpp:1
|
|
# CHECK-NEXT: 0x0000000000001001: main.cpp:1
|
|
# CHECK-EMPTY:
|
|
# CHECK-NEXT: exit
|
|
|
|
.text
|
|
.space 0x1000
|
|
main:
|
|
nop
|
|
.Lmain_end:
|
|
|
|
.section .debug_abbrev,"",@progbits
|
|
.byte 1 # Abbreviation Code
|
|
.byte 17 # DW_TAG_compile_unit
|
|
.byte 0 # DW_CHILDREN_no
|
|
.byte 37 # DW_AT_producer
|
|
.byte 8 # DW_FORM_string
|
|
.byte 3 # DW_AT_name
|
|
.byte 8 # DW_FORM_string
|
|
.byte 16 # DW_AT_stmt_list
|
|
.byte 23 # DW_FORM_sec_offset
|
|
.byte 17 # DW_AT_low_pc
|
|
.byte 1 # DW_FORM_addr
|
|
.byte 18 # DW_AT_high_pc
|
|
.byte 6 # DW_FORM_data4
|
|
.byte 0 # EOM(1)
|
|
.byte 0 # EOM(2)
|
|
.byte 0 # EOM(3)
|
|
|
|
.section .debug_info,"",@progbits
|
|
.Lcu_begin0:
|
|
.long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
|
|
.Ldebug_info_start0:
|
|
.short 4 # DWARF version number
|
|
.long 0 # Offset Into Abbrev. Section
|
|
.byte 8 # Address Size (in bytes)
|
|
.byte 1 # Abbrev [1] 0xb:0xc4 DW_TAG_compile_unit
|
|
.asciz "Hand-written DWARF" # DW_AT_producer
|
|
.asciz "main.cpp" # DW_AT_name
|
|
.long 0 # DW_AT_stmt_list
|
|
.quad main-.text # DW_AT_low_pc
|
|
.long .Lmain_end-main # DW_AT_high_pc
|
|
.Ldebug_info_end0:
|
|
|
|
.section .debug_line,"",@progbits
|
|
.long .Llt1_end - .Llt1_start # Length of Unit (DWARF-32 format)
|
|
.Llt1_start:
|
|
.short 4 # DWARF version number
|
|
.long .Lprologue1_end-.Lprologue1_start # Length of Prologue
|
|
.Lprologue1_start:
|
|
.byte 1 # Minimum Instruction Length
|
|
.byte 1 # Maximum Operations per Instruction
|
|
.byte 1 # Default is_stmt
|
|
.byte -5 # Line Base
|
|
.byte 14 # Line Range
|
|
.byte 13 # Opcode Base
|
|
.byte 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 # Standard Opcode Lengths
|
|
.byte 0
|
|
.asciz "main.cpp" # File table
|
|
.byte 0, 0, 0
|
|
.byte 0
|
|
.Lprologue1_end:
|
|
.byte 0, 9, 2 # DW_LNE_set_address
|
|
.quad -1
|
|
.byte 1 # DW_LNS_copy
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 33 # address += 1, line += 1
|
|
.byte 2 # DW_LNS_advance_pc
|
|
.uleb128 1
|
|
.byte 0, 1, 1 # DW_LNE_end_sequence
|
|
|
|
.byte 0, 9, 2 # DW_LNE_set_address
|
|
.quad main-.text
|
|
.byte 18 # address += 0, line += 0
|
|
.byte 2 # DW_LNS_advance_pc
|
|
.uleb128 1
|
|
.byte 0, 1, 1 # DW_LNE_end_sequence
|
|
.Llt1_end:
|
|
|