223 lines · plain
1# RUN: llvm-mc %s -filetype obj -triple x86_64-pc-linux -o %t2# RUN: llvm-dwarfdump -debug-info -debug-loclists %t \3# RUN: | FileCheck %s --check-prefixes=REGULAR,BOTH4# RUN: llvm-dwarfdump -debug-info -debug-loclists --verbose %t \5# RUN: | FileCheck %s --check-prefixes=VERBOSE,BOTH6 7 8# BOTH: DW_AT_location {{.*}}(0x0000000c9 10# REGULAR-NEXT: [0x0000000000000000, 0x0000000000000001): DW_OP_reg0 RAX11# VERBOSE-NEXT: [0x0000000000000000, 0x0000000000000001) ".text": DW_OP_reg0 RAX12 13# REGULAR-NEXT: [0x0000000000000001, 0x0000000000000002): DW_OP_reg1 RDX14# VERBOSE-NEXT: [0x0000000000000001, 0x0000000000000002) ".text": DW_OP_reg1 RDX15 16# REGULAR-NEXT: [0x0000000000000002, 0x0000000000000003): DW_OP_reg2 RCX17# VERBOSE-NEXT: [0x0000000000000002, 0x0000000000000003) ".text": DW_OP_reg2 RCX18 19# BOTH-NEXT: <default>: DW_OP_reg3 RBX20 21# REGULAR-NEXT: [0x0000000000000004, 0x0000000000000005): DW_OP_reg4 RSI22# VERBOSE-NEXT: [0x0000000000000004, 0x0000000000000005) ".text": DW_OP_reg4 RSI23 24# REGULAR-NEXT: [0x0000000000000005, 0x0000000000000006): DW_OP_reg5 RDI25# VERBOSE-NEXT: [0x0000000000000005, 0x0000000000000006) ".text": DW_OP_reg5 RDI26 27# REGULAR-NEXT: [0x0000000000000006, 0x0000000000000007): DW_OP_reg6 RBP28# VERBOSE-NEXT: [0x0000000000000006, 0x0000000000000007) ".text": DW_OP_reg6 RBP29 30# REGULAR-NEXT: [0x0000000000000007, 0x0000000000000008): DW_OP_reg7 RSP31# VERBOSE-NEXT: [0x0000000000000007, 0x0000000000000008) ".text": DW_OP_reg7 RSP32 33# BOTH-NEXT: DW_LLE_startx_length (0x000000000000dead, 0x0000000000000001): DW_OP_reg4 RSI)34 35# BOTH: locations list header: length = 0x00000056, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00, offset_entry_count = 0x0000000036# BOTH-NEXT: 0x0000000c:37# BOTH-NEXT: DW_LLE_startx_endx (0x0000000000000000, 0x0000000000000001): DW_OP_reg0 RAX38# BOTH-NEXT: DW_LLE_startx_length (0x0000000000000001, 0x0000000000000001): DW_OP_reg1 RDX39# BOTH-NEXT: DW_LLE_offset_pair (0x0000000000000002, 0x0000000000000003): DW_OP_reg2 RCX40 41# REGULAR-NEXT: <default>: DW_OP_reg3 RBX42# VERBOSE-NEXT: DW_LLE_default_location()43# VERBOSE-NEXT: => <default>: DW_OP_reg3 RBX44 45# REGULAR-NEXT: [0x0000000000000004, 0x0000000000000005): DW_OP_reg4 RSI46# VERBOSE-NEXT: DW_LLE_start_end (0x0000000000000004, 0x0000000000000005) ".text"47# VERBOSE-NEXT: => [0x0000000000000004, 0x0000000000000005) ".text": DW_OP_reg4 RSI48 49# REGULAR-NEXT: [0x0000000000000005, 0x0000000000000006): DW_OP_reg5 RDI50# VERBOSE-NEXT: DW_LLE_start_length (0x0000000000000005, 0x0000000000000001) ".text"51# VERBOSE-NEXT: => [0x0000000000000005, 0x0000000000000006) ".text": DW_OP_reg5 RDI52 53# BOTH-NEXT: DW_LLE_base_addressx (0x0000000000000002)54 55# BOTH-NEXT: DW_LLE_offset_pair (0x0000000000000000, 0x0000000000000001): DW_OP_reg6 RBP56 57# VERBOSE-NEXT: DW_LLE_base_address (0x0000000000000007) ".text"58 59# REGULAR-NEXT: [0x0000000000000007, 0x0000000000000008): DW_OP_reg7 RSP60# VERBOSE-NEXT: DW_LLE_offset_pair (0x0000000000000000, 0x0000000000000001)61# VERBOSE-NEXT: => [0x0000000000000007, 0x0000000000000008) ".text": DW_OP_reg7 RSP62 63# BOTH-NEXT: DW_LLE_startx_length (0x000000000000dead, 0x0000000000000001): DW_OP_reg4 RSI64 65# VERBOSE-NEXT: DW_LLE_end_of_list ()66 67 68 .text69f: # @f70.Lf0:71 nop72.Lf1:73 nop74.Lf2:75 nop76.Lf3:77 nop78.Lf4:79 nop80.Lf5:81 nop82.Lf6:83 nop84.Lf7:85 nop86.Lf8:87.Lfend:88 # -- End function89 .section .debug_loclists,"",@progbits90 .long .Ldebug_loclist_table_end0-.Ldebug_loclist_table_start0 # Length91.Ldebug_loclist_table_start0:92 .short 5 # Version93 .byte 8 # Address size94 .byte 0 # Segment selector size95 .long 0 # Offset entry count96.Lloclists_table_base0:97.Ldebug_loc0:98 .byte 2 # DW_LLE_startx_endx99 .uleb128 0 # start idx100 .uleb128 1 # end idx101 .byte 1 # Loc expr size102 .byte 80 # super-register DW_OP_reg0103 104 .byte 3 # DW_LLE_startx_length105 .uleb128 1 # start idx106 .uleb128 .Lf2-.Lf1 # length107 .byte 1 # Loc expr size108 .byte 81 # super-register DW_OP_reg1109 110 .byte 4 # DW_LLE_offset_pair111 .uleb128 .Lf2-.Lf0 # starting offset112 .uleb128 .Lf3-.Lf0 # ending offset113 .byte 1 # Loc expr size114 .byte 82 # super-register DW_OP_reg2115 116 .byte 5 # DW_LLE_default_location117 .byte 1 # Loc expr size118 .byte 83 # super-register DW_OP_reg3119 120 .byte 7 # DW_LLE_start_end121 .quad .Lf4 # starting offset122 .quad .Lf5 # ending offset123 .byte 1 # Loc expr size124 .byte 84 # super-register DW_OP_reg4125 126 .byte 8 # DW_LLE_start_length127 .quad .Lf5 # starting offset128 .uleb128 .Lf6-.Lf5 # length129 .byte 1 # Loc expr size130 .byte 85 # super-register DW_OP_reg5131 132 .byte 1 # DW_LLE_base_addressx133 .uleb128 2 # base address134 135 .byte 4 # DW_LLE_offset_pair136 .uleb128 .Lf6-.Lf6 # starting offset137 .uleb128 .Lf7-.Lf6 # ending offset138 .byte 1 # Loc expr size139 .byte 86 # super-register DW_OP_reg6140 141 .byte 6 # DW_LLE_base_address142 .quad .Lf7 # base address143 144 .byte 4 # DW_LLE_offset_pair145 .uleb128 .Lf7-.Lf7 # starting offset146 .uleb128 .Lf8-.Lf7 # ending offset147 .byte 1 # Loc expr size148 .byte 87 # super-register DW_OP_reg7149 150 .byte 3 # DW_LLE_startx_length151 .uleb128 0xdead # start idx152 .uleb128 .Lf1-.Lf0 # length153 .byte 1 # Loc expr size154 .byte 84 # super-register DW_OP_reg4155 156 .byte 0 # DW_LLE_end_of_list157.Ldebug_loclist_table_end0:158 159 .section .debug_abbrev,"",@progbits160 .byte 1 # Abbreviation Code161 .byte 17 # DW_TAG_compile_unit162 .byte 1 # DW_CHILDREN_yes163 .byte 115 # DW_AT_addr_base164 .byte 23 # DW_FORM_sec_offset165 .ascii "\214\001" # DW_AT_loclists_base166 .byte 23 # DW_FORM_sec_offset167 .byte 17 # DW_AT_low_pc168 .byte 27 # DW_FORM_addrx169 .byte 18 # DW_AT_high_pc170 .byte 6 # DW_FORM_data4171 .byte 0 # EOM(1)172 .byte 0 # EOM(2)173 .byte 2 # Abbreviation Code174 .byte 46 # DW_TAG_subprogram175 .byte 1 # DW_CHILDREN_yes176 .byte 17 # DW_AT_low_pc177 .byte 27 # DW_FORM_addrx178 .byte 18 # DW_AT_high_pc179 .byte 6 # DW_FORM_data4180 .byte 0 # EOM(1)181 .byte 0 # EOM(2)182 .byte 3 # Abbreviation Code183 .byte 5 # DW_TAG_formal_parameter184 .byte 0 # DW_CHILDREN_no185 .byte 2 # DW_AT_location186 .byte 23 # DW_FORM_sec_offset187 .byte 0 # EOM(1)188 .byte 0 # EOM(2)189 .byte 0 # EOM(3)190 .section .debug_info,"",@progbits191.Lcu_begin0:192 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit193.Ldebug_info_start0:194 .short 5 # DWARF version number195 .byte 1 # DWARF Unit Type196 .byte 8 # Address Size (in bytes)197 .long .debug_abbrev # Offset Into Abbrev. Section198 .byte 1 # Abbrev [1] 0xc:0x3c DW_TAG_compile_unit199 .long .Laddr_table_base0 # DW_AT_addr_base200 .long .Lloclists_table_base0 # DW_AT_loclists_base201 .byte 0 # DW_AT_low_pc202 .long .Lfend-.Lf0 # DW_AT_high_pc203 .byte 2 # Abbrev [2] 0x27:0x1c DW_TAG_subprogram204 .byte 0 # DW_AT_low_pc205 .long .Lfend-.Lf0 # DW_AT_high_pc206 .byte 3 # Abbrev [3] 0x36:0xc DW_TAG_formal_parameter207 .long .Ldebug_loc0 # DW_AT_location208 .byte 0 # End Of Children Mark209 .byte 0 # End Of Children Mark210.Ldebug_info_end0:211 212 .section .debug_addr,"",@progbits213 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution214.Ldebug_addr_start0:215 .short 5 # DWARF version number216 .byte 8 # Address size217 .byte 0 # Segment selector size218.Laddr_table_base0:219 .quad .Lf0220 .quad .Lf1221 .quad .Lf6222.Ldebug_addr_end0:223