188b4e28aSPavel Labath# RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %s > %t 2208a11abSDavid Blaikie# RUN: not llvm-dwarfdump %t 2> %t.err | FileCheck %s 3208a11abSDavid Blaikie# RUN: FileCheck %s < %t.err -check-prefix=ERR 488b4e28aSPavel Labath 588b4e28aSPavel Labath# CHECK: DW_AT_name ("x0") 688b4e28aSPavel Labath# CHECK-NEXT: DW_AT_location (0x0000000c 788b4e28aSPavel Labath# CHECK-NEXT: [0x0000000000000000, 0x0000000000000002): DW_OP_reg5 RDI 888b4e28aSPavel Labath# CHECK-NEXT: [0x0000000000000002, 0x0000000000000003): DW_OP_reg0 RAX) 988b4e28aSPavel Labath 1088b4e28aSPavel Labath# CHECK: DW_AT_name ("x1") 11208a11abSDavid Blaikie# CHECK-NEXT: DW_AT_location (0xdeadbeef: ) 12*04aea769SPavel Labath# ERR: error: offset 0xdeadbeef is beyond the end of data at 0x34 1388b4e28aSPavel Labath 1488b4e28aSPavel Labath# CHECK: DW_AT_name ("x2") 1588b4e28aSPavel Labath# CHECK-NEXT: DW_AT_location (0x00000025 16*04aea769SPavel Labath# ERR: error: unexpected end of data at offset 0x34 while reading [0x34, 0xdeadbf23) 1788b4e28aSPavel Labath 1888b4e28aSPavel Labath 1988b4e28aSPavel Labath .type f,@function 2088b4e28aSPavel Labathf: # @f 2188b4e28aSPavel Labath.Lfunc_begin0: 2288b4e28aSPavel Labath movl %edi, %eax 2388b4e28aSPavel Labath.Ltmp0: 2488b4e28aSPavel Labath retq 2588b4e28aSPavel Labath.Ltmp1: 2688b4e28aSPavel Labath.Lfunc_end0: 2788b4e28aSPavel Labath .size f, .Lfunc_end0-f 2888b4e28aSPavel Labath 2988b4e28aSPavel Labath .section .debug_str,"MS",@progbits,1 3088b4e28aSPavel Labath.Linfo_string0: 3188b4e28aSPavel Labath .asciz "Hand-written DWARF" 3288b4e28aSPavel Labath.Linfo_string3: 3388b4e28aSPavel Labath .asciz "f" 3488b4e28aSPavel Labath.Linfo_string4: 3588b4e28aSPavel Labath .asciz "int" 3688b4e28aSPavel Labath.Lx0: 3788b4e28aSPavel Labath .asciz "x0" 3888b4e28aSPavel Labath.Lx1: 3988b4e28aSPavel Labath .asciz "x1" 4088b4e28aSPavel Labath.Lx2: 4188b4e28aSPavel Labath .asciz "x2" 4288b4e28aSPavel Labath 4388b4e28aSPavel Labath .section .debug_loclists,"",@progbits 4488b4e28aSPavel Labath .long .Ldebug_loclist_table_end0-.Ldebug_loclist_table_start0 # Length 4588b4e28aSPavel Labath.Ldebug_loclist_table_start0: 4688b4e28aSPavel Labath .short 5 # Version 4788b4e28aSPavel Labath .byte 8 # Address size 4888b4e28aSPavel Labath .byte 0 # Segment selector size 4988b4e28aSPavel Labath .long 0 # Offset entry count 5088b4e28aSPavel Labath.Lloclists_table_base0: 5188b4e28aSPavel Labath.Ldebug_loc0: 5288b4e28aSPavel Labath .byte 8 # DW_LLE_start_length 5388b4e28aSPavel Labath .quad .Lfunc_begin0-.Lfunc_begin0 # starting offset 5488b4e28aSPavel Labath .uleb128 .Ltmp0-.Lfunc_begin0 # size 5588b4e28aSPavel Labath .byte 1 # Loc expr size 5688b4e28aSPavel Labath .byte 85 # super-register DW_OP_reg5 5788b4e28aSPavel Labath .byte 8 # DW_LLE_start_length 5888b4e28aSPavel Labath .quad .Ltmp0-.Lfunc_begin0 # starting offset 5988b4e28aSPavel Labath .uleb128 .Lfunc_end0-.Ltmp0 # size 6088b4e28aSPavel Labath .byte 1 # Loc expr size 6188b4e28aSPavel Labath .byte 80 # super-register DW_OP_reg0 6288b4e28aSPavel Labath .byte 0 # DW_LLE_end_of_list 6388b4e28aSPavel Labath.Ldebug_loc2: 6488b4e28aSPavel Labath .byte 8 # DW_LLE_start_length 6588b4e28aSPavel Labath .quad .Lfunc_begin0-.Lfunc_begin0 # starting offset 6688b4e28aSPavel Labath .uleb128 .Ltmp0-.Lfunc_begin0 # size 6788b4e28aSPavel Labath .uleb128 0xdeadbeef # Loc expr size 6888b4e28aSPavel Labath.Ldebug_loclist_table_end0: 6988b4e28aSPavel Labath 7088b4e28aSPavel Labath .section .debug_abbrev,"",@progbits 7188b4e28aSPavel Labath .byte 1 # Abbreviation Code 7288b4e28aSPavel Labath .byte 17 # DW_TAG_compile_unit 7388b4e28aSPavel Labath .byte 1 # DW_CHILDREN_yes 7488b4e28aSPavel Labath .byte 37 # DW_AT_producer 7588b4e28aSPavel Labath .byte 14 # DW_FORM_strp 7688b4e28aSPavel Labath .byte 19 # DW_AT_language 7788b4e28aSPavel Labath .byte 5 # DW_FORM_data2 7888b4e28aSPavel Labath .byte 0 # EOM(1) 7988b4e28aSPavel Labath .byte 0 # EOM(2) 8088b4e28aSPavel Labath .byte 2 # Abbreviation Code 8188b4e28aSPavel Labath .byte 46 # DW_TAG_subprogram 8288b4e28aSPavel Labath .byte 1 # DW_CHILDREN_yes 8388b4e28aSPavel Labath .byte 3 # DW_AT_name 8488b4e28aSPavel Labath .byte 14 # DW_FORM_strp 8588b4e28aSPavel Labath .byte 0 # EOM(1) 8688b4e28aSPavel Labath .byte 0 # EOM(2) 8788b4e28aSPavel Labath .byte 3 # Abbreviation Code 8888b4e28aSPavel Labath .byte 5 # DW_TAG_formal_parameter 8988b4e28aSPavel Labath .byte 0 # DW_CHILDREN_no 9088b4e28aSPavel Labath .byte 3 # DW_AT_name 9188b4e28aSPavel Labath .byte 14 # DW_FORM_strp 9288b4e28aSPavel Labath .byte 2 # DW_AT_location 9388b4e28aSPavel Labath .byte 23 # DW_FORM_sec_offset 9488b4e28aSPavel Labath .byte 0 # EOM(1) 9588b4e28aSPavel Labath .byte 0 # EOM(2) 9688b4e28aSPavel Labath .byte 4 # Abbreviation Code 9788b4e28aSPavel Labath .byte 36 # DW_TAG_base_type 9888b4e28aSPavel Labath .byte 0 # DW_CHILDREN_no 9988b4e28aSPavel Labath .byte 3 # DW_AT_name 10088b4e28aSPavel Labath .byte 14 # DW_FORM_strp 10188b4e28aSPavel Labath .byte 62 # DW_AT_encoding 10288b4e28aSPavel Labath .byte 11 # DW_FORM_data1 10388b4e28aSPavel Labath .byte 11 # DW_AT_byte_size 10488b4e28aSPavel Labath .byte 11 # DW_FORM_data1 10588b4e28aSPavel Labath .byte 0 # EOM(1) 10688b4e28aSPavel Labath .byte 0 # EOM(2) 10788b4e28aSPavel Labath .byte 0 # EOM(3) 10888b4e28aSPavel Labath 10988b4e28aSPavel Labath .section .debug_info,"",@progbits 11088b4e28aSPavel Labath.Lcu_begin0: 11188b4e28aSPavel Labath .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 11288b4e28aSPavel Labath.Ldebug_info_start0: 11388b4e28aSPavel Labath .short 5 # DWARF version number 11488b4e28aSPavel Labath .byte 1 # DWARF Unit Type 11588b4e28aSPavel Labath .byte 8 # Address Size (in bytes) 11688b4e28aSPavel Labath .long .debug_abbrev # Offset Into Abbrev. Section 11788b4e28aSPavel Labath .byte 1 # Abbrev [1] 0xb:0x50 DW_TAG_compile_unit 11888b4e28aSPavel Labath .long .Linfo_string0 # DW_AT_producer 11988b4e28aSPavel Labath .short 12 # DW_AT_language 12088b4e28aSPavel Labath .byte 2 # Abbrev [2] 0x2a:0x29 DW_TAG_subprogram 12188b4e28aSPavel Labath .long .Linfo_string3 # DW_AT_name 12288b4e28aSPavel Labath .byte 3 # Abbrev [3] DW_TAG_formal_parameter 12388b4e28aSPavel Labath .long .Lx0 # DW_AT_name 12488b4e28aSPavel Labath .long .Ldebug_loc0 # DW_AT_location 12588b4e28aSPavel Labath .byte 3 # Abbrev [3] DW_TAG_formal_parameter 12688b4e28aSPavel Labath .long .Lx1 # DW_AT_name 12788b4e28aSPavel Labath .long 0xdeadbeef # DW_AT_location 12888b4e28aSPavel Labath .byte 3 # Abbrev [3] DW_TAG_formal_parameter 12988b4e28aSPavel Labath .long .Lx2 # DW_AT_name 13088b4e28aSPavel Labath .long .Ldebug_loc2 # DW_AT_location 13188b4e28aSPavel Labath .byte 0 # End Of Children Mark 13288b4e28aSPavel Labath .byte 0 # End Of Children Mark 13388b4e28aSPavel Labath.Ldebug_info_end0: 134