1*8a64d80aSDavid Spickett# Test that parsing of line tables works reasonably, even if the host directory 2*8a64d80aSDavid Spickett# separator does not match the separator of the compile unit. 3*8a64d80aSDavid Spickett 4*8a64d80aSDavid Spickett# REQUIRES: lld 5*8a64d80aSDavid Spickett 6*8a64d80aSDavid Spickett# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj > %t.o 7*8a64d80aSDavid Spickett# RUN: ld.lld %t.o -o %t -z separate-code 8*8a64d80aSDavid Spickett# RUN: %lldb %t -s %S/Inputs/dir-separator-posix.lldbinit -o exit | FileCheck %s 9*8a64d80aSDavid Spickett 10*8a64d80aSDavid Spickett# CHECK-LABEL: image dump line-table a.c 11*8a64d80aSDavid Spickett# CHECK: Line table for /tmp/a.c 12*8a64d80aSDavid Spickett# CHECK-NEXT: 0x0000000000201000: /tmp/a.c:1 13*8a64d80aSDavid Spickett# CHECK-NEXT: 0x0000000000201001: /tmp/b.c:1 14*8a64d80aSDavid Spickett# CHECK-NEXT: 0x0000000000201002: /tmp/b.c:1 15*8a64d80aSDavid Spickett# CHECK-EMPTY: 16*8a64d80aSDavid Spickett 17*8a64d80aSDavid Spickett# CHECK-LABEL: breakpoint set -f a.c -l 1 18*8a64d80aSDavid Spickett# CHECK: Breakpoint 1: {{.*}}`_start, 19*8a64d80aSDavid Spickett 20*8a64d80aSDavid Spickett# CHECK-LABEL: breakpoint set -f /tmp/b.c -l 1 21*8a64d80aSDavid Spickett# CHECK: Breakpoint 2: {{.*}}`_start + 1, 22*8a64d80aSDavid Spickett 23*8a64d80aSDavid Spickett .text 24*8a64d80aSDavid Spickett .globl _start 25*8a64d80aSDavid Spickett_start: 26*8a64d80aSDavid Spickett .file 1 "/tmp/a.c" 27*8a64d80aSDavid Spickett .loc 1 1 0 28*8a64d80aSDavid Spickett nop 29*8a64d80aSDavid Spickett .file 2 "/tmp/b.c" 30*8a64d80aSDavid Spickett .loc 2 1 0 31*8a64d80aSDavid Spickett nop 32*8a64d80aSDavid Spickett 33*8a64d80aSDavid Spickett .section .debug_str,"MS",@progbits,1 34*8a64d80aSDavid Spickett.Linfo_string1: 35*8a64d80aSDavid Spickett .asciz "a.c" 36*8a64d80aSDavid Spickett.Linfo_string2: 37*8a64d80aSDavid Spickett .asciz "/tmp" 38*8a64d80aSDavid Spickett .section .debug_abbrev,"",@progbits 39*8a64d80aSDavid Spickett .byte 1 # Abbreviation Code 40*8a64d80aSDavid Spickett .byte 17 # DW_TAG_compile_unit 41*8a64d80aSDavid Spickett .byte 0 # DW_CHILDREN_no 42*8a64d80aSDavid Spickett .byte 19 # DW_AT_language 43*8a64d80aSDavid Spickett .byte 5 # DW_FORM_data2 44*8a64d80aSDavid Spickett .byte 3 # DW_AT_name 45*8a64d80aSDavid Spickett .byte 14 # DW_FORM_strp 46*8a64d80aSDavid Spickett .byte 16 # DW_AT_stmt_list 47*8a64d80aSDavid Spickett .byte 23 # DW_FORM_sec_offset 48*8a64d80aSDavid Spickett .byte 27 # DW_AT_comp_dir 49*8a64d80aSDavid Spickett .byte 14 # DW_FORM_strp 50*8a64d80aSDavid Spickett .byte 0 # EOM(1) 51*8a64d80aSDavid Spickett .byte 0 # EOM(2) 52*8a64d80aSDavid Spickett .byte 0 # EOM(3) 53*8a64d80aSDavid Spickett .section .debug_info,"",@progbits 54*8a64d80aSDavid Spickett.Lcu_begin0: 55*8a64d80aSDavid Spickett .long .Lcu_end0-.Lcu_start0 # Length of Unit 56*8a64d80aSDavid Spickett.Lcu_start0: 57*8a64d80aSDavid Spickett .short 4 # DWARF version number 58*8a64d80aSDavid Spickett .long .debug_abbrev # Offset Into Abbrev. Section 59*8a64d80aSDavid Spickett .byte 8 # Address Size (in bytes) 60*8a64d80aSDavid Spickett .byte 1 # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit 61*8a64d80aSDavid Spickett .short 12 # DW_AT_language 62*8a64d80aSDavid Spickett .long .Linfo_string1 # DW_AT_name 63*8a64d80aSDavid Spickett .long .Lline_table_start0 # DW_AT_stmt_list 64*8a64d80aSDavid Spickett .long .Linfo_string2 # DW_AT_comp_dir 65*8a64d80aSDavid Spickett.Lcu_end0: 66*8a64d80aSDavid Spickett .section .debug_line,"",@progbits 67*8a64d80aSDavid Spickett.Lline_table_start0: 68