xref: /llvm-project/bolt/test/X86/dwarf5-debug-names-cross-cu.s (revision f3cfe016c5d8429c0dccfa6f85442e2ea0d45a58)
1
2# REQUIRES: system-linux
3
4# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %s -o %tmain.o
5# RUN: %clang %cflags -dwarf-5 %tmain.o -o %t.exe -Wl,-q
6# RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections
7# RUN: llvm-dwarfdump --debug-info -r 0 --debug-names %t.bolt > %t.txt
8# RUN: cat %t.txt | FileCheck --check-prefix=CHECK %s
9
10## This test checks that BOLT generates Entries for DW_AT_abstract_origin when it has cross cu reference.
11
12# CHECK: [[OFFSET1:0x[0-9a-f]*]]: Compile Unit
13# CHECK: [[OFFSET2:0x[0-9a-f]*]]: Compile Unit
14# CHECK:        Name Index @ 0x0 {
15# CHECK-NEXT:     Header {
16# CHECK-NEXT:       Length: 0xD2
17# CHECK-NEXT:       Format: DWARF32
18# CHECK-NEXT:       Version: 5
19# CHECK-NEXT:       CU count: 2
20# CHECK-NEXT:       Local TU count: 0
21# CHECK-NEXT:       Foreign TU count: 0
22# CHECK-NEXT:       Bucket count: 5
23# CHECK-NEXT:       Name count: 5
24# CHECK-NEXT:       Abbreviations table size: 0x1F
25# CHECK-NEXT:       Augmentation: 'BOLT'
26# CHECK-NEXT:     }
27# CHECK-NEXT:     Compilation Unit offsets [
28# CHECK-NEXT:       CU[0]: [[OFFSET1]]
29# CHECK-NEXT:       CU[1]: [[OFFSET2]]
30# CHECK-NEXT:     ]
31# CHECK-NEXT:     Abbreviations [
32# CHECK-NEXT:       Abbreviation [[ABBREV1:0x[0-9a-f]*]] {
33# CHECK-NEXT:         Tag: DW_TAG_subprogram
34# CHECK-NEXT:         DW_IDX_compile_unit: DW_FORM_data1
35# CHECK-NEXT:         DW_IDX_die_offset: DW_FORM_ref4
36# CHECK-NEXT:         DW_IDX_parent: DW_FORM_flag_present
37# CHECK-NEXT:       }
38# CHECK-NEXT:       Abbreviation [[ABBREV2:0x[0-9a-f]*]] {
39# CHECK-NEXT:         Tag: DW_TAG_inlined_subroutine
40# CHECK-NEXT:         DW_IDX_compile_unit: DW_FORM_data1
41# CHECK-NEXT:         DW_IDX_die_offset: DW_FORM_ref4
42# CHECK-NEXT:         DW_IDX_parent: DW_FORM_ref4
43# CHECK-NEXT:       }
44# CHECK-NEXT:       Abbreviation [[ABBREV3:0x[0-9a-f]*]] {
45# CHECK-NEXT:         Tag: DW_TAG_base_type
46# CHECK-NEXT:         DW_IDX_compile_unit: DW_FORM_data1
47# CHECK-NEXT:         DW_IDX_die_offset: DW_FORM_ref4
48# CHECK-NEXT:         DW_IDX_parent: DW_FORM_flag_present
49# CHECK-NEXT:       }
50# CHECK-NEXT:     ]
51# CHECK-NEXT:     Bucket 0 [
52# CHECK-NEXT:       EMPTY
53# CHECK-NEXT:     ]
54# CHECK-NEXT:     Bucket 1 [
55# CHECK-NEXT:       Name 1 {
56# CHECK-NEXT:         Hash: 0x7C9A7F6A
57# CHECK-NEXT:         String: {{.+}} "main"
58# CHECK-NEXT:         Entry @ [[ENTRY:0x[0-9a-f]*]] {
59# CHECK-NEXT:           Abbrev: [[ABBREV1]]
60# CHECK-NEXT:           Tag: DW_TAG_subprogram
61# CHECK-NEXT:           DW_IDX_compile_unit: 0x00
62# CHECK-NEXT:           DW_IDX_die_offset: 0x00000024
63# CHECK-NEXT:           DW_IDX_parent: <parent not indexed>
64# CHECK-NEXT:         }
65# CHECK-NEXT:       }
66# CHECK-NEXT:       Name 2 {
67# CHECK-NEXT:         Hash: 0xB5063CFE
68# CHECK-NEXT:         String: {{.+}} "_Z3fooi"
69# CHECK-NEXT:         Entry @ {{.+}} {
70# CHECK-NEXT:           Abbrev: [[ABBREV1]]
71# CHECK-NEXT:           Tag: DW_TAG_subprogram
72# CHECK-NEXT:           DW_IDX_compile_unit: 0x01
73# CHECK-NEXT:           DW_IDX_die_offset: 0x0000003a
74# CHECK-NEXT:           DW_IDX_parent: <parent not indexed>
75# CHECK-NEXT:         }
76# CHECK-NEXT:         Entry @ {{.+}} {
77# CHECK-NEXT:           Abbrev: [[ABBREV2]]
78# CHECK-NEXT:           Tag: DW_TAG_inlined_subroutine
79# CHECK-NEXT:           DW_IDX_compile_unit: 0x00
80# CHECK-NEXT:           DW_IDX_die_offset: 0x00000054
81# CHECK-NEXT:           DW_IDX_parent: Entry @ [[ENTRY]]
82# CHECK-NEXT:         }
83# CHECK-NEXT:       }
84# CHECK-NEXT:     ]
85# CHECK-NEXT:     Bucket 2 [
86# CHECK-NEXT:       EMPTY
87# CHECK-NEXT:     ]
88# CHECK-NEXT:     Bucket 3 [
89# CHECK-NEXT:       Name 3 {
90# CHECK-NEXT:         Hash: 0xB888030
91# CHECK-NEXT:         String: {{.+}} "int"
92# CHECK-NEXT:         Entry @ {{.+}} {
93# CHECK-NEXT:           Abbrev: [[ABBREV3]]
94# CHECK-NEXT:           Tag: DW_TAG_base_type
95# CHECK-NEXT:           DW_IDX_compile_unit: 0x01
96# CHECK-NEXT:           DW_IDX_die_offset: 0x00000036
97# CHECK-NEXT:           DW_IDX_parent: <parent not indexed>
98# CHECK-NEXT:         }
99# CHECK-NEXT:       }
100# CHECK-NEXT:     ]
101# CHECK-NEXT:     Bucket 4 [
102# CHECK-NEXT:       Name 4 {
103# CHECK-NEXT:         Hash: 0xB887389
104# CHECK-NEXT:         String: {{.+}} "foo"
105# CHECK-NEXT:         Entry @ {{.+}} {
106# CHECK-NEXT:           Abbrev: [[ABBREV1]]
107# CHECK-NEXT:           Tag: DW_TAG_subprogram
108# CHECK-NEXT:           DW_IDX_compile_unit: 0x01
109# CHECK-NEXT:           DW_IDX_die_offset: 0x0000003a
110# CHECK-NEXT:           DW_IDX_parent: <parent not indexed>
111# CHECK-NEXT:         }
112# CHECK-NEXT:         Entry @ 0xc4 {
113# CHECK-NEXT:           Abbrev: [[ABBREV2]]
114# CHECK-NEXT:           Tag: DW_TAG_inlined_subroutine
115# CHECK-NEXT:           DW_IDX_compile_unit: 0x00
116# CHECK-NEXT:           DW_IDX_die_offset: 0x00000054
117# CHECK-NEXT:           DW_IDX_parent: Entry @ [[ENTRY]]
118# CHECK-NEXT:         }
119# CHECK-NEXT:       }
120# CHECK-NEXT:       Name 5 {
121# CHECK-NEXT:         Hash: 0x7C952063
122# CHECK-NEXT:         String: {{.+}} "char"
123# CHECK-NEXT:         Entry @ {{.+}} {
124# CHECK-NEXT:           Abbrev: [[ABBREV3]]
125# CHECK-NEXT:           Tag: DW_TAG_base_type
126# CHECK-NEXT:           DW_IDX_compile_unit: 0x00
127# CHECK-NEXT:           DW_IDX_die_offset: 0x00000075
128# CHECK-NEXT:           DW_IDX_parent: <parent not indexed>
129# CHECK-NEXT:         }
130# CHECK-NEXT:       }
131# CHECK-NEXT:     ]
132# CHECK-NEXT:   }
133
134## clang++ -g2 -gpubnames -S -emit-llvm main.cpp -o main.ll
135## clang++ -g2 -gpubnames -S -emit-llvm helper.cpp -o helper.ll
136## llvm-link main.ll helper.ll -o combined.ll
137## clang++ -g2 -gpubnames combined.ll -emit-llvm -S -o combined.opt.ll
138## llc -dwarf-version=5 -filetype=asm -mtriple x86_64-unknown-linux combined.opt.ll -o combined.s
139## main.cpp
140## extern int foo(int);
141## int main(int argc, char* argv[]) {
142##   int i = 0;
143##   [[clang::always_inline]] i = foo(argc);
144##   return i;
145## }
146## helper.cpp
147## int foo(int i) {
148##   return i ++;
149## }
150
151	.text
152	.file	"llvm-link"
153	.globl	main                            # -- Begin function main
154	.p2align	4, 0x90
155	.type	main,@function
156main:                                   # @main
157.Lfunc_begin0:
158	.file	1 "/home" "main.cpp" md5 0x24fb0b4c3900e91fece1ac87ed73ff3b
159	.loc	1 2 0                           # main.cpp:2:0
160	.cfi_startproc
161# %bb.0:                                # %entry
162	pushq	%rbp
163	.cfi_def_cfa_offset 16
164	.cfi_offset %rbp, -16
165	movq	%rsp, %rbp
166	.cfi_def_cfa_register %rbp
167	movl	$0, -16(%rbp)
168	movl	%edi, -12(%rbp)
169	movq	%rsi, -24(%rbp)
170.Ltmp0:
171	.loc	1 3 7 prologue_end              # main.cpp:3:7
172	movl	$0, -4(%rbp)
173	.loc	1 4 36                          # main.cpp:4:36
174	movl	-12(%rbp), %eax
175	movl	%eax, -8(%rbp)
176.Ltmp1:
177	.file	2 "/home" "helper.cpp" md5 0x7d4429e24d8c74d7ee22c1889ad46d6b
178	.loc	2 2 12                          # helper.cpp:2:12
179	movl	-8(%rbp), %eax
180	movl	%eax, %ecx
181	addl	$1, %ecx
182	movl	%ecx, -8(%rbp)
183.Ltmp2:
184	.loc	1 4 30                          # main.cpp:4:30
185	movl	%eax, -4(%rbp)
186	.loc	1 5 10                          # main.cpp:5:10
187	movl	-4(%rbp), %eax
188	.loc	1 5 3 epilogue_begin is_stmt 0  # main.cpp:5:3
189	popq	%rbp
190	.cfi_def_cfa %rsp, 8
191	retq
192.Ltmp3:
193.Lfunc_end0:
194	.size	main, .Lfunc_end0-main
195	.cfi_endproc
196                                        # -- End function
197	.globl	_Z3fooi                         # -- Begin function _Z3fooi
198	.p2align	4, 0x90
199	.type	_Z3fooi,@function
200_Z3fooi:                                # @_Z3fooi
201.Lfunc_begin1:
202	.loc	2 1 0 is_stmt 1                 # helper.cpp:1:0
203	.cfi_startproc
204# %bb.0:                                # %entry
205	pushq	%rbp
206	.cfi_def_cfa_offset 16
207	.cfi_offset %rbp, -16
208	movq	%rsp, %rbp
209	.cfi_def_cfa_register %rbp
210	movl	%edi, -4(%rbp)
211.Ltmp4:
212	.loc	2 2 12 prologue_end             # helper.cpp:2:12
213	movl	-4(%rbp), %eax
214	movl	%eax, %ecx
215	addl	$1, %ecx
216	movl	%ecx, -4(%rbp)
217	.loc	2 2 3 epilogue_begin is_stmt 0  # helper.cpp:2:3
218	popq	%rbp
219	.cfi_def_cfa %rsp, 8
220	retq
221.Ltmp5:
222.Lfunc_end1:
223	.size	_Z3fooi, .Lfunc_end1-_Z3fooi
224	.cfi_endproc
225                                        # -- End function
226	.section	.debug_abbrev,"",@progbits
227	.byte	1                               # Abbreviation Code
228	.byte	17                              # DW_TAG_compile_unit
229	.byte	1                               # DW_CHILDREN_yes
230	.byte	37                              # DW_AT_producer
231	.byte	37                              # DW_FORM_strx1
232	.byte	19                              # DW_AT_language
233	.byte	5                               # DW_FORM_data2
234	.byte	3                               # DW_AT_name
235	.byte	37                              # DW_FORM_strx1
236	.byte	114                             # DW_AT_str_offsets_base
237	.byte	23                              # DW_FORM_sec_offset
238	.byte	16                              # DW_AT_stmt_list
239	.byte	23                              # DW_FORM_sec_offset
240	.byte	27                              # DW_AT_comp_dir
241	.byte	37                              # DW_FORM_strx1
242	.byte	17                              # DW_AT_low_pc
243	.byte	27                              # DW_FORM_addrx
244	.byte	18                              # DW_AT_high_pc
245	.byte	6                               # DW_FORM_data4
246	.byte	115                             # DW_AT_addr_base
247	.byte	23                              # DW_FORM_sec_offset
248	.byte	0                               # EOM(1)
249	.byte	0                               # EOM(2)
250	.byte	2                               # Abbreviation Code
251	.byte	46                              # DW_TAG_subprogram
252	.byte	1                               # DW_CHILDREN_yes
253	.byte	17                              # DW_AT_low_pc
254	.byte	27                              # DW_FORM_addrx
255	.byte	18                              # DW_AT_high_pc
256	.byte	6                               # DW_FORM_data4
257	.byte	64                              # DW_AT_frame_base
258	.byte	24                              # DW_FORM_exprloc
259	.byte	3                               # DW_AT_name
260	.byte	37                              # DW_FORM_strx1
261	.byte	58                              # DW_AT_decl_file
262	.byte	11                              # DW_FORM_data1
263	.byte	59                              # DW_AT_decl_line
264	.byte	11                              # DW_FORM_data1
265	.byte	73                              # DW_AT_type
266	.byte	16                              # DW_FORM_ref_addr
267	.byte	63                              # DW_AT_external
268	.byte	25                              # DW_FORM_flag_present
269	.byte	0                               # EOM(1)
270	.byte	0                               # EOM(2)
271	.byte	3                               # Abbreviation Code
272	.byte	5                               # DW_TAG_formal_parameter
273	.byte	0                               # DW_CHILDREN_no
274	.byte	2                               # DW_AT_location
275	.byte	24                              # DW_FORM_exprloc
276	.byte	3                               # DW_AT_name
277	.byte	37                              # DW_FORM_strx1
278	.byte	58                              # DW_AT_decl_file
279	.byte	11                              # DW_FORM_data1
280	.byte	59                              # DW_AT_decl_line
281	.byte	11                              # DW_FORM_data1
282	.byte	73                              # DW_AT_type
283	.byte	16                              # DW_FORM_ref_addr
284	.byte	0                               # EOM(1)
285	.byte	0                               # EOM(2)
286	.byte	4                               # Abbreviation Code
287	.byte	5                               # DW_TAG_formal_parameter
288	.byte	0                               # DW_CHILDREN_no
289	.byte	2                               # DW_AT_location
290	.byte	24                              # DW_FORM_exprloc
291	.byte	3                               # DW_AT_name
292	.byte	37                              # DW_FORM_strx1
293	.byte	58                              # DW_AT_decl_file
294	.byte	11                              # DW_FORM_data1
295	.byte	59                              # DW_AT_decl_line
296	.byte	11                              # DW_FORM_data1
297	.byte	73                              # DW_AT_type
298	.byte	19                              # DW_FORM_ref4
299	.byte	0                               # EOM(1)
300	.byte	0                               # EOM(2)
301	.byte	5                               # Abbreviation Code
302	.byte	52                              # DW_TAG_variable
303	.byte	0                               # DW_CHILDREN_no
304	.byte	2                               # DW_AT_location
305	.byte	24                              # DW_FORM_exprloc
306	.byte	3                               # DW_AT_name
307	.byte	37                              # DW_FORM_strx1
308	.byte	58                              # DW_AT_decl_file
309	.byte	11                              # DW_FORM_data1
310	.byte	59                              # DW_AT_decl_line
311	.byte	11                              # DW_FORM_data1
312	.byte	73                              # DW_AT_type
313	.byte	16                              # DW_FORM_ref_addr
314	.byte	0                               # EOM(1)
315	.byte	0                               # EOM(2)
316	.byte	6                               # Abbreviation Code
317	.byte	29                              # DW_TAG_inlined_subroutine
318	.byte	1                               # DW_CHILDREN_yes
319	.byte	49                              # DW_AT_abstract_origin
320	.byte	16                              # DW_FORM_ref_addr
321	.byte	17                              # DW_AT_low_pc
322	.byte	27                              # DW_FORM_addrx
323	.byte	18                              # DW_AT_high_pc
324	.byte	6                               # DW_FORM_data4
325	.byte	88                              # DW_AT_call_file
326	.byte	11                              # DW_FORM_data1
327	.byte	89                              # DW_AT_call_line
328	.byte	11                              # DW_FORM_data1
329	.byte	87                              # DW_AT_call_column
330	.byte	11                              # DW_FORM_data1
331	.byte	0                               # EOM(1)
332	.byte	0                               # EOM(2)
333	.byte	7                               # Abbreviation Code
334	.byte	5                               # DW_TAG_formal_parameter
335	.byte	0                               # DW_CHILDREN_no
336	.byte	2                               # DW_AT_location
337	.byte	24                              # DW_FORM_exprloc
338	.byte	49                              # DW_AT_abstract_origin
339	.byte	16                              # DW_FORM_ref_addr
340	.byte	0                               # EOM(1)
341	.byte	0                               # EOM(2)
342	.byte	8                               # Abbreviation Code
343	.byte	15                              # DW_TAG_pointer_type
344	.byte	0                               # DW_CHILDREN_no
345	.byte	73                              # DW_AT_type
346	.byte	19                              # DW_FORM_ref4
347	.byte	0                               # EOM(1)
348	.byte	0                               # EOM(2)
349	.byte	9                               # Abbreviation Code
350	.byte	36                              # DW_TAG_base_type
351	.byte	0                               # DW_CHILDREN_no
352	.byte	3                               # DW_AT_name
353	.byte	37                              # DW_FORM_strx1
354	.byte	62                              # DW_AT_encoding
355	.byte	11                              # DW_FORM_data1
356	.byte	11                              # DW_AT_byte_size
357	.byte	11                              # DW_FORM_data1
358	.byte	0                               # EOM(1)
359	.byte	0                               # EOM(2)
360	.byte	10                              # Abbreviation Code
361	.byte	46                              # DW_TAG_subprogram
362	.byte	1                               # DW_CHILDREN_yes
363	.byte	110                             # DW_AT_linkage_name
364	.byte	37                              # DW_FORM_strx1
365	.byte	3                               # DW_AT_name
366	.byte	37                              # DW_FORM_strx1
367	.byte	58                              # DW_AT_decl_file
368	.byte	11                              # DW_FORM_data1
369	.byte	59                              # DW_AT_decl_line
370	.byte	11                              # DW_FORM_data1
371	.byte	73                              # DW_AT_type
372	.byte	19                              # DW_FORM_ref4
373	.byte	63                              # DW_AT_external
374	.byte	25                              # DW_FORM_flag_present
375	.byte	32                              # DW_AT_inline
376	.byte	33                              # DW_FORM_implicit_const
377	.byte	1
378	.byte	0                               # EOM(1)
379	.byte	0                               # EOM(2)
380	.byte	11                              # Abbreviation Code
381	.byte	5                               # DW_TAG_formal_parameter
382	.byte	0                               # DW_CHILDREN_no
383	.byte	3                               # DW_AT_name
384	.byte	37                              # DW_FORM_strx1
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	12                              # Abbreviation Code
394	.byte	46                              # DW_TAG_subprogram
395	.byte	1                               # DW_CHILDREN_yes
396	.byte	17                              # DW_AT_low_pc
397	.byte	27                              # DW_FORM_addrx
398	.byte	18                              # DW_AT_high_pc
399	.byte	6                               # DW_FORM_data4
400	.byte	64                              # DW_AT_frame_base
401	.byte	24                              # DW_FORM_exprloc
402	.byte	49                              # DW_AT_abstract_origin
403	.byte	19                              # DW_FORM_ref4
404	.byte	0                               # EOM(1)
405	.byte	0                               # EOM(2)
406	.byte	13                              # Abbreviation Code
407	.byte	5                               # DW_TAG_formal_parameter
408	.byte	0                               # DW_CHILDREN_no
409	.byte	2                               # DW_AT_location
410	.byte	24                              # DW_FORM_exprloc
411	.byte	49                              # DW_AT_abstract_origin
412	.byte	19                              # DW_FORM_ref4
413	.byte	0                               # EOM(1)
414	.byte	0                               # EOM(2)
415	.byte	0                               # EOM(3)
416	.section	.debug_info,"",@progbits
417.Lcu_begin0:
418	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
419.Ldebug_info_start0:
420	.short	5                               # DWARF version number
421	.byte	1                               # DWARF Unit Type
422	.byte	8                               # Address Size (in bytes)
423	.long	.debug_abbrev                   # Offset Into Abbrev. Section
424	.byte	1                               # Abbrev [1] 0xc:0x6d DW_TAG_compile_unit
425	.byte	0                               # DW_AT_producer
426	.short	33                              # DW_AT_language
427	.byte	1                               # DW_AT_name
428	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base
429	.long	.Lline_table_start0             # DW_AT_stmt_list
430	.byte	2                               # DW_AT_comp_dir
431	.byte	0                               # DW_AT_low_pc
432	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc
433	.long	.Laddr_table_base0              # DW_AT_addr_base
434	.byte	2                               # Abbrev [2] 0x23:0x47 DW_TAG_subprogram
435	.byte	0                               # DW_AT_low_pc
436	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc
437	.byte	1                               # DW_AT_frame_base
438	.byte	86
439	.byte	8                               # DW_AT_name
440	.byte	1                               # DW_AT_decl_file
441	.byte	2                               # DW_AT_decl_line
442	.long	.debug_info+174                 # DW_AT_type
443                                        # DW_AT_external
444	.byte	3                               # Abbrev [3] 0x32:0xb DW_TAG_formal_parameter
445	.byte	2                               # DW_AT_location
446	.byte	145
447	.byte	116
448	.byte	9                               # DW_AT_name
449	.byte	1                               # DW_AT_decl_file
450	.byte	2                               # DW_AT_decl_line
451	.long	.debug_info+174                 # DW_AT_type
452	.byte	4                               # Abbrev [4] 0x3d:0xb DW_TAG_formal_parameter
453	.byte	2                               # DW_AT_location
454	.byte	145
455	.byte	104
456	.byte	10                              # DW_AT_name
457	.byte	1                               # DW_AT_decl_file
458	.byte	2                               # DW_AT_decl_line
459	.long	106                             # DW_AT_type
460	.byte	5                               # Abbrev [5] 0x48:0xb DW_TAG_variable
461	.byte	2                               # DW_AT_location
462	.byte	145
463	.byte	124
464	.byte	7                               # DW_AT_name
465	.byte	1                               # DW_AT_decl_file
466	.byte	3                               # DW_AT_decl_line
467	.long	.debug_info+174                 # DW_AT_type
468	.byte	6                               # Abbrev [6] 0x53:0x16 DW_TAG_inlined_subroutine
469	.long	.debug_info+156                 # DW_AT_abstract_origin
470	.byte	1                               # DW_AT_low_pc
471	.long	.Ltmp2-.Ltmp1                   # DW_AT_high_pc
472	.byte	1                               # DW_AT_call_file
473	.byte	4                               # DW_AT_call_line
474	.byte	32                              # DW_AT_call_column
475	.byte	7                               # Abbrev [7] 0x60:0x8 DW_TAG_formal_parameter
476	.byte	2                               # DW_AT_location
477	.byte	145
478	.byte	120
479	.long	.debug_info+165                 # DW_AT_abstract_origin
480	.byte	0                               # End Of Children Mark
481	.byte	0                               # End Of Children Mark
482	.byte	8                               # Abbrev [8] 0x6a:0x5 DW_TAG_pointer_type
483	.long	111                             # DW_AT_type
484	.byte	8                               # Abbrev [8] 0x6f:0x5 DW_TAG_pointer_type
485	.long	116                             # DW_AT_type
486	.byte	9                               # Abbrev [9] 0x74:0x4 DW_TAG_base_type
487	.byte	11                              # DW_AT_name
488	.byte	6                               # DW_AT_encoding
489	.byte	1                               # DW_AT_byte_size
490	.byte	0                               # End Of Children Mark
491.Ldebug_info_end0:
492.Lcu_begin1:
493	.long	.Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit
494.Ldebug_info_start1:
495	.short	5                               # DWARF version number
496	.byte	1                               # DWARF Unit Type
497	.byte	8                               # Address Size (in bytes)
498	.long	.debug_abbrev                   # Offset Into Abbrev. Section
499	.byte	1                               # Abbrev [1] 0xc:0x43 DW_TAG_compile_unit
500	.byte	0                               # DW_AT_producer
501	.short	33                              # DW_AT_language
502	.byte	3                               # DW_AT_name
503	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base
504	.long	.Lline_table_start0             # DW_AT_stmt_list
505	.byte	2                               # DW_AT_comp_dir
506	.byte	2                               # DW_AT_low_pc
507	.long	.Lfunc_end1-.Lfunc_begin1       # DW_AT_high_pc
508	.long	.Laddr_table_base0              # DW_AT_addr_base
509	.byte	10                              # Abbrev [10] 0x23:0x12 DW_TAG_subprogram
510	.byte	4                               # DW_AT_linkage_name
511	.byte	5                               # DW_AT_name
512	.byte	2                               # DW_AT_decl_file
513	.byte	1                               # DW_AT_decl_line
514	.long	53                              # DW_AT_type
515                                        # DW_AT_external
516                                        # DW_AT_inline
517	.byte	11                              # Abbrev [11] 0x2c:0x8 DW_TAG_formal_parameter
518	.byte	7                               # DW_AT_name
519	.byte	2                               # DW_AT_decl_file
520	.byte	1                               # DW_AT_decl_line
521	.long	53                              # DW_AT_type
522	.byte	0                               # End Of Children Mark
523	.byte	9                               # Abbrev [9] 0x35:0x4 DW_TAG_base_type
524	.byte	6                               # DW_AT_name
525	.byte	5                               # DW_AT_encoding
526	.byte	4                               # DW_AT_byte_size
527	.byte	12                              # Abbrev [12] 0x39:0x15 DW_TAG_subprogram
528	.byte	2                               # DW_AT_low_pc
529	.long	.Lfunc_end1-.Lfunc_begin1       # DW_AT_high_pc
530	.byte	1                               # DW_AT_frame_base
531	.byte	86
532	.long	35                              # DW_AT_abstract_origin
533	.byte	13                              # Abbrev [13] 0x45:0x8 DW_TAG_formal_parameter
534	.byte	2                               # DW_AT_location
535	.byte	145
536	.byte	124
537	.long	44                              # DW_AT_abstract_origin
538	.byte	0                               # End Of Children Mark
539	.byte	0                               # End Of Children Mark
540.Ldebug_info_end1:
541	.section	.debug_str_offsets,"",@progbits
542	.long	52                              # Length of String Offsets Set
543	.short	5
544	.short	0
545.Lstr_offsets_base0:
546	.section	.debug_str,"MS",@progbits,1
547.Linfo_string0:
548	.asciz	"clang version 19.0.0git"       # string offset=0
549.Linfo_string1:
550	.asciz	"main.cpp"                      # string offset=24
551.Linfo_string2:
552	.asciz	"/home/ayermolo/local/tasks/T182867349" # string offset=33
553.Linfo_string3:
554	.asciz	"helper.cpp"                    # string offset=71
555.Linfo_string4:
556	.asciz	"_Z3fooi"                       # string offset=82
557.Linfo_string5:
558	.asciz	"foo"                           # string offset=90
559.Linfo_string6:
560	.asciz	"int"                           # string offset=94
561.Linfo_string7:
562	.asciz	"i"                             # string offset=98
563.Linfo_string8:
564	.asciz	"main"                          # string offset=100
565.Linfo_string9:
566	.asciz	"argc"                          # string offset=105
567.Linfo_string10:
568	.asciz	"argv"                          # string offset=110
569.Linfo_string11:
570	.asciz	"char"                          # string offset=115
571	.section	.debug_str_offsets,"",@progbits
572	.long	.Linfo_string0
573	.long	.Linfo_string1
574	.long	.Linfo_string2
575	.long	.Linfo_string3
576	.long	.Linfo_string4
577	.long	.Linfo_string5
578	.long	.Linfo_string6
579	.long	.Linfo_string7
580	.long	.Linfo_string8
581	.long	.Linfo_string9
582	.long	.Linfo_string10
583	.long	.Linfo_string11
584	.section	.debug_addr,"",@progbits
585	.long	.Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution
586.Ldebug_addr_start0:
587	.short	5                               # DWARF version number
588	.byte	8                               # Address size
589	.byte	0                               # Segment selector size
590.Laddr_table_base0:
591	.quad	.Lfunc_begin0
592	.quad	.Ltmp1
593	.quad	.Lfunc_begin1
594.Ldebug_addr_end0:
595	.section	.debug_names,"",@progbits
596	.long	.Lnames_end0-.Lnames_start0     # Header: unit length
597.Lnames_start0:
598	.short	5                               # Header: version
599	.short	0                               # Header: padding
600	.long	2                               # Header: compilation unit count
601	.long	0                               # Header: local type unit count
602	.long	0                               # Header: foreign type unit count
603	.long	5                               # Header: bucket count
604	.long	5                               # Header: name count
605	.long	.Lnames_abbrev_end0-.Lnames_abbrev_start0 # Header: abbreviation table size
606	.long	8                               # Header: augmentation string size
607	.ascii	"LLVM0700"                      # Header: augmentation string
608	.long	.Lcu_begin0                     # Compilation unit 0
609	.long	.Lcu_begin1                     # Compilation unit 1
610	.long	0                               # Bucket 0
611	.long	1                               # Bucket 1
612	.long	0                               # Bucket 2
613	.long	3                               # Bucket 3
614	.long	4                               # Bucket 4
615	.long	2090499946                      # Hash in Bucket 1
616	.long	-1257882370                     # Hash in Bucket 1
617	.long	193495088                       # Hash in Bucket 3
618	.long	193491849                       # Hash in Bucket 4
619	.long	2090147939                      # Hash in Bucket 4
620	.long	.Linfo_string8                  # String in Bucket 1: main
621	.long	.Linfo_string4                  # String in Bucket 1: _Z3fooi
622	.long	.Linfo_string6                  # String in Bucket 3: int
623	.long	.Linfo_string5                  # String in Bucket 4: foo
624	.long	.Linfo_string11                 # String in Bucket 4: char
625	.long	.Lnames1-.Lnames_entries0       # Offset in Bucket 1
626	.long	.Lnames3-.Lnames_entries0       # Offset in Bucket 1
627	.long	.Lnames0-.Lnames_entries0       # Offset in Bucket 3
628	.long	.Lnames2-.Lnames_entries0       # Offset in Bucket 4
629	.long	.Lnames4-.Lnames_entries0       # Offset in Bucket 4
630.Lnames_abbrev_start0:
631	.byte	1                               # Abbrev code
632	.byte	46                              # DW_TAG_subprogram
633	.byte	1                               # DW_IDX_compile_unit
634	.byte	11                              # DW_FORM_data1
635	.byte	3                               # DW_IDX_die_offset
636	.byte	19                              # DW_FORM_ref4
637	.byte	4                               # DW_IDX_parent
638	.byte	25                              # DW_FORM_flag_present
639	.byte	0                               # End of abbrev
640	.byte	0                               # End of abbrev
641	.byte	2                               # Abbrev code
642	.byte	29                              # DW_TAG_inlined_subroutine
643	.byte	1                               # DW_IDX_compile_unit
644	.byte	11                              # DW_FORM_data1
645	.byte	3                               # DW_IDX_die_offset
646	.byte	19                              # DW_FORM_ref4
647	.byte	4                               # DW_IDX_parent
648	.byte	19                              # DW_FORM_ref4
649	.byte	0                               # End of abbrev
650	.byte	0                               # End of abbrev
651	.byte	3                               # Abbrev code
652	.byte	36                              # DW_TAG_base_type
653	.byte	1                               # DW_IDX_compile_unit
654	.byte	11                              # DW_FORM_data1
655	.byte	3                               # DW_IDX_die_offset
656	.byte	19                              # DW_FORM_ref4
657	.byte	4                               # DW_IDX_parent
658	.byte	25                              # DW_FORM_flag_present
659	.byte	0                               # End of abbrev
660	.byte	0                               # End of abbrev
661	.byte	0                               # End of abbrev list
662.Lnames_abbrev_end0:
663.Lnames_entries0:
664.Lnames1:
665.L3:
666	.byte	1                               # Abbreviation code
667	.byte	0                               # DW_IDX_compile_unit
668	.long	35                              # DW_IDX_die_offset
669	.byte	0                               # DW_IDX_parent
670                                        # End of list: main
671.Lnames3:
672.L0:
673	.byte	1                               # Abbreviation code
674	.byte	1                               # DW_IDX_compile_unit
675	.long	57                              # DW_IDX_die_offset
676.L2:                                    # DW_IDX_parent
677	.byte	2                               # Abbreviation code
678	.byte	0                               # DW_IDX_compile_unit
679	.long	83                              # DW_IDX_die_offset
680	.long	.L3-.Lnames_entries0            # DW_IDX_parent
681	.byte	0                               # End of list: _Z3fooi
682.Lnames0:
683.L4:
684	.byte	3                               # Abbreviation code
685	.byte	1                               # DW_IDX_compile_unit
686	.long	53                              # DW_IDX_die_offset
687	.byte	0                               # DW_IDX_parent
688                                        # End of list: int
689.Lnames2:
690	.byte	1                               # Abbreviation code
691	.byte	1                               # DW_IDX_compile_unit
692	.long	57                              # DW_IDX_die_offset
693	.byte	2                               # DW_IDX_parent
694                                        # Abbreviation code
695	.byte	0                               # DW_IDX_compile_unit
696	.long	83                              # DW_IDX_die_offset
697	.long	.L3-.Lnames_entries0            # DW_IDX_parent
698	.byte	0                               # End of list: foo
699.Lnames4:
700.L1:
701	.byte	3                               # Abbreviation code
702	.byte	0                               # DW_IDX_compile_unit
703	.long	116                             # DW_IDX_die_offset
704	.byte	0                               # DW_IDX_parent
705                                        # End of list: char
706	.p2align	2, 0x0
707.Lnames_end0:
708	.ident	"clang version 19.0.0git"
709	.ident	"clang version 19.0.0git"
710	.section	".note.GNU-stack","",@progbits
711	.section	.debug_line,"",@progbits
712.Lline_table_start0:
713