xref: /llvm-project/lld/test/ELF/debug-names-parent-idx.s (revision 16711b431b843dd2143d38fdf6b0591dfb1783e0)
1# debug-names-parent-idx.s generated with:
2
3# clang++ -g -O0 -gpubnames -fdebug-compilation-dir='/proc/self/cwd' -S \
4#    a.cpp -o a.s
5
6# foo.h contents:
7
8# int foo();
9
10# struct foo {
11#   int x;
12#   char y;
13#   struct foo *foo_ptr;
14# };
15
16# namespace parent_test {
17#   int foo();
18# }
19
20#  a.cpp contents:
21
22# #include "foo.h"
23# void bar (struct foo &foo, int junk) {
24#   foo.x = foo.x * junk;
25# }
26# int main (int argc, char** argv) {
27#   struct foo my_struct;
28#   my_struct.x = 10;
29#   my_struct.y = 'q';
30#   my_struct.foo_ptr = nullptr;
31#   int junk = foo();
32#   bar(my_struct, junk);
33#   int junk2 = parent_test::foo();
34#   return 0;
35# }
36
37# REQUIRES: x86
38# RUN: rm -rf %t && split-file %s %t && cd %t
39# RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a.o
40# RUN: llvm-mc -filetype=obj -triple=x86_64 b.s -o b.o
41# RUN: ld.lld --debug-names a.o b.o -o out
42
43# RUN: llvm-dwarfdump -debug-names out | FileCheck %s --check-prefix=DWARF
44
45# DWARF:      .debug_names contents:
46# DWARF:      Name Index @ 0x0 {
47# DWARF-NEXT:   Header {
48# DWARF-NEXT:     Length: 0x158
49# DWARF-NEXT:     Format: DWARF32
50# DWARF-NEXT:     Version: 5
51# DWARF-NEXT:     CU count: 2
52# DWARF-NEXT:     Local TU count: 0
53# DWARF-NEXT:     Foreign TU count: 0
54# DWARF-NEXT:     Bucket count: 9
55# DWARF-NEXT:     Name count: 9
56# DWARF-NEXT:     Abbreviations table size: 0x33
57# DWARF-NEXT:     Augmentation: 'LLVM0700'
58# DWARF:        Compilation Unit offsets [
59# DWARF-NEXT:     CU[0]: 0x00000000
60# DWARF-NEXT:     CU[1]: 0x0000000c
61# DWARF:        Abbreviations [
62# DWARF-NEXT:     Abbreviation 0x1 {
63# DWARF-NEXT:       Tag: DW_TAG_base_type
64# DWARF-NEXT:       DW_IDX_die_offset: DW_FORM_ref4
65# DWARF-NEXT:       DW_IDX_parent: DW_FORM_flag_present
66# DWARF-NEXT:       DW_IDX_compile_unit: DW_FORM_data1
67# DWARF:          Abbreviation 0x2 {
68# DWARF-NEXT:       Tag: DW_TAG_subprogram
69# DWARF-NEXT:       DW_IDX_die_offset: DW_FORM_ref4
70# DWARF-NEXT:       DW_IDX_parent: DW_FORM_flag_present
71# DWARF-NEXT:       DW_IDX_compile_unit: DW_FORM_data1
72# DWARF:          Abbreviation 0x3 {
73# DWARF-NEXT:       Tag: DW_TAG_structure_type
74# DWARF-NEXT:       DW_IDX_die_offset: DW_FORM_ref4
75# DWARF-NEXT:       DW_IDX_parent: DW_FORM_flag_present
76# DWARF-NEXT:       DW_IDX_compile_unit: DW_FORM_data1
77# DWARF:          Abbreviation 0x4 {
78# DWARF-NEXT:       Tag: DW_TAG_subprogram
79# DWARF-NEXT:       DW_IDX_die_offset: DW_FORM_ref4
80# DWARF-NEXT:       DW_IDX_parent: DW_FORM_ref4
81# DWARF-NEXT:       DW_IDX_compile_unit: DW_FORM_data1
82# DWARF:          Abbreviation 0x5 {
83# DWARF-NEXT:       Tag: DW_TAG_namespace
84# DWARF-NEXT:       DW_IDX_die_offset: DW_FORM_ref4
85# DWARF-NEXT:       DW_IDX_parent: DW_FORM_flag_present
86# DWARF-NEXT:       DW_IDX_compile_unit: DW_FORM_data1
87# DWARF:        Bucket 0 [
88# DWARF-NEXT:     EMPTY
89# DWARF-NEXT:   ]
90# DWARF-NEXT:   Bucket 1 [
91# DWARF-NEXT:     Name 1 {
92# DWARF-NEXT:       Hash: 0xA974AA29
93# DWARF-NEXT:       String: 0x00000174 "_ZN11parent_test3fooEv"
94# DWARF-NEXT:       Entry @ 0x14a {
95# DWARF-NEXT:         Abbrev: 0x4
96# DWARF-NEXT:         Tag: DW_TAG_subprogram
97# DWARF-NEXT:         DW_IDX_die_offset: 0x00000045
98# DWARF-NEXT:         DW_IDX_parent: Entry @ 0x128
99# DWARF-NEXT:         DW_IDX_compile_unit: 0x01
100# DWARF-NEXT:       }
101# DWARF-NEXT:     }
102# DWARF-NEXT:     Name 2 {
103# DWARF-NEXT:       Hash: 0xB5063D0B
104# DWARF-NEXT:       String: 0x00000160 "_Z3foov"
105# DWARF-NEXT:       Entry @ 0x155 {
106# DWARF-NEXT:         Abbrev: 0x2
107# DWARF-NEXT:         Tag: DW_TAG_subprogram
108# DWARF-NEXT:         DW_IDX_die_offset: 0x00000027
109# DWARF-NEXT:         DW_IDX_parent: <parent not indexed>
110# DWARF-NEXT:         DW_IDX_compile_unit: 0x01
111# DWARF-NEXT:       }
112# DWARF-NEXT:     }
113# DWARF-NEXT:   ]
114# DWARF-NEXT:   Bucket 2 [
115# DWARF-NEXT:     Name 3 {
116# DWARF-NEXT:       Hash: 0xB888030
117# DWARF-NEXT:       String: 0x00000093 "int"
118# DWARF-NEXT:       Entry @ 0xfe {
119# DWARF-NEXT:         Abbrev: 0x1
120# DWARF-NEXT:         Tag: DW_TAG_base_type
121# DWARF-NEXT:         DW_IDX_die_offset: 0x0000008d
122# DWARF-NEXT:         DW_IDX_parent: <parent not indexed>
123# DWARF-NEXT:         DW_IDX_compile_unit: 0x00
124# DWARF-NEXT:       }
125# DWARF-NEXT:       Entry @ 0x104 {
126# DWARF-NEXT:         Abbrev: 0x1
127# DWARF-NEXT:         Tag: DW_TAG_base_type
128# DWARF-NEXT:         DW_IDX_die_offset: 0x00000023
129# DWARF-NEXT:         DW_IDX_parent: <parent not indexed>
130# DWARF-NEXT:         DW_IDX_compile_unit: 0x01
131# DWARF-NEXT:       }
132# DWARF-NEXT:     }
133# DWARF-NEXT:   ]
134# DWARF-NEXT:   Bucket 3 [
135# DWARF-NEXT:     Name 4 {
136# DWARF-NEXT:       Hash: 0xB8860BA
137# DWARF-NEXT:       String: 0x0000007d "bar"
138# DWARF-NEXT:       Entry @ 0xf7 {
139# DWARF-NEXT:         Abbrev: 0x2
140# DWARF-NEXT:         Tag: DW_TAG_subprogram
141# DWARF-NEXT:         DW_IDX_die_offset: 0x00000023
142# DWARF-NEXT:         DW_IDX_parent: <parent not indexed>
143# DWARF-NEXT:         DW_IDX_compile_unit: 0x00
144# DWARF-NEXT:       }
145# DWARF-NEXT:     }
146# DWARF-NEXT:     Name 5 {
147# DWARF-NEXT:       Hash: 0xB887389
148# DWARF-NEXT:       String: 0x00000097 "foo"
149# DWARF-NEXT:       Entry @ 0x10b {
150# DWARF-NEXT:         Abbrev: 0x3
151# DWARF-NEXT:         Tag: DW_TAG_structure_type
152# DWARF-NEXT:         DW_IDX_die_offset: 0x00000096
153# DWARF-NEXT:         DW_IDX_parent: <parent not indexed>
154# DWARF-NEXT:         DW_IDX_compile_unit: 0x00
155# DWARF-NEXT:       }
156# DWARF-NEXT:       Entry @ 0x111 {
157# DWARF-NEXT:         Abbrev: 0x2
158# DWARF-NEXT:         Tag: DW_TAG_subprogram
159# DWARF-NEXT:         DW_IDX_die_offset: 0x00000027
160# DWARF-NEXT:         DW_IDX_parent: <parent not indexed>
161# DWARF-NEXT:         DW_IDX_compile_unit: 0x01
162# DWARF-NEXT:       }
163# DWARF-NEXT:       Entry @ 0x117 {
164# DWARF-NEXT:         Abbrev: 0x4
165# DWARF-NEXT:         Tag: DW_TAG_subprogram
166# DWARF-NEXT:         DW_IDX_die_offset: 0x00000045
167# DWARF-NEXT:         DW_IDX_parent: Entry @ 0x128
168# DWARF-NEXT:         DW_IDX_compile_unit: 0x01
169# DWARF-NEXT:       }
170# DWARF-NEXT:       Entry @ 0x121 {
171# DWARF-NEXT:         Abbrev: 0x3
172# DWARF-NEXT:         Tag: DW_TAG_structure_type
173# DWARF-NEXT:         DW_IDX_die_offset: 0x00000056
174# DWARF-NEXT:         DW_IDX_parent: <parent not indexed>
175# DWARF-NEXT:         DW_IDX_compile_unit: 0x01
176# DWARF-NEXT:       }
177# DWARF-NEXT:     }
178# DWARF-NEXT:   ]
179# DWARF-NEXT:   Bucket 4 [
180# DWARF-NEXT:     EMPTY
181# DWARF-NEXT:   ]
182# DWARF-NEXT:   Bucket 5 [
183# DWARF-NEXT:     EMPTY
184# DWARF-NEXT:   ]
185# DWARF-NEXT:   Bucket 6 [
186# DWARF-NEXT:     EMPTY
187# DWARF-NEXT:   ]
188# DWARF-NEXT:   Bucket 7 [
189# DWARF-NEXT:     Name 6 {
190# DWARF-NEXT:       Hash: 0x7C9A7F6A
191# DWARF-NEXT:       String: 0x0000008e "main"
192# DWARF-NEXT:       Entry @ 0x136 {
193# DWARF-NEXT:         Abbrev: 0x2
194# DWARF-NEXT:         Tag: DW_TAG_subprogram
195# DWARF-NEXT:         DW_IDX_die_offset: 0x00000046
196# DWARF-NEXT:         DW_IDX_parent: <parent not indexed>
197# DWARF-NEXT:         DW_IDX_compile_unit: 0x00
198# DWARF-NEXT:       }
199# DWARF-NEXT:     }
200# DWARF-NEXT:   ]
201# DWARF-NEXT:   Bucket 8 [
202# DWARF-NEXT:     Name 7 {
203# DWARF-NEXT:       Hash: 0xA7255AE
204# DWARF-NEXT:       String: 0x00000168 "parent_test"
205# DWARF-NEXT:       Entry @ 0x128 {
206# DWARF-NEXT:         Abbrev: 0x5
207# DWARF-NEXT:         Tag: DW_TAG_namespace
208# DWARF-NEXT:         DW_IDX_die_offset: 0x00000043
209# DWARF-NEXT:         DW_IDX_parent: <parent not indexed>
210# DWARF-NEXT:         DW_IDX_compile_unit: 0x01
211# DWARF-NEXT:       }
212# DWARF-NEXT:     }
213# DWARF-NEXT:     Name 8 {
214# DWARF-NEXT:       Hash: 0x51007E98
215# DWARF-NEXT:       String: 0x00000081 "_Z3barR3fooi"
216# DWARF-NEXT:       Entry @ 0x12f {
217# DWARF-NEXT:         Abbrev: 0x2
218# DWARF-NEXT:         Tag: DW_TAG_subprogram
219# DWARF-NEXT:         DW_IDX_die_offset: 0x00000023
220# DWARF-NEXT:         DW_IDX_parent: <parent not indexed>
221# DWARF-NEXT:         DW_IDX_compile_unit: 0x00
222# DWARF-NEXT:       }
223# DWARF-NEXT:     }
224# DWARF-NEXT:     Name 9 {
225# DWARF-NEXT:       Hash: 0x7C952063
226# DWARF-NEXT:       String: 0x0000009f "char"
227# DWARF-NEXT:       Entry @ 0x13d {
228# DWARF-NEXT:         Abbrev: 0x1
229# DWARF-NEXT:         Tag: DW_TAG_base_type
230# DWARF-NEXT:         DW_IDX_die_offset: 0x000000b8
231# DWARF-NEXT:         DW_IDX_parent: <parent not indexed>
232# DWARF-NEXT:         DW_IDX_compile_unit: 0x00
233# DWARF-NEXT:       }
234# DWARF-NEXT:       Entry @ 0x143 {
235# DWARF-NEXT:         Abbrev: 0x1
236# DWARF-NEXT:         Tag: DW_TAG_base_type
237# DWARF-NEXT:         DW_IDX_die_offset: 0x00000078
238# DWARF-NEXT:         DW_IDX_parent: <parent not indexed>
239# DWARF-NEXT:         DW_IDX_compile_unit: 0x01
240# DWARF-NEXT:       }
241# DWARF-NEXT:     }
242# DWARF-NEXT:   ]
243
244#--- a.s
245	.text
246	.globl	_Z3barR3fooi                    # -- Begin function _Z3barR3fooi
247	.p2align	4, 0x90
248	.type	_Z3barR3fooi,@function
249_Z3barR3fooi:                           # @_Z3barR3fooi
250.Lfunc_begin0:
251	.cfi_startproc
252# %bb.0:                                # %entry
253	pushq	%rbp
254	.cfi_def_cfa_offset 16
255	.cfi_offset %rbp, -16
256	movq	%rsp, %rbp
257	.cfi_def_cfa_register %rbp
258	movq	%rdi, -8(%rbp)
259	movl	%esi, -12(%rbp)
260.Ltmp0:
261	movq	-8(%rbp), %rax
262	movl	(%rax), %ecx
263	imull	-12(%rbp), %ecx
264	movq	-8(%rbp), %rax
265	movl	%ecx, (%rax)
266	popq	%rbp
267	.cfi_def_cfa %rsp, 8
268	retq
269.Ltmp1:
270.Lfunc_end0:
271	.size	_Z3barR3fooi, .Lfunc_end0-_Z3barR3fooi
272	.cfi_endproc
273                                        # -- End function
274	.globl	main                            # -- Begin function main
275	.p2align	4, 0x90
276	.type	main,@function
277main:                                   # @main
278.Lfunc_begin1:
279	.cfi_startproc
280# %bb.0:                                # %entry
281	pushq	%rbp
282	.cfi_def_cfa_offset 16
283	.cfi_offset %rbp, -16
284	movq	%rsp, %rbp
285	.cfi_def_cfa_register %rbp
286	subq	$48, %rsp
287	movl	$0, -4(%rbp)
288	movl	%edi, -8(%rbp)
289	movq	%rsi, -16(%rbp)
290.Ltmp2:
291	movl	$10, -32(%rbp)
292	movb	$113, -28(%rbp)
293	movq	$0, -24(%rbp)
294	callq	_Z3foov@PLT
295	movl	%eax, -36(%rbp)
296	movl	-36(%rbp), %esi
297	leaq	-32(%rbp), %rdi
298	callq	_Z3barR3fooi
299	callq	_ZN11parent_test3fooEv@PLT
300	movl	%eax, -40(%rbp)
301	xorl	%eax, %eax
302	addq	$48, %rsp
303	popq	%rbp
304	.cfi_def_cfa %rsp, 8
305	retq
306.Ltmp3:
307.Lfunc_end1:
308	.size	main, .Lfunc_end1-main
309	.cfi_endproc
310                                        # -- End function
311	.section	.debug_abbrev,"",@progbits
312	.byte	0                               # EOM(1)
313	.byte	0                               # EOM(2)
314	.byte	0                               # EOM(3)
315	.section	.debug_info,"",@progbits
316.Lcu_begin0:
317	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
318.Ldebug_info_start0:
319	.short	5                               # DWARF version number
320	.byte	1                               # DWARF Unit Type
321	.byte	8                               # Address Size (in bytes)
322	.long	.debug_abbrev                   # Offset Into Abbrev. Section
323.Ldebug_info_end0:
324	.section	.debug_str_offsets,"",@progbits
325	.long	72                              # Length of String Offsets Set
326	.short	5
327	.short	0
328.Lstr_offsets_base0:
329	.section	.debug_str,"MS",@progbits,1
330.Linfo_string0:
331	.asciz	"clang version 19.0.0git (git@github.com:llvm/llvm-project.git 53b14cd9ce2b57da73d173fc876d2e9e199f5640)" # string offset=0
332.Linfo_string1:
333	.asciz	"a.cpp"                         # string offset=104
334.Linfo_string2:
335	.asciz	"/proc/self/cwd"                # string offset=110
336.Linfo_string3:
337	.asciz	"bar"                           # string offset=125
338.Linfo_string4:
339	.asciz	"_Z3barR3fooi"                  # string offset=129
340.Linfo_string5:
341	.asciz	"main"                          # string offset=142
342.Linfo_string6:
343	.asciz	"int"                           # string offset=147
344.Linfo_string7:
345	.asciz	"foo"                           # string offset=151
346.Linfo_string8:
347	.asciz	"x"                             # string offset=155
348.Linfo_string9:
349	.asciz	"y"                             # string offset=157
350.Linfo_string10:
351	.asciz	"char"                          # string offset=159
352.Linfo_string11:
353	.asciz	"foo_ptr"                       # string offset=164
354.Linfo_string12:
355	.asciz	"junk"                          # string offset=172
356.Linfo_string13:
357	.asciz	"argc"                          # string offset=177
358.Linfo_string14:
359	.asciz	"argv"                          # string offset=182
360.Linfo_string15:
361	.asciz	"my_struct"                     # string offset=187
362.Linfo_string16:
363	.asciz	"junk2"                         # string offset=197
364.Laddr_table_base0:
365	.quad	.Lfunc_begin0
366	.quad	.Lfunc_begin1
367.Ldebug_addr_end0:
368	.section	.debug_names,"",@progbits
369	.long	.Lnames_end0-.Lnames_start0     # Header: unit length
370.Lnames_start0:
371	.short	5                               # Header: version
372	.short	0                               # Header: padding
373	.long	1                               # Header: compilation unit count
374	.long	0                               # Header: local type unit count
375	.long	0                               # Header: foreign type unit count
376	.long	6                               # Header: bucket count
377	.long	6                               # Header: name count
378	.long	.Lnames_abbrev_end0-.Lnames_abbrev_start0 # Header: abbreviation table size
379	.long	8                               # Header: augmentation string size
380	.ascii	"LLVM0700"                      # Header: augmentation string
381	.long	.Lcu_begin0                     # Compilation unit 0
382	.long	1                               # Bucket 0
383	.long	0                               # Bucket 1
384	.long	2                               # Bucket 2
385	.long	4                               # Bucket 3
386	.long	5                               # Bucket 4
387	.long	6                               # Bucket 5
388	.long	193487034                       # Hash in Bucket 0
389	.long	193495088                       # Hash in Bucket 2
390	.long	1358986904                      # Hash in Bucket 2
391	.long	193491849                       # Hash in Bucket 3
392	.long	2090499946                      # Hash in Bucket 4
393	.long	2090147939                      # Hash in Bucket 5
394	.long	.Linfo_string3                  # String in Bucket 0: bar
395	.long	.Linfo_string6                  # String in Bucket 2: int
396	.long	.Linfo_string4                  # String in Bucket 2: _Z3barR3fooi
397	.long	.Linfo_string7                  # String in Bucket 3: foo
398	.long	.Linfo_string5                  # String in Bucket 4: main
399	.long	.Linfo_string10                 # String in Bucket 5: char
400	.long	.Lnames0-.Lnames_entries0       # Offset in Bucket 0
401	.long	.Lnames3-.Lnames_entries0       # Offset in Bucket 2
402	.long	.Lnames1-.Lnames_entries0       # Offset in Bucket 2
403	.long	.Lnames4-.Lnames_entries0       # Offset in Bucket 3
404	.long	.Lnames2-.Lnames_entries0       # Offset in Bucket 4
405	.long	.Lnames5-.Lnames_entries0       # Offset in Bucket 5
406.Lnames_abbrev_start0:
407	.byte	1                               # Abbrev code
408	.byte	46                              # DW_TAG_subprogram
409	.byte	3                               # DW_IDX_die_offset
410	.byte	19                              # DW_FORM_ref4
411	.byte	4                               # DW_IDX_parent
412	.byte	25                              # DW_FORM_flag_present
413	.byte	0                               # End of abbrev
414	.byte	0                               # End of abbrev
415	.byte	2                               # Abbrev code
416	.byte	36                              # DW_TAG_base_type
417	.byte	3                               # DW_IDX_die_offset
418	.byte	19                              # DW_FORM_ref4
419	.byte	4                               # DW_IDX_parent
420	.byte	25                              # DW_FORM_flag_present
421	.byte	0                               # End of abbrev
422	.byte	0                               # End of abbrev
423	.byte	3                               # Abbrev code
424	.byte	19                              # DW_TAG_structure_type
425	.byte	3                               # DW_IDX_die_offset
426	.byte	19                              # DW_FORM_ref4
427	.byte	4                               # DW_IDX_parent
428	.byte	25                              # DW_FORM_flag_present
429	.byte	0                               # End of abbrev
430	.byte	0                               # End of abbrev
431	.byte	0                               # End of abbrev list
432.Lnames_abbrev_end0:
433.Lnames_entries0:
434.Lnames0:
435.L2:
436	.byte	1                               # Abbreviation code
437	.long	35                              # DW_IDX_die_offset
438	.byte	0                               # DW_IDX_parent
439                                        # End of list: bar
440.Lnames3:
441.L1:
442	.byte	2                               # Abbreviation code
443	.long	141                             # DW_IDX_die_offset
444	.byte	0                               # DW_IDX_parent
445                                        # End of list: int
446.Lnames1:
447	.byte	1                               # Abbreviation code
448	.long	35                              # DW_IDX_die_offset
449	.byte	0                               # DW_IDX_parent
450                                        # End of list: _Z3barR3fooi
451.Lnames4:
452.L4:
453	.byte	3                               # Abbreviation code
454	.long	150                             # DW_IDX_die_offset
455	.byte	0                               # DW_IDX_parent
456                                        # End of list: foo
457.Lnames2:
458.L0:
459	.byte	1                               # Abbreviation code
460	.long	70                              # DW_IDX_die_offset
461	.byte	0                               # DW_IDX_parent
462                                        # End of list: main
463.Lnames5:
464.L3:
465	.byte	2                               # Abbreviation code
466	.long	184                             # DW_IDX_die_offset
467	.byte	0                               # DW_IDX_parent
468                                        # End of list: char
469	.p2align	2, 0x0
470.Lnames_end0:
471	.ident	"clang version 19.0.0git (git@github.com:llvm/llvm-project.git 53b14cd9ce2b57da73d173fc876d2e9e199f5640)"
472	.section	".note.GNU-stack","",@progbits
473	.addrsig
474	.addrsig_sym _Z3barR3fooi
475	.addrsig_sym _Z3foov
476	.addrsig_sym _ZN11parent_test3fooEv
477	.section	.debug_line,"",@progbits
478.Lline_table_start0:
479
480#--- b.s
481# Generated with:
482
483# clang++ -g -O0 -gpubnames -fdebug-compilation-dir='/proc/self/cwd' -S \
484#     b.cpp -o b.s
485
486# foo.h contents:
487
488# int foo();
489
490#struct foo {
491#   int x;
492#   char y;
493#   struct foo *foo_ptr;
494# };
495
496# namespace parent_test {
497#   int foo();
498# }
499
500# b.cpp contents:
501
502# #include "foo.h"
503# int foo () {
504#   struct foo struct2;
505#   struct2.x = 1024;
506#   struct2.y = 'r';
507#   struct2.foo_ptr = nullptr;
508#   return struct2.x * (int) struct2.y;
509# }
510
511# namespace parent_test {
512# int foo () {
513#   return 25;
514# }
515# }
516
517	.text
518	.globl	_Z3foov                         # -- Begin function _Z3foov
519	.p2align	4, 0x90
520	.type	_Z3foov,@function
521_Z3foov:                                # @_Z3foov
522.Lfunc_begin0:
523	.cfi_startproc
524# %bb.0:                                # %entry
525	pushq	%rbp
526	.cfi_def_cfa_offset 16
527	.cfi_offset %rbp, -16
528	movq	%rsp, %rbp
529	.cfi_def_cfa_register %rbp
530.Ltmp0:
531	movl	$1024, -16(%rbp)                # imm = 0x400
532	movb	$114, -12(%rbp)
533	movq	$0, -8(%rbp)
534	movl	-16(%rbp), %eax
535	movsbl	-12(%rbp), %ecx
536	imull	%ecx, %eax
537	popq	%rbp
538	.cfi_def_cfa %rsp, 8
539	retq
540.Ltmp1:
541.Lfunc_end0:
542	.size	_Z3foov, .Lfunc_end0-_Z3foov
543	.cfi_endproc
544                                        # -- End function
545	.globl	_ZN11parent_test3fooEv          # -- Begin function _ZN11parent_test3fooEv
546	.p2align	4, 0x90
547	.type	_ZN11parent_test3fooEv,@function
548_ZN11parent_test3fooEv:                 # @_ZN11parent_test3fooEv
549.Lfunc_begin1:
550	.cfi_startproc
551# %bb.0:                                # %entry
552	pushq	%rbp
553	.cfi_def_cfa_offset 16
554	.cfi_offset %rbp, -16
555	movq	%rsp, %rbp
556	.cfi_def_cfa_register %rbp
557.Ltmp2:
558	movl	$25, %eax
559	popq	%rbp
560	.cfi_def_cfa %rsp, 8
561	retq
562.Ltmp3:
563.Lfunc_end1:
564	.size	_ZN11parent_test3fooEv, .Lfunc_end1-_ZN11parent_test3fooEv
565	.cfi_endproc
566                                        # -- End function
567	.section	.debug_abbrev,"",@progbits
568	.byte	0                               # EOM(1)
569	.byte	0                               # EOM(2)
570	.byte	0                               # EOM(3)
571	.section	.debug_info,"",@progbits
572.Lcu_begin0:
573	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
574.Ldebug_info_start0:
575	.short	5                               # DWARF version number
576	.byte	1                               # DWARF Unit Type
577	.byte	8                               # Address Size (in bytes)
578	.long	.debug_abbrev                   # Offset Into Abbrev. Section
579.Ldebug_info_end0:
580	.section	.debug_str_offsets,"",@progbits
581	.long	56                              # Length of String Offsets Set
582	.short	5
583	.short	0
584.Lstr_offsets_base0:
585	.section	.debug_str,"MS",@progbits,1
586.Linfo_string0:
587	.asciz	"clang version 19.0.0git (git@github.com:llvm/llvm-project.git 53b14cd9ce2b57da73d173fc876d2e9e199f5640)" # string offset=0
588.Linfo_string1:
589	.asciz	"b.cpp"                         # string offset=104
590.Linfo_string2:
591	.asciz	"/proc/self/cwd"                # string offset=110
592.Linfo_string3:
593	.asciz	"int"                           # string offset=125
594.Linfo_string4:
595	.asciz	"foo"                           # string offset=129
596.Linfo_string5:
597	.asciz	"_Z3foov"                       # string offset=133
598.Linfo_string6:
599	.asciz	"parent_test"                   # string offset=141
600.Linfo_string7:
601	.asciz	"_ZN11parent_test3fooEv"        # string offset=153
602.Linfo_string8:
603	.asciz	"struct2"                       # string offset=176
604.Linfo_string9:
605	.asciz	"x"                             # string offset=184
606.Linfo_string10:
607	.asciz	"y"                             # string offset=186
608.Linfo_string11:
609	.asciz	"char"                          # string offset=188
610.Linfo_string12:
611	.asciz	"foo_ptr"                       # string offset=193
612.Laddr_table_base0:
613	.quad	.Lfunc_begin0
614	.quad	.Lfunc_begin1
615.Ldebug_addr_end0:
616	.section	.debug_names,"",@progbits
617	.long	.Lnames_end0-.Lnames_start0     # Header: unit length
618.Lnames_start0:
619	.short	5                               # Header: version
620	.short	0                               # Header: padding
621	.long	1                               # Header: compilation unit count
622	.long	0                               # Header: local type unit count
623	.long	0                               # Header: foreign type unit count
624	.long	6                               # Header: bucket count
625	.long	6                               # Header: name count
626	.long	.Lnames_abbrev_end0-.Lnames_abbrev_start0 # Header: abbreviation table size
627	.long	8                               # Header: augmentation string size
628	.ascii	"LLVM0700"                      # Header: augmentation string
629	.long	.Lcu_begin0                     # Compilation unit 0
630	.long	0                               # Bucket 0
631	.long	1                               # Bucket 1
632	.long	3                               # Bucket 2
633	.long	5                               # Bucket 3
634	.long	0                               # Bucket 4
635	.long	6                               # Bucket 5
636	.long	-1451972055                     # Hash in Bucket 1
637	.long	-1257882357                     # Hash in Bucket 1
638	.long	175265198                       # Hash in Bucket 2
639	.long	193495088                       # Hash in Bucket 2
640	.long	193491849                       # Hash in Bucket 3
641	.long	2090147939                      # Hash in Bucket 5
642	.long	.Linfo_string7                  # String in Bucket 1: _ZN11parent_test3fooEv
643	.long	.Linfo_string5                  # String in Bucket 1: _Z3foov
644	.long	.Linfo_string6                  # String in Bucket 2: parent_test
645	.long	.Linfo_string3                  # String in Bucket 2: int
646	.long	.Linfo_string4                  # String in Bucket 3: foo
647	.long	.Linfo_string11                 # String in Bucket 5: char
648	.long	.Lnames4-.Lnames_entries0       # Offset in Bucket 1
649	.long	.Lnames2-.Lnames_entries0       # Offset in Bucket 1
650	.long	.Lnames3-.Lnames_entries0       # Offset in Bucket 2
651	.long	.Lnames0-.Lnames_entries0       # Offset in Bucket 2
652	.long	.Lnames1-.Lnames_entries0       # Offset in Bucket 3
653	.long	.Lnames5-.Lnames_entries0       # Offset in Bucket 5
654.Lnames_abbrev_start0:
655	.byte	1                               # Abbrev code
656	.byte	46                              # DW_TAG_subprogram
657	.byte	3                               # DW_IDX_die_offset
658	.byte	19                              # DW_FORM_ref4
659	.byte	4                               # DW_IDX_parent
660	.byte	19                              # DW_FORM_ref4
661	.byte	0                               # End of abbrev
662	.byte	0                               # End of abbrev
663	.byte	2                               # Abbrev code
664	.byte	46                              # DW_TAG_subprogram
665	.byte	3                               # DW_IDX_die_offset
666	.byte	19                              # DW_FORM_ref4
667	.byte	4                               # DW_IDX_parent
668	.byte	25                              # DW_FORM_flag_present
669	.byte	0                               # End of abbrev
670	.byte	0                               # End of abbrev
671	.byte	3                               # Abbrev code
672	.byte	57                              # DW_TAG_namespace
673	.byte	3                               # DW_IDX_die_offset
674	.byte	19                              # DW_FORM_ref4
675	.byte	4                               # DW_IDX_parent
676	.byte	25                              # DW_FORM_flag_present
677	.byte	0                               # End of abbrev
678	.byte	0                               # End of abbrev
679	.byte	4                               # Abbrev code
680	.byte	36                              # DW_TAG_base_type
681	.byte	3                               # DW_IDX_die_offset
682	.byte	19                              # DW_FORM_ref4
683	.byte	4                               # DW_IDX_parent
684	.byte	25                              # DW_FORM_flag_present
685	.byte	0                               # End of abbrev
686	.byte	0                               # End of abbrev
687	.byte	5                               # Abbrev code
688	.byte	19                              # DW_TAG_structure_type
689	.byte	3                               # DW_IDX_die_offset
690	.byte	19                              # DW_FORM_ref4
691	.byte	4                               # DW_IDX_parent
692	.byte	25                              # DW_FORM_flag_present
693	.byte	0                               # End of abbrev
694	.byte	0                               # End of abbrev
695	.byte	0                               # End of abbrev list
696.Lnames_abbrev_end0:
697.Lnames_entries0:
698.Lnames4:
699.L3:
700	.byte	1                               # Abbreviation code
701	.long	69                              # DW_IDX_die_offset
702	.long	.L5-.Lnames_entries0            # DW_IDX_parent
703	.byte	0                               # End of list: _ZN11parent_test3fooEv
704.Lnames2:
705.L0:
706	.byte	2                               # Abbreviation code
707	.long	39                              # DW_IDX_die_offset
708	.byte	0                               # DW_IDX_parent
709                                        # End of list: _Z3foov
710.Lnames3:
711.L5:
712	.byte	3                               # Abbreviation code
713	.long	67                              # DW_IDX_die_offset
714	.byte	0                               # DW_IDX_parent
715                                        # End of list: parent_test
716.Lnames0:
717.L2:
718	.byte	4                               # Abbreviation code
719	.long	35                              # DW_IDX_die_offset
720	.byte	0                               # DW_IDX_parent
721                                        # End of list: int
722.Lnames1:
723	.byte	2                               # Abbreviation code
724	.long	39                              # DW_IDX_die_offset
725	.byte	1                               # DW_IDX_parent
726                                        # Abbreviation code
727	.long	69                              # DW_IDX_die_offset
728	.long	.L5-.Lnames_entries0            # DW_IDX_parent
729.L4:
730	.byte	5                               # Abbreviation code
731	.long	86                              # DW_IDX_die_offset
732	.byte	0                               # DW_IDX_parent
733                                        # End of list: foo
734.Lnames5:
735.L1:
736	.byte	4                               # Abbreviation code
737	.long	120                             # DW_IDX_die_offset
738	.byte	0                               # DW_IDX_parent
739                                        # End of list: char
740	.p2align	2, 0x0
741.Lnames_end0:
742	.ident	"clang version 19.0.0git (git@github.com:llvm/llvm-project.git 53b14cd9ce2b57da73d173fc876d2e9e199f5640)"
743	.section	".note.GNU-stack","",@progbits
744	.addrsig
745	.section	.debug_line,"",@progbits
746.Lline_table_start0:
747