1*cd1424aeSJames Henderson# Create .debug_line containing absolute path in filename. Show that the path is sensibly printed/found/etc. 2*cd1424aeSJames Henderson# REQUIRES: x86-registered-target 3*cd1424aeSJames Henderson 4*cd1424aeSJames Henderson# RUN: sed s!FILEPATH!%/s! %s > %t.s 5*cd1424aeSJames Henderson# RUN: llvm-mc --filetype=obj --triple=x86_64-pc-linux %t.s -o %t.o 6*cd1424aeSJames Henderson# RUN: llvm-symbolizer --obj=%t.o 0 | FileCheck %s -DPATH=%/s 7*cd1424aeSJames Henderson 8*cd1424aeSJames Henderson# CHECK: {{^}}[[PATH]]:1:0 9*cd1424aeSJames Henderson 10*cd1424aeSJames Henderson.type _start,@function 11*cd1424aeSJames Henderson_start: 12*cd1424aeSJames Henderson.Lfunc_begin0: 13*cd1424aeSJames Henderson ret 14*cd1424aeSJames Henderson.Lfunc_end0: 15*cd1424aeSJames Henderson 16*cd1424aeSJames Henderson.section .debug_str,"MS",@progbits,1 17*cd1424aeSJames Henderson.Linfo_string1: 18*cd1424aeSJames Henderson .asciz "test.c" 19*cd1424aeSJames Henderson.Linfo_string2: 20*cd1424aeSJames Henderson .asciz "/some/dir" 21*cd1424aeSJames Henderson.Linfo_string3: 22*cd1424aeSJames Henderson .asciz "_start" 23*cd1424aeSJames Henderson 24*cd1424aeSJames Henderson.section .debug_abbrev,"",@progbits 25*cd1424aeSJames Henderson .byte 1 # Abbreviation Code 26*cd1424aeSJames Henderson .byte 17 # DW_TAG_compile_unit 27*cd1424aeSJames Henderson .byte 1 # DW_CHILDREN_yes 28*cd1424aeSJames Henderson .byte 3 # DW_AT_name 29*cd1424aeSJames Henderson .byte 14 # DW_FORM_strp 30*cd1424aeSJames Henderson .byte 16 # DW_AT_stmt_list 31*cd1424aeSJames Henderson .byte 23 # DW_FORM_sec_offset 32*cd1424aeSJames Henderson .byte 27 # DW_AT_comp_dir 33*cd1424aeSJames Henderson .byte 14 # DW_FORM_strp 34*cd1424aeSJames Henderson .byte 17 # DW_AT_low_pc 35*cd1424aeSJames Henderson .byte 1 # DW_FORM_addr 36*cd1424aeSJames Henderson .byte 18 # DW_AT_high_pc 37*cd1424aeSJames Henderson .byte 6 # DW_FORM_data4 38*cd1424aeSJames Henderson .byte 0 # EOM(1) 39*cd1424aeSJames Henderson .byte 0 # EOM(2) 40*cd1424aeSJames Henderson .byte 2 # Abbreviation Code 41*cd1424aeSJames Henderson .byte 46 # DW_TAG_subprogram 42*cd1424aeSJames Henderson .byte 0 # DW_CHILDREN_no 43*cd1424aeSJames Henderson .byte 17 # DW_AT_low_pc 44*cd1424aeSJames Henderson .byte 1 # DW_FORM_addr 45*cd1424aeSJames Henderson .byte 18 # DW_AT_high_pc 46*cd1424aeSJames Henderson .byte 6 # DW_FORM_data4 47*cd1424aeSJames Henderson .byte 3 # DW_AT_name 48*cd1424aeSJames Henderson .byte 14 # DW_FORM_strp 49*cd1424aeSJames Henderson .byte 58 # DW_AT_decl_file 50*cd1424aeSJames Henderson .byte 11 # DW_FORM_data1 51*cd1424aeSJames Henderson .byte 59 # DW_AT_decl_line 52*cd1424aeSJames Henderson .byte 11 # DW_FORM_data1 53*cd1424aeSJames Henderson .byte 63 # DW_AT_external 54*cd1424aeSJames Henderson .byte 25 # DW_FORM_flag_present 55*cd1424aeSJames Henderson .byte 0 # EOM(1) 56*cd1424aeSJames Henderson .byte 0 # EOM(2) 57*cd1424aeSJames Henderson .byte 0 # EOM(3) 58*cd1424aeSJames Henderson .section .debug_info,"",@progbits 59*cd1424aeSJames Henderson .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 60*cd1424aeSJames Henderson.Ldebug_info_start0: 61*cd1424aeSJames Henderson .short 4 # DWARF version number 62*cd1424aeSJames Henderson .long .debug_abbrev # Offset Into Abbrev. Section 63*cd1424aeSJames Henderson .byte 8 # Address Size (in bytes) 64*cd1424aeSJames Henderson .byte 1 # Abbrev [1] 0xb:0x35 DW_TAG_compile_unit 65*cd1424aeSJames Henderson .long .Linfo_string1 # DW_AT_name 66*cd1424aeSJames Henderson .long .Lline_table_start0 # DW_AT_stmt_list 67*cd1424aeSJames Henderson .long .Linfo_string2 # DW_AT_comp_dir 68*cd1424aeSJames Henderson .quad .Lfunc_begin0 # DW_AT_low_pc 69*cd1424aeSJames Henderson .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 70*cd1424aeSJames Henderson .byte 2 # Abbrev [2] 0x2a:0x15 DW_TAG_subprogram 71*cd1424aeSJames Henderson .quad .Lfunc_begin0 # DW_AT_low_pc 72*cd1424aeSJames Henderson .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 73*cd1424aeSJames Henderson .long .Linfo_string3 # DW_AT_name 74*cd1424aeSJames Henderson .byte 1 # DW_AT_decl_file 75*cd1424aeSJames Henderson .byte 1 # DW_AT_decl_line 76*cd1424aeSJames Henderson # DW_AT_external 77*cd1424aeSJames Henderson .byte 0 # End Of Children Mark 78*cd1424aeSJames Henderson.Ldebug_info_end0: 79*cd1424aeSJames Henderson 80*cd1424aeSJames Henderson# Hand-written .debug_line to allow replacing in the absolute path 81*cd1424aeSJames Henderson# into the filename table at runtime. 82*cd1424aeSJames Henderson.section .debug_line,"",@progbits 83*cd1424aeSJames Henderson.Lline_table_start0: 84*cd1424aeSJames Henderson .long .Ltable_end - .Ltable_start # unit length 85*cd1424aeSJames Henderson.Ltable_start: 86*cd1424aeSJames Henderson .short 4 # version 87*cd1424aeSJames Henderson .long .Lheader_end - .Lheader_start # header length 88*cd1424aeSJames Henderson.Lheader_start: 89*cd1424aeSJames Henderson .byte 1 # min instruction length 90*cd1424aeSJames Henderson .byte 1 # max ops per instruction 91*cd1424aeSJames Henderson .byte 1 # default is_stmt 92*cd1424aeSJames Henderson .byte -5 # line base 93*cd1424aeSJames Henderson .byte 14 # line range 94*cd1424aeSJames Henderson .byte 13 # opcode base 95*cd1424aeSJames Henderson .byte 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 # standard opcode lengths 96*cd1424aeSJames Henderson .byte 0 # directory table 97*cd1424aeSJames Henderson .asciz "FILEPATH" # filename table 98*cd1424aeSJames Henderson .byte 0, 0, 0 99*cd1424aeSJames Henderson .byte 0 100*cd1424aeSJames Henderson.Lheader_end: 101*cd1424aeSJames Henderson .byte 0, 9, 2 # DW_LNE_set_address 102*cd1424aeSJames Henderson .quad .Lfunc_begin0 103*cd1424aeSJames Henderson .byte 1 # DW_LNS_copy 104*cd1424aeSJames Henderson .byte 33 # +1 address, +1 line 105*cd1424aeSJames Henderson .byte 0, 1, 1 # DW_LNE_end_sequence 106*cd1424aeSJames Henderson.Ltable_end: 107