xref: /llvm-project/llvm/test/tools/llvm-symbolizer/frame-loclist.s (revision 3e5eac035801abe81c6c9d7512f924e2f6de41b5)
1// Test various single-location and location list formats.
2// REQUIRES: aarch64-registered-target
3
4// RUN: llvm-mc -filetype=obj -triple=aarch64-linux-android -o %t.o %s
5// RUN: echo 'FRAME %t.o 0x4'  | llvm-symbolizer | FileCheck %s --check-prefix=CHECK0
6// RUN: echo 'FRAME %t.o 0x24' | llvm-symbolizer | FileCheck %s --check-prefix=CHECK1
7// RUN: echo 'FRAME %t.o 0x44' | llvm-symbolizer | FileCheck %s --check-prefix=CHECK2
8// RUN: echo 'FRAME %t.o 0x68' | llvm-symbolizer | FileCheck %s --check-prefix=CHECK3
9// RUN: echo 'FRAME %t.o 0x94' | llvm-symbolizer | FileCheck %s --check-prefix=CHECK4
10
11// Built from the following source with
12// clang -target aarch64-linux-android -O3 -g -S
13// and edited to replace DW_OP_fbreg with DW_OP_breg29 in func00 (search for EDIT below).
14//
15// void use(void *);
16// void usei(int);
17// void func00() {
18//   int x;
19//   use(&x);
20// }
21//
22// void func0() {
23//   int x;
24//   use(&x);
25// }
26//
27// int func1() {
28//   int x;
29//   use(&x);
30//   return x;
31// }
32//
33// int func2() {
34//   int x = 1;
35//   use(&x);
36//   return x;
37// }
38//
39// int func3(int b) {
40//   int x = b;
41//   usei(x);
42//   return x;
43// }
44
45// DW_AT_location        (DW_OP_breg29 W29-4)
46// CHECK0:      func00
47// CHECK0-NEXT: x
48// CHECK0-NEXT: {{.*}}dbg.c:4
49// CHECK0-NEXT: -4 4 ??
50
51// DW_AT_location        (DW_OP_fbreg -4)
52// CHECK1:      func0{{$}}
53// CHECK1-NEXT: x
54// CHECK1-NEXT: {{.*}}dbg.c:9
55// CHECK1-NEXT: -4 4 ??
56
57// DW_AT_location        (0x00000000:
58//   [0x000000000000004c, 0x0000000000000058): DW_OP_breg29 W29-4
59//   [0x0000000000000058, 0x000000000000005c): DW_OP_reg0 W0)
60// CHECK2:      func1
61// CHECK2-NEXT: x
62// CHECK2-NEXT: {{.*}}dbg.c:14
63// CHECK2-NEXT: -4 4 ??
64
65// DW_AT_location        (0x00000037:
66//    [0x0000000000000078, 0x0000000000000080): DW_OP_consts +1, DW_OP_stack_value
67//    [0x0000000000000080, 0x0000000000000088): DW_OP_breg29 W29-4
68//    [0x0000000000000088, 0x000000000000008c): DW_OP_reg0 W0)
69// CHECK3:      func2
70// CHECK3-NEXT: x
71// CHECK3-NEXT: {{.*}}dbg.c:20
72// CHECK3-NEXT: -4 4 ??
73
74// No stack location.
75// DW_AT_location        (0x00000083:
76//     [0x0000000000000090, 0x00000000000000a0): DW_OP_reg0 W0
77//     [0x00000000000000a0, 0x00000000000000ac): DW_OP_reg19 W19)
78// CHECK4:      func3
79// CHECK4-NEXT: b
80// CHECK4-NEXT: {{.*}}dbg.c:25
81// CHECK4-NEXT: ?? 4 ??
82// CHECK4-NEXT: func3
83// CHECK4-NEXT: x
84// CHECK4-NEXT: {{.*}}dbg.c:26
85// CHECK4-NEXT: ?? 4 ??
86//
87	.text
88	.file	"dbg.c"
89	.globl	func00                  // -- Begin function func00
90	.p2align	2
91	.type	func00,@function
92func00:                                 // @func00
93.Lfunc_begin0:
94	.file	1 "/tmp" "dbg.c"
95	.loc	1 3 0                   // /tmp/dbg.c:3:0
96	.cfi_sections .debug_frame
97	.cfi_startproc
98// %bb.0:                               // %entry
99	sub	sp, sp, #32             // =32
100	stp	x29, x30, [sp, #16]     // 16-byte Folded Spill
101	add	x29, sp, #16            // =16
102	.cfi_def_cfa w29, 16
103	.cfi_offset w30, -8
104	.cfi_offset w29, -16
105.Ltmp0:
106	//DEBUG_VALUE: func00:x <- [DW_OP_constu 4, DW_OP_minus, DW_OP_deref] $fp
107	.loc	1 5 3 prologue_end      // /tmp/dbg.c:5:3
108	sub	x0, x29, #4             // =4
109	bl	use
110.Ltmp1:
111	.loc	1 6 1                   // /tmp/dbg.c:6:1
112	ldp	x29, x30, [sp, #16]     // 16-byte Folded Reload
113	add	sp, sp, #32             // =32
114	ret
115.Ltmp2:
116.Lfunc_end0:
117	.size	func00, .Lfunc_end0-func00
118	.cfi_endproc
119                                        // -- End function
120	.globl	func0                   // -- Begin function func0
121	.p2align	2
122	.type	func0,@function
123func0:                                  // @func0
124.Lfunc_begin1:
125	.loc	1 8 0                   // /tmp/dbg.c:8:0
126	.cfi_startproc
127// %bb.0:                               // %entry
128	sub	sp, sp, #32             // =32
129	stp	x29, x30, [sp, #16]     // 16-byte Folded Spill
130	add	x29, sp, #16            // =16
131	.cfi_def_cfa w29, 16
132	.cfi_offset w30, -8
133	.cfi_offset w29, -16
134.Ltmp3:
135	//DEBUG_VALUE: func0:x <- [DW_OP_constu 4, DW_OP_minus, DW_OP_deref] $fp
136	.loc	1 10 3 prologue_end     // /tmp/dbg.c:10:3
137	sub	x0, x29, #4             // =4
138	bl	use
139.Ltmp4:
140	.loc	1 11 1                  // /tmp/dbg.c:11:1
141	ldp	x29, x30, [sp, #16]     // 16-byte Folded Reload
142	add	sp, sp, #32             // =32
143	ret
144.Ltmp5:
145.Lfunc_end1:
146	.size	func0, .Lfunc_end1-func0
147	.cfi_endproc
148                                        // -- End function
149	.globl	func1                   // -- Begin function func1
150	.p2align	2
151	.type	func1,@function
152func1:                                  // @func1
153.Lfunc_begin2:
154	.loc	1 13 0                  // /tmp/dbg.c:13:0
155	.cfi_startproc
156// %bb.0:                               // %entry
157	sub	sp, sp, #32             // =32
158	stp	x29, x30, [sp, #16]     // 16-byte Folded Spill
159	add	x29, sp, #16            // =16
160	.cfi_def_cfa w29, 16
161	.cfi_offset w30, -8
162	.cfi_offset w29, -16
163.Ltmp6:
164	//DEBUG_VALUE: func1:x <- [DW_OP_constu 4, DW_OP_minus, DW_OP_deref] $fp
165	.loc	1 15 3 prologue_end     // /tmp/dbg.c:15:3
166	sub	x0, x29, #4             // =4
167	bl	use
168.Ltmp7:
169	.loc	1 16 10                 // /tmp/dbg.c:16:10
170	ldur	w0, [x29, #-4]
171.Ltmp8:
172	//DEBUG_VALUE: func1:x <- $w0
173	.loc	1 16 3 is_stmt 0        // /tmp/dbg.c:16:3
174	ldp	x29, x30, [sp, #16]     // 16-byte Folded Reload
175	add	sp, sp, #32             // =32
176	ret
177.Ltmp9:
178.Lfunc_end2:
179	.size	func1, .Lfunc_end2-func1
180	.cfi_endproc
181                                        // -- End function
182	.globl	func2                   // -- Begin function func2
183	.p2align	2
184	.type	func2,@function
185func2:                                  // @func2
186.Lfunc_begin3:
187	.loc	1 19 0 is_stmt 1        // /tmp/dbg.c:19:0
188	.cfi_startproc
189// %bb.0:                               // %entry
190	sub	sp, sp, #32             // =32
191	stp	x29, x30, [sp, #16]     // 16-byte Folded Spill
192	add	x29, sp, #16            // =16
193	.cfi_def_cfa w29, 16
194	.cfi_offset w30, -8
195	.cfi_offset w29, -16
196	mov	w8, #1
197.Ltmp10:
198	//DEBUG_VALUE: func2:x <- 1
199	.loc	1 21 3 prologue_end     // /tmp/dbg.c:21:3
200	sub	x0, x29, #4             // =4
201	.loc	1 20 7                  // /tmp/dbg.c:20:7
202	stur	w8, [x29, #-4]
203.Ltmp11:
204	//DEBUG_VALUE: func2:x <- [DW_OP_constu 4, DW_OP_minus, DW_OP_deref] $fp
205	.loc	1 21 3                  // /tmp/dbg.c:21:3
206	bl	use
207.Ltmp12:
208	.loc	1 22 10                 // /tmp/dbg.c:22:10
209	ldur	w0, [x29, #-4]
210.Ltmp13:
211	//DEBUG_VALUE: func2:x <- $w0
212	.loc	1 22 3 is_stmt 0        // /tmp/dbg.c:22:3
213	ldp	x29, x30, [sp, #16]     // 16-byte Folded Reload
214	add	sp, sp, #32             // =32
215	ret
216.Ltmp14:
217.Lfunc_end3:
218	.size	func2, .Lfunc_end3-func2
219	.cfi_endproc
220                                        // -- End function
221	.globl	func3                   // -- Begin function func3
222	.p2align	2
223	.type	func3,@function
224func3:                                  // @func3
225.Lfunc_begin4:
226	.loc	1 25 0 is_stmt 1        // /tmp/dbg.c:25:0
227	.cfi_startproc
228// %bb.0:                               // %entry
229	//DEBUG_VALUE: func3:b <- $w0
230	stp	x29, x30, [sp, #-32]!   // 16-byte Folded Spill
231	str	x19, [sp, #16]          // 8-byte Folded Spill
232	mov	x29, sp
233	.cfi_def_cfa w29, 32
234	.cfi_offset w19, -16
235	.cfi_offset w30, -24
236	.cfi_offset w29, -32
237.Ltmp15:
238	//DEBUG_VALUE: func3:x <- $w0
239	mov	w19, w0
240.Ltmp16:
241	//DEBUG_VALUE: func3:x <- $w19
242	//DEBUG_VALUE: func3:b <- $w19
243	.loc	1 27 3 prologue_end     // /tmp/dbg.c:27:3
244	bl	usei
245.Ltmp17:
246	.loc	1 28 3                  // /tmp/dbg.c:28:3
247	mov	w0, w19
248	ldr	x19, [sp, #16]          // 8-byte Folded Reload
249.Ltmp18:
250	ldp	x29, x30, [sp], #32     // 16-byte Folded Reload
251	ret
252.Ltmp19:
253.Lfunc_end4:
254	.size	func3, .Lfunc_end4-func3
255	.cfi_endproc
256                                        // -- End function
257	.section	.debug_str,"MS",@progbits,1
258.Linfo_string0:
259	.asciz	"clang version 10.0.0 (git@github.com:llvm/llvm-project.git 092ef9c6cf4678d2b8df7738110ecd405fe1fe3d)" // string offset=0
260.Linfo_string1:
261	.asciz	"/tmp/dbg.c"            // string offset=101
262.Linfo_string2:
263	.asciz	"/code/build-llvm-cmake" // string offset=112
264.Linfo_string3:
265	.asciz	"use"                   // string offset=135
266.Linfo_string4:
267	.asciz	"usei"                  // string offset=139
268.Linfo_string5:
269	.asciz	"int"                   // string offset=144
270.Linfo_string6:
271	.asciz	"func00"                // string offset=148
272.Linfo_string7:
273	.asciz	"func0"                 // string offset=155
274.Linfo_string8:
275	.asciz	"func1"                 // string offset=161
276.Linfo_string9:
277	.asciz	"func2"                 // string offset=167
278.Linfo_string10:
279	.asciz	"func3"                 // string offset=173
280.Linfo_string11:
281	.asciz	"x"                     // string offset=179
282.Linfo_string12:
283	.asciz	"b"                     // string offset=181
284	.section	.debug_loc,"",@progbits
285.Ldebug_loc0:
286	.xword	.Ltmp6-.Lfunc_begin0
287	.xword	.Ltmp8-.Lfunc_begin0
288	.hword	2                       // Loc expr size
289	.byte	141                     // DW_OP_breg29
290	.byte	124                     // -4
291	.xword	.Ltmp8-.Lfunc_begin0
292	.xword	.Lfunc_end2-.Lfunc_begin0
293	.hword	1                       // Loc expr size
294	.byte	80                      // DW_OP_reg0
295	.xword	0
296	.xword	0
297.Ldebug_loc1:
298	.xword	.Ltmp10-.Lfunc_begin0
299	.xword	.Ltmp11-.Lfunc_begin0
300	.hword	3                       // Loc expr size
301	.byte	17                      // DW_OP_consts
302	.byte	1                       // 1
303	.byte	159                     // DW_OP_stack_value
304	.xword	.Ltmp11-.Lfunc_begin0
305	.xword	.Ltmp13-.Lfunc_begin0
306	.hword	2                       // Loc expr size
307	.byte	141                     // DW_OP_breg29
308	.byte	124                     // -4
309	.xword	.Ltmp13-.Lfunc_begin0
310	.xword	.Lfunc_end3-.Lfunc_begin0
311	.hword	1                       // Loc expr size
312	.byte	80                      // DW_OP_reg0
313	.xword	0
314	.xword	0
315.Ldebug_loc2:
316	.xword	.Lfunc_begin4-.Lfunc_begin0
317	.xword	.Ltmp16-.Lfunc_begin0
318	.hword	1                       // Loc expr size
319	.byte	80                      // DW_OP_reg0
320	.xword	.Ltmp16-.Lfunc_begin0
321	.xword	.Ltmp18-.Lfunc_begin0
322	.hword	1                       // Loc expr size
323	.byte	99                      // DW_OP_reg19
324	.xword	0
325	.xword	0
326.Ldebug_loc3:
327	.xword	.Ltmp15-.Lfunc_begin0
328	.xword	.Ltmp16-.Lfunc_begin0
329	.hword	1                       // Loc expr size
330	.byte	80                      // DW_OP_reg0
331	.xword	.Ltmp16-.Lfunc_begin0
332	.xword	.Ltmp18-.Lfunc_begin0
333	.hword	1                       // Loc expr size
334	.byte	99                      // DW_OP_reg19
335	.xword	0
336	.xword	0
337	.section	.debug_abbrev,"",@progbits
338	.byte	1                       // Abbreviation Code
339	.byte	17                      // DW_TAG_compile_unit
340	.byte	1                       // DW_CHILDREN_yes
341	.byte	37                      // DW_AT_producer
342	.byte	14                      // DW_FORM_strp
343	.byte	19                      // DW_AT_language
344	.byte	5                       // DW_FORM_data2
345	.byte	3                       // DW_AT_name
346	.byte	14                      // DW_FORM_strp
347	.byte	16                      // DW_AT_stmt_list
348	.byte	23                      // DW_FORM_sec_offset
349	.byte	27                      // DW_AT_comp_dir
350	.byte	14                      // DW_FORM_strp
351	.byte	17                      // DW_AT_low_pc
352	.byte	1                       // DW_FORM_addr
353	.byte	18                      // DW_AT_high_pc
354	.byte	6                       // DW_FORM_data4
355	.byte	0                       // EOM(1)
356	.byte	0                       // EOM(2)
357	.byte	2                       // Abbreviation Code
358	.byte	46                      // DW_TAG_subprogram
359	.byte	1                       // DW_CHILDREN_yes
360	.byte	17                      // DW_AT_low_pc
361	.byte	1                       // DW_FORM_addr
362	.byte	18                      // DW_AT_high_pc
363	.byte	6                       // DW_FORM_data4
364	.byte	64                      // DW_AT_frame_base
365	.byte	24                      // DW_FORM_exprloc
366	.ascii	"\227B"                 // DW_AT_GNU_all_call_sites
367	.byte	25                      // DW_FORM_flag_present
368	.byte	3                       // DW_AT_name
369	.byte	14                      // DW_FORM_strp
370	.byte	58                      // DW_AT_decl_file
371	.byte	11                      // DW_FORM_data1
372	.byte	59                      // DW_AT_decl_line
373	.byte	11                      // DW_FORM_data1
374	.byte	63                      // DW_AT_external
375	.byte	25                      // DW_FORM_flag_present
376	.byte	0                       // EOM(1)
377	.byte	0                       // EOM(2)
378	.byte	3                       // Abbreviation Code
379	.byte	52                      // DW_TAG_variable
380	.byte	0                       // DW_CHILDREN_no
381	.byte	2                       // DW_AT_location
382	.byte	24                      // DW_FORM_exprloc
383	.byte	3                       // DW_AT_name
384	.byte	14                      // DW_FORM_strp
385	.byte	58                      // DW_AT_decl_file
386	.byte	11                      // DW_FORM_data1
387	.byte	59                      // DW_AT_decl_line
388	.byte	11                      // DW_FORM_data1
389	.byte	73                      // DW_AT_type
390	.byte	19                      // DW_FORM_ref4
391	.byte	0                       // EOM(1)
392	.byte	0                       // EOM(2)
393	.byte	4                       // Abbreviation Code
394	.ascii	"\211\202\001"          // DW_TAG_GNU_call_site
395	.byte	0                       // DW_CHILDREN_no
396	.byte	49                      // DW_AT_abstract_origin
397	.byte	19                      // DW_FORM_ref4
398	.byte	17                      // DW_AT_low_pc
399	.byte	1                       // DW_FORM_addr
400	.byte	0                       // EOM(1)
401	.byte	0                       // EOM(2)
402	.byte	5                       // Abbreviation Code
403	.byte	46                      // DW_TAG_subprogram
404	.byte	1                       // DW_CHILDREN_yes
405	.byte	3                       // DW_AT_name
406	.byte	14                      // DW_FORM_strp
407	.byte	58                      // DW_AT_decl_file
408	.byte	11                      // DW_FORM_data1
409	.byte	59                      // DW_AT_decl_line
410	.byte	11                      // DW_FORM_data1
411	.byte	39                      // DW_AT_prototyped
412	.byte	25                      // DW_FORM_flag_present
413	.byte	60                      // DW_AT_declaration
414	.byte	25                      // DW_FORM_flag_present
415	.byte	63                      // DW_AT_external
416	.byte	25                      // DW_FORM_flag_present
417	.byte	0                       // EOM(1)
418	.byte	0                       // EOM(2)
419	.byte	6                       // Abbreviation Code
420	.byte	5                       // DW_TAG_formal_parameter
421	.byte	0                       // DW_CHILDREN_no
422	.byte	73                      // DW_AT_type
423	.byte	19                      // DW_FORM_ref4
424	.byte	0                       // EOM(1)
425	.byte	0                       // EOM(2)
426	.byte	7                       // Abbreviation Code
427	.byte	15                      // DW_TAG_pointer_type
428	.byte	0                       // DW_CHILDREN_no
429	.byte	0                       // EOM(1)
430	.byte	0                       // EOM(2)
431	.byte	8                       // Abbreviation Code
432	.byte	46                      // DW_TAG_subprogram
433	.byte	1                       // DW_CHILDREN_yes
434	.byte	17                      // DW_AT_low_pc
435	.byte	1                       // DW_FORM_addr
436	.byte	18                      // DW_AT_high_pc
437	.byte	6                       // DW_FORM_data4
438	.byte	64                      // DW_AT_frame_base
439	.byte	24                      // DW_FORM_exprloc
440	.ascii	"\227B"                 // DW_AT_GNU_all_call_sites
441	.byte	25                      // DW_FORM_flag_present
442	.byte	3                       // DW_AT_name
443	.byte	14                      // DW_FORM_strp
444	.byte	58                      // DW_AT_decl_file
445	.byte	11                      // DW_FORM_data1
446	.byte	59                      // DW_AT_decl_line
447	.byte	11                      // DW_FORM_data1
448	.byte	73                      // DW_AT_type
449	.byte	19                      // DW_FORM_ref4
450	.byte	63                      // DW_AT_external
451	.byte	25                      // DW_FORM_flag_present
452	.byte	0                       // EOM(1)
453	.byte	0                       // EOM(2)
454	.byte	9                       // Abbreviation Code
455	.byte	52                      // DW_TAG_variable
456	.byte	0                       // DW_CHILDREN_no
457	.byte	2                       // DW_AT_location
458	.byte	23                      // DW_FORM_sec_offset
459	.byte	3                       // DW_AT_name
460	.byte	14                      // DW_FORM_strp
461	.byte	58                      // DW_AT_decl_file
462	.byte	11                      // DW_FORM_data1
463	.byte	59                      // DW_AT_decl_line
464	.byte	11                      // DW_FORM_data1
465	.byte	73                      // DW_AT_type
466	.byte	19                      // DW_FORM_ref4
467	.byte	0                       // EOM(1)
468	.byte	0                       // EOM(2)
469	.byte	10                      // Abbreviation Code
470	.byte	46                      // DW_TAG_subprogram
471	.byte	1                       // DW_CHILDREN_yes
472	.byte	17                      // DW_AT_low_pc
473	.byte	1                       // DW_FORM_addr
474	.byte	18                      // DW_AT_high_pc
475	.byte	6                       // DW_FORM_data4
476	.byte	64                      // DW_AT_frame_base
477	.byte	24                      // DW_FORM_exprloc
478	.ascii	"\227B"                 // DW_AT_GNU_all_call_sites
479	.byte	25                      // DW_FORM_flag_present
480	.byte	3                       // DW_AT_name
481	.byte	14                      // DW_FORM_strp
482	.byte	58                      // DW_AT_decl_file
483	.byte	11                      // DW_FORM_data1
484	.byte	59                      // DW_AT_decl_line
485	.byte	11                      // DW_FORM_data1
486	.byte	39                      // DW_AT_prototyped
487	.byte	25                      // DW_FORM_flag_present
488	.byte	73                      // DW_AT_type
489	.byte	19                      // DW_FORM_ref4
490	.byte	63                      // DW_AT_external
491	.byte	25                      // DW_FORM_flag_present
492	.byte	0                       // EOM(1)
493	.byte	0                       // EOM(2)
494	.byte	11                      // Abbreviation Code
495	.byte	5                       // DW_TAG_formal_parameter
496	.byte	0                       // DW_CHILDREN_no
497	.byte	2                       // DW_AT_location
498	.byte	23                      // DW_FORM_sec_offset
499	.byte	3                       // DW_AT_name
500	.byte	14                      // DW_FORM_strp
501	.byte	58                      // DW_AT_decl_file
502	.byte	11                      // DW_FORM_data1
503	.byte	59                      // DW_AT_decl_line
504	.byte	11                      // DW_FORM_data1
505	.byte	73                      // DW_AT_type
506	.byte	19                      // DW_FORM_ref4
507	.byte	0                       // EOM(1)
508	.byte	0                       // EOM(2)
509	.byte	12                      // Abbreviation Code
510	.byte	36                      // DW_TAG_base_type
511	.byte	0                       // DW_CHILDREN_no
512	.byte	3                       // DW_AT_name
513	.byte	14                      // DW_FORM_strp
514	.byte	62                      // DW_AT_encoding
515	.byte	11                      // DW_FORM_data1
516	.byte	11                      // DW_AT_byte_size
517	.byte	11                      // DW_FORM_data1
518	.byte	0                       // EOM(1)
519	.byte	0                       // EOM(2)
520	.byte	0                       // EOM(3)
521	.section	.debug_info,"",@progbits
522.Lcu_begin0:
523	.word	.Ldebug_info_end0-.Ldebug_info_start0 // Length of Unit
524.Ldebug_info_start0:
525	.hword	4                       // DWARF version number
526	.word	.debug_abbrev           // Offset Into Abbrev. Section
527	.byte	8                       // Address Size (in bytes)
528	.byte	1                       // Abbrev [1] 0xb:0x155 DW_TAG_compile_unit
529	.word	.Linfo_string0          // DW_AT_producer
530	.hword	12                      // DW_AT_language
531	.word	.Linfo_string1          // DW_AT_name
532	.word	.Lline_table_start0     // DW_AT_stmt_list
533	.word	.Linfo_string2          // DW_AT_comp_dir
534	.xword	.Lfunc_begin0           // DW_AT_low_pc
535	.word	.Lfunc_end4-.Lfunc_begin0 // DW_AT_high_pc
536	.byte	2                       // Abbrev [2] 0x2a:0x31 DW_TAG_subprogram
537	.xword	.Lfunc_begin0           // DW_AT_low_pc
538	.word	.Lfunc_end0-.Lfunc_begin0 // DW_AT_high_pc
539	.byte	1                       // DW_AT_frame_base
540	.byte	109
541                                        // DW_AT_GNU_all_call_sites
542	.word	.Linfo_string6          // DW_AT_name
543	.byte	1                       // DW_AT_decl_file
544	.byte	3                       // DW_AT_decl_line
545                                        // DW_AT_external
546	.byte	3                       // Abbrev [3] 0x3f:0xe DW_TAG_variable
547	.byte	2                       // DW_AT_location
548	.byte	141                     // DW_OP_breg29  !!! EDIT: 145 (fbreg) to 141 (breg29)
549	.byte	124                     // -4
550	.word	.Linfo_string11         // DW_AT_name
551	.byte	1                       // DW_AT_decl_file
552	.byte	4                       // DW_AT_decl_line
553	.word	344                     // DW_AT_type
554	.byte	4                       // Abbrev [4] 0x4d:0xd DW_TAG_GNU_call_site
555	.word	91                      // DW_AT_abstract_origin
556	.xword	.Ltmp1                  // DW_AT_low_pc
557	.byte	0                       // End Of Children Mark
558	.byte	5                       // Abbrev [5] 0x5b:0xd DW_TAG_subprogram
559	.word	.Linfo_string3          // DW_AT_name
560	.byte	1                       // DW_AT_decl_file
561	.byte	1                       // DW_AT_decl_line
562                                        // DW_AT_prototyped
563                                        // DW_AT_declaration
564                                        // DW_AT_external
565	.byte	6                       // Abbrev [6] 0x62:0x5 DW_TAG_formal_parameter
566	.word	104                     // DW_AT_type
567	.byte	0                       // End Of Children Mark
568	.byte	7                       // Abbrev [7] 0x68:0x1 DW_TAG_pointer_type
569	.byte	2                       // Abbrev [2] 0x69:0x31 DW_TAG_subprogram
570	.xword	.Lfunc_begin1           // DW_AT_low_pc
571	.word	.Lfunc_end1-.Lfunc_begin1 // DW_AT_high_pc
572	.byte	1                       // DW_AT_frame_base
573	.byte	109
574                                        // DW_AT_GNU_all_call_sites
575	.word	.Linfo_string7          // DW_AT_name
576	.byte	1                       // DW_AT_decl_file
577	.byte	8                       // DW_AT_decl_line
578                                        // DW_AT_external
579	.byte	3                       // Abbrev [3] 0x7e:0xe DW_TAG_variable
580	.byte	2                       // DW_AT_location
581	.byte	145
582	.byte	124
583	.word	.Linfo_string11         // DW_AT_name
584	.byte	1                       // DW_AT_decl_file
585	.byte	9                       // DW_AT_decl_line
586	.word	344                     // DW_AT_type
587	.byte	4                       // Abbrev [4] 0x8c:0xd DW_TAG_GNU_call_site
588	.word	91                      // DW_AT_abstract_origin
589	.xword	.Ltmp4                  // DW_AT_low_pc
590	.byte	0                       // End Of Children Mark
591	.byte	8                       // Abbrev [8] 0x9a:0x36 DW_TAG_subprogram
592	.xword	.Lfunc_begin2           // DW_AT_low_pc
593	.word	.Lfunc_end2-.Lfunc_begin2 // DW_AT_high_pc
594	.byte	1                       // DW_AT_frame_base
595	.byte	109
596                                        // DW_AT_GNU_all_call_sites
597	.word	.Linfo_string8          // DW_AT_name
598	.byte	1                       // DW_AT_decl_file
599	.byte	13                      // DW_AT_decl_line
600	.word	344                     // DW_AT_type
601                                        // DW_AT_external
602	.byte	9                       // Abbrev [9] 0xb3:0xf DW_TAG_variable
603	.word	.Ldebug_loc0            // DW_AT_location
604	.word	.Linfo_string11         // DW_AT_name
605	.byte	1                       // DW_AT_decl_file
606	.byte	14                      // DW_AT_decl_line
607	.word	344                     // DW_AT_type
608	.byte	4                       // Abbrev [4] 0xc2:0xd DW_TAG_GNU_call_site
609	.word	91                      // DW_AT_abstract_origin
610	.xword	.Ltmp7                  // DW_AT_low_pc
611	.byte	0                       // End Of Children Mark
612	.byte	8                       // Abbrev [8] 0xd0:0x36 DW_TAG_subprogram
613	.xword	.Lfunc_begin3           // DW_AT_low_pc
614	.word	.Lfunc_end3-.Lfunc_begin3 // DW_AT_high_pc
615	.byte	1                       // DW_AT_frame_base
616	.byte	109
617                                        // DW_AT_GNU_all_call_sites
618	.word	.Linfo_string9          // DW_AT_name
619	.byte	1                       // DW_AT_decl_file
620	.byte	19                      // DW_AT_decl_line
621	.word	344                     // DW_AT_type
622                                        // DW_AT_external
623	.byte	9                       // Abbrev [9] 0xe9:0xf DW_TAG_variable
624	.word	.Ldebug_loc1            // DW_AT_location
625	.word	.Linfo_string11         // DW_AT_name
626	.byte	1                       // DW_AT_decl_file
627	.byte	20                      // DW_AT_decl_line
628	.word	344                     // DW_AT_type
629	.byte	4                       // Abbrev [4] 0xf8:0xd DW_TAG_GNU_call_site
630	.word	91                      // DW_AT_abstract_origin
631	.xword	.Ltmp12                 // DW_AT_low_pc
632	.byte	0                       // End Of Children Mark
633	.byte	10                      // Abbrev [10] 0x106:0x45 DW_TAG_subprogram
634	.xword	.Lfunc_begin4           // DW_AT_low_pc
635	.word	.Lfunc_end4-.Lfunc_begin4 // DW_AT_high_pc
636	.byte	1                       // DW_AT_frame_base
637	.byte	109
638                                        // DW_AT_GNU_all_call_sites
639	.word	.Linfo_string10         // DW_AT_name
640	.byte	1                       // DW_AT_decl_file
641	.byte	25                      // DW_AT_decl_line
642                                        // DW_AT_prototyped
643	.word	344                     // DW_AT_type
644                                        // DW_AT_external
645	.byte	11                      // Abbrev [11] 0x11f:0xf DW_TAG_formal_parameter
646	.word	.Ldebug_loc2            // DW_AT_location
647	.word	.Linfo_string12         // DW_AT_name
648	.byte	1                       // DW_AT_decl_file
649	.byte	25                      // DW_AT_decl_line
650	.word	344                     // DW_AT_type
651	.byte	9                       // Abbrev [9] 0x12e:0xf DW_TAG_variable
652	.word	.Ldebug_loc3            // DW_AT_location
653	.word	.Linfo_string11         // DW_AT_name
654	.byte	1                       // DW_AT_decl_file
655	.byte	26                      // DW_AT_decl_line
656	.word	344                     // DW_AT_type
657	.byte	4                       // Abbrev [4] 0x13d:0xd DW_TAG_GNU_call_site
658	.word	331                     // DW_AT_abstract_origin
659	.xword	.Ltmp17                 // DW_AT_low_pc
660	.byte	0                       // End Of Children Mark
661	.byte	5                       // Abbrev [5] 0x14b:0xd DW_TAG_subprogram
662	.word	.Linfo_string4          // DW_AT_name
663	.byte	1                       // DW_AT_decl_file
664	.byte	2                       // DW_AT_decl_line
665                                        // DW_AT_prototyped
666                                        // DW_AT_declaration
667                                        // DW_AT_external
668	.byte	6                       // Abbrev [6] 0x152:0x5 DW_TAG_formal_parameter
669	.word	344                     // DW_AT_type
670	.byte	0                       // End Of Children Mark
671	.byte	12                      // Abbrev [12] 0x158:0x7 DW_TAG_base_type
672	.word	.Linfo_string5          // DW_AT_name
673	.byte	5                       // DW_AT_encoding
674	.byte	4                       // DW_AT_byte_size
675	.byte	0                       // End Of Children Mark
676.Ldebug_info_end0:
677	.ident	"clang version 10.0.0 (git@github.com:llvm/llvm-project.git 092ef9c6cf4678d2b8df7738110ecd405fe1fe3d)"
678	.section	".note.GNU-stack","",@progbits
679	.section	.debug_line,"",@progbits
680.Lline_table_start0:
681