[ELF] Refine isExported/isPreemptible condition
[llvm-project.git] / lld / test / ELF / debug-names-parent-idx.s
blob64551aa02e59f5a334b78c6624e527f4f9d14378
1 # debug-names-parent-idx.s generated with:
3 # clang++ -g -O0 -gpubnames -fdebug-compilation-dir='/proc/self/cwd' -S \
4 # a.cpp -o a.s
6 # foo.h contents:
8 # int foo();
10 # struct foo {
11 # int x;
12 # char y;
13 # struct foo *foo_ptr;
14 # };
16 # namespace parent_test {
17 # int foo();
18 # }
20 # a.cpp contents:
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 # }
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
43 # RUN: llvm-dwarfdump -debug-names out | FileCheck %s --check-prefix=DWARF
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: ]
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
277 main: # @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:
480 #--- b.s
481 # Generated with:
483 # clang++ -g -O0 -gpubnames -fdebug-compilation-dir='/proc/self/cwd' -S \
484 # b.cpp -o b.s
486 # foo.h contents:
488 # int foo();
490 #struct foo {
491 # int x;
492 # char y;
493 # struct foo *foo_ptr;
494 # };
496 # namespace parent_test {
497 # int foo();
500 # b.cpp contents:
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;
511 # namespace parent_test {
512 # int foo () {
513 # return 25;
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: