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
:
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)
18 // CHECK-NEXT
: {{.*}}dbg.c:3
19 // CHECK-NEXT
: -4 4 ??
23 .file 0 "/code/build-llvm-cmake" "/tmp/dbg.c" md5 0x87e53f5ae1de5f2c6ec0baa7fe683192
24 .globl _Z1fv // -- Begin function _Z1fv
29 .loc 0 2 0 // /tmp/dbg.c:2:0
32 sub sp
, sp
, #32 // =32
33 stp x29
, x30
, [sp
, #16] // 16-byte Folded Spill
34 add x29
, sp
, #16 // =16
40 //DEBUG_VALUE
: f
:x
<- 1
41 .loc 0 4 3 prologue_end // /tmp/dbg.c:4:3
43 .loc 0 3 7 // /tmp/dbg.c:3:7
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
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
56 .size _Z1fv, .Lfunc_end0-_Z1fv
59 .section .debug_str_offsets,"",@progbits
64 .section .debug_str,"MS",@progbits,1
66 .asciz "clang version 10.0.0 (git@github.com:llvm/llvm-project.git 0a094679914ccea0f9c8f03165132172544d9799)" // string offset=0
68 .asciz "/tmp/dbg.c" // string offset=101
70 .asciz "/code/build-llvm-cmake" // string offset=112
72 .asciz "_Z3usePi" // string offset=135
74 .asciz "use" // string offset=144
76 .asciz "int" // string offset=148
78 .asciz "_Z1fv" // string offset=152
80 .asciz "f" // string offset=158
82 .asciz "x" // string offset=160
83 .section .debug_str_offsets,"",@progbits
93 .section .debug_loclists,"",@progbits
94 .word .Ldebug_loclist_table_end0-.Ldebug_loclist_table_start0 // Length
95 .Ldebug_loclist_table_start0:
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
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
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
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
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
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
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
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
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
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
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
234 .section .debug_info,"",@progbits
236 .word .Ldebug_info_end0-.Ldebug_info_start0 // Length of Unit
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
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
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
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
292 .section .debug_addr,"",@progbits
293 .word .Ldebug_addr_end0-.Ldebug_addr_start0 // Length of contribution
295 .hword 5 // DWARF version number
296 .byte 8 // Address size
297 .byte 0 // Segment selector size
301 .ident "clang version 10.0.0 (git@github.com:llvm/llvm-project.git 0a094679914ccea0f9c8f03165132172544d9799)"
302 .section ".note.GNU-stack","",@progbits
304 .section .debug_line,"",@progbits