[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / DebugInfo / AArch64 / frame-loclistx.s
blobaabb97633c6086e75d53d419620f36a548f52b03
1 // Test dwarf-5 DW_AT_location [DW_FORM_loclistx].
3 // Built with "clang -c -target aarch64-linux -gdwarf-5 -O3 -S" from the following source:
4 // void use(int *);
5 // void f(void) {
6 // int x = 1;
7 // use(&x);
8 // }
10 // RUN: llvm-mc -filetype=obj -triple=aarch64-linux-android --dwarf-version=5 -o %t.o %s
11 // RUN: echo 'FRAME %t.o 0x4' | llvm-symbolizer | FileCheck %s
13 // DW_AT_location (indexed (0x0) loclist = 0x00000010:
14 // [0x0000000000000010, 0x0000000000000018): DW_OP_consts +1, DW_OP_stack_value
15 // [0x0000000000000018, 0x0000000000000028): DW_OP_breg29 W29-4)
16 // CHECK: f
17 // CHECK-NEXT: x
18 // CHECK-NEXT: {{.*}}dbg.c:3
19 // CHECK-NEXT: -4 4 ??
21 .text
22 .file "dbg.c"
23 .file 0 "/code/build-llvm-cmake" "/tmp/dbg.c" md5 0x87e53f5ae1de5f2c6ec0baa7fe683192
24 .globl _Z1fv // -- Begin function _Z1fv
25 .p2align 2
26 .type _Z1fv,@function
27 _Z1fv: // @_Z1fv
28 .Lfunc_begin0:
29 .loc 0 2 0 // /tmp/dbg.c:2:0
30 .cfi_startproc
31 // %bb.0: // %entry
32 sub sp, sp, #32 // =32
33 stp x29, x30, [sp, #16] // 16-byte Folded Spill
34 add x29, sp, #16 // =16
35 .cfi_def_cfa w29, 16
36 .cfi_offset w30, -8
37 .cfi_offset w29, -16
38 mov w8, #1
39 .Ltmp0:
40 //DEBUG_VALUE: f:x <- 1
41 .loc 0 4 3 prologue_end // /tmp/dbg.c:4:3
42 sub x0, x29, #4 // =4
43 .loc 0 3 7 // /tmp/dbg.c:3:7
44 stur w8, [x29, #-4]
45 .Ltmp1:
46 //DEBUG_VALUE: f:x <- [DW_OP_constu 4, DW_OP_minus, DW_OP_deref] $fp
47 .loc 0 4 3 // /tmp/dbg.c:4:3
48 bl _Z3usePi
49 .Ltmp2:
50 .loc 0 5 1 // /tmp/dbg.c:5:1
51 ldp x29, x30, [sp, #16] // 16-byte Folded Reload
52 add sp, sp, #32 // =32
53 ret
54 .Ltmp3:
55 .Lfunc_end0:
56 .size _Z1fv, .Lfunc_end0-_Z1fv
57 .cfi_endproc
58 // -- End function
59 .section .debug_str_offsets,"",@progbits
60 .word 40
61 .hword 5
62 .hword 0
63 .Lstr_offsets_base0:
64 .section .debug_str,"MS",@progbits,1
65 .Linfo_string0:
66 .asciz "clang version 10.0.0 (git@github.com:llvm/llvm-project.git 0a094679914ccea0f9c8f03165132172544d9799)" // string offset=0
67 .Linfo_string1:
68 .asciz "/tmp/dbg.c" // string offset=101
69 .Linfo_string2:
70 .asciz "/code/build-llvm-cmake" // string offset=112
71 .Linfo_string3:
72 .asciz "_Z3usePi" // string offset=135
73 .Linfo_string4:
74 .asciz "use" // string offset=144
75 .Linfo_string5:
76 .asciz "int" // string offset=148
77 .Linfo_string6:
78 .asciz "_Z1fv" // string offset=152
79 .Linfo_string7:
80 .asciz "f" // string offset=158
81 .Linfo_string8:
82 .asciz "x" // string offset=160
83 .section .debug_str_offsets,"",@progbits
84 .word .Linfo_string0
85 .word .Linfo_string1
86 .word .Linfo_string2
87 .word .Linfo_string3
88 .word .Linfo_string4
89 .word .Linfo_string5
90 .word .Linfo_string6
91 .word .Linfo_string7
92 .word .Linfo_string8
93 .section .debug_loclists,"",@progbits
94 .word .Ldebug_loclist_table_end0-.Ldebug_loclist_table_start0 // Length
95 .Ldebug_loclist_table_start0:
96 .hword 5 // Version
97 .byte 8 // Address size
98 .byte 0 // Segment selector size
99 .word 1 // Offset entry count
100 .Lloclists_table_base0:
101 .word .Ldebug_loc0-.Lloclists_table_base0
102 .Ldebug_loc0:
103 .byte 4 // DW_LLE_offset_pair
104 .uleb128 .Ltmp0-.Lfunc_begin0 // starting offset
105 .uleb128 .Ltmp1-.Lfunc_begin0 // ending offset
106 .byte 3 // Loc expr size
107 .byte 17 // DW_OP_consts
108 .byte 1 // 1
109 .byte 159 // DW_OP_stack_value
110 .byte 4 // DW_LLE_offset_pair
111 .uleb128 .Ltmp1-.Lfunc_begin0 // starting offset
112 .uleb128 .Lfunc_end0-.Lfunc_begin0 // ending offset
113 .byte 2 // Loc expr size
114 .byte 141 // DW_OP_breg29
115 .byte 124 // -4
116 .byte 0 // DW_LLE_end_of_list
117 .Ldebug_loclist_table_end0:
118 .section .debug_abbrev,"",@progbits
119 .byte 1 // Abbreviation Code
120 .byte 17 // DW_TAG_compile_unit
121 .byte 1 // DW_CHILDREN_yes
122 .byte 37 // DW_AT_producer
123 .byte 37 // DW_FORM_strx1
124 .byte 19 // DW_AT_language
125 .byte 5 // DW_FORM_data2
126 .byte 3 // DW_AT_name
127 .byte 37 // DW_FORM_strx1
128 .byte 114 // DW_AT_str_offsets_base
129 .byte 23 // DW_FORM_sec_offset
130 .byte 16 // DW_AT_stmt_list
131 .byte 23 // DW_FORM_sec_offset
132 .byte 27 // DW_AT_comp_dir
133 .byte 37 // DW_FORM_strx1
134 .byte 17 // DW_AT_low_pc
135 .byte 27 // DW_FORM_addrx
136 .byte 18 // DW_AT_high_pc
137 .byte 6 // DW_FORM_data4
138 .byte 115 // DW_AT_addr_base
139 .byte 23 // DW_FORM_sec_offset
140 .ascii "\214\001" // DW_AT_loclists_base
141 .byte 23 // DW_FORM_sec_offset
142 .byte 0 // EOM(1)
143 .byte 0 // EOM(2)
144 .byte 2 // Abbreviation Code
145 .byte 46 // DW_TAG_subprogram
146 .byte 1 // DW_CHILDREN_yes
147 .byte 110 // DW_AT_linkage_name
148 .byte 37 // DW_FORM_strx1
149 .byte 3 // DW_AT_name
150 .byte 37 // DW_FORM_strx1
151 .byte 58 // DW_AT_decl_file
152 .byte 11 // DW_FORM_data1
153 .byte 59 // DW_AT_decl_line
154 .byte 11 // DW_FORM_data1
155 .byte 60 // DW_AT_declaration
156 .byte 25 // DW_FORM_flag_present
157 .byte 63 // DW_AT_external
158 .byte 25 // DW_FORM_flag_present
159 .byte 0 // EOM(1)
160 .byte 0 // EOM(2)
161 .byte 3 // Abbreviation Code
162 .byte 5 // DW_TAG_formal_parameter
163 .byte 0 // DW_CHILDREN_no
164 .byte 73 // DW_AT_type
165 .byte 19 // DW_FORM_ref4
166 .byte 0 // EOM(1)
167 .byte 0 // EOM(2)
168 .byte 4 // Abbreviation Code
169 .byte 15 // DW_TAG_pointer_type
170 .byte 0 // DW_CHILDREN_no
171 .byte 73 // DW_AT_type
172 .byte 19 // DW_FORM_ref4
173 .byte 0 // EOM(1)
174 .byte 0 // EOM(2)
175 .byte 5 // Abbreviation Code
176 .byte 36 // DW_TAG_base_type
177 .byte 0 // DW_CHILDREN_no
178 .byte 3 // DW_AT_name
179 .byte 37 // DW_FORM_strx1
180 .byte 62 // DW_AT_encoding
181 .byte 11 // DW_FORM_data1
182 .byte 11 // DW_AT_byte_size
183 .byte 11 // DW_FORM_data1
184 .byte 0 // EOM(1)
185 .byte 0 // EOM(2)
186 .byte 6 // Abbreviation Code
187 .byte 46 // DW_TAG_subprogram
188 .byte 1 // DW_CHILDREN_yes
189 .byte 17 // DW_AT_low_pc
190 .byte 27 // DW_FORM_addrx
191 .byte 18 // DW_AT_high_pc
192 .byte 6 // DW_FORM_data4
193 .byte 64 // DW_AT_frame_base
194 .byte 24 // DW_FORM_exprloc
195 .byte 122 // DW_AT_call_all_calls
196 .byte 25 // DW_FORM_flag_present
197 .byte 110 // DW_AT_linkage_name
198 .byte 37 // DW_FORM_strx1
199 .byte 3 // DW_AT_name
200 .byte 37 // DW_FORM_strx1
201 .byte 58 // DW_AT_decl_file
202 .byte 11 // DW_FORM_data1
203 .byte 59 // DW_AT_decl_line
204 .byte 11 // DW_FORM_data1
205 .byte 63 // DW_AT_external
206 .byte 25 // DW_FORM_flag_present
207 .byte 0 // EOM(1)
208 .byte 0 // EOM(2)
209 .byte 7 // Abbreviation Code
210 .byte 52 // DW_TAG_variable
211 .byte 0 // DW_CHILDREN_no
212 .byte 2 // DW_AT_location
213 .byte 34 // DW_FORM_loclistx
214 .byte 3 // DW_AT_name
215 .byte 37 // DW_FORM_strx1
216 .byte 58 // DW_AT_decl_file
217 .byte 11 // DW_FORM_data1
218 .byte 59 // DW_AT_decl_line
219 .byte 11 // DW_FORM_data1
220 .byte 73 // DW_AT_type
221 .byte 19 // DW_FORM_ref4
222 .byte 0 // EOM(1)
223 .byte 0 // EOM(2)
224 .byte 8 // Abbreviation Code
225 .byte 72 // DW_TAG_call_site
226 .byte 0 // DW_CHILDREN_no
227 .byte 127 // DW_AT_call_origin
228 .byte 19 // DW_FORM_ref4
229 .byte 125 // DW_AT_call_return_pc
230 .byte 1 // DW_FORM_addr
231 .byte 0 // EOM(1)
232 .byte 0 // EOM(2)
233 .byte 0 // EOM(3)
234 .section .debug_info,"",@progbits
235 .Lcu_begin0:
236 .word .Ldebug_info_end0-.Ldebug_info_start0 // Length of Unit
237 .Ldebug_info_start0:
238 .hword 5 // DWARF version number
239 .byte 1 // DWARF Unit Type
240 .byte 8 // Address Size (in bytes)
241 .word .debug_abbrev // Offset Into Abbrev. Section
242 .byte 1 // Abbrev [1] 0xc:0x53 DW_TAG_compile_unit
243 .byte 0 // DW_AT_producer
244 .hword 33 // DW_AT_language
245 .byte 1 // DW_AT_name
246 .word .Lstr_offsets_base0 // DW_AT_str_offsets_base
247 .word .Lline_table_start0 // DW_AT_stmt_list
248 .byte 2 // DW_AT_comp_dir
249 .byte 0 // DW_AT_low_pc
250 .word .Lfunc_end0-.Lfunc_begin0 // DW_AT_high_pc
251 .word .Laddr_table_base0 // DW_AT_addr_base
252 .word .Lloclists_table_base0 // DW_AT_loclists_base
253 .byte 2 // Abbrev [2] 0x27:0xb DW_TAG_subprogram
254 .byte 3 // DW_AT_linkage_name
255 .byte 4 // DW_AT_name
256 .byte 0 // DW_AT_decl_file
257 .byte 1 // DW_AT_decl_line
258 // DW_AT_declaration
259 // DW_AT_external
260 .byte 3 // Abbrev [3] 0x2c:0x5 DW_TAG_formal_parameter
261 .word 50 // DW_AT_type
262 .byte 0 // End Of Children Mark
263 .byte 4 // Abbrev [4] 0x32:0x5 DW_TAG_pointer_type
264 .word 55 // DW_AT_type
265 .byte 5 // Abbrev [5] 0x37:0x4 DW_TAG_base_type
266 .byte 5 // DW_AT_name
267 .byte 5 // DW_AT_encoding
268 .byte 4 // DW_AT_byte_size
269 .byte 6 // Abbrev [6] 0x3b:0x23 DW_TAG_subprogram
270 .byte 0 // DW_AT_low_pc
271 .word .Lfunc_end0-.Lfunc_begin0 // DW_AT_high_pc
272 .byte 1 // DW_AT_frame_base
273 .byte 109
274 // DW_AT_call_all_calls
275 .byte 6 // DW_AT_linkage_name
276 .byte 7 // DW_AT_name
277 .byte 0 // DW_AT_decl_file
278 .byte 2 // DW_AT_decl_line
279 // DW_AT_external
280 .byte 7 // Abbrev [7] 0x47:0x9 DW_TAG_variable
281 .byte 0 // DW_AT_location
282 .byte 8 // DW_AT_name
283 .byte 0 // DW_AT_decl_file
284 .byte 3 // DW_AT_decl_line
285 .word 55 // DW_AT_type
286 .byte 8 // Abbrev [8] 0x50:0xd DW_TAG_call_site
287 .word 39 // DW_AT_call_origin
288 .xword .Ltmp2-.Lfunc_begin0 // DW_AT_call_return_pc
289 .byte 0 // End Of Children Mark
290 .byte 0 // End Of Children Mark
291 .Ldebug_info_end0:
292 .section .debug_addr,"",@progbits
293 .word .Ldebug_addr_end0-.Ldebug_addr_start0 // Length of contribution
294 .Ldebug_addr_start0:
295 .hword 5 // DWARF version number
296 .byte 8 // Address size
297 .byte 0 // Segment selector size
298 .Laddr_table_base0:
299 .xword .Lfunc_begin0
300 .Ldebug_addr_end0:
301 .ident "clang version 10.0.0 (git@github.com:llvm/llvm-project.git 0a094679914ccea0f9c8f03165132172544d9799)"
302 .section ".note.GNU-stack","",@progbits
303 .addrsig
304 .section .debug_line,"",@progbits
305 .Lline_table_start0: