# 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: