xref: /llvm-project/bolt/test/X86/dwarf5-debug-names-abstract-origin-specification.s (revision 4b825c7417f72ee88ee3e4316d0c01ed463f1241)
1# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %s   -o %tmain.o
2# RUN: %clang %cflags -gdwarf-5 %tmain.o -o %tmain.exe
3# RUN: llvm-bolt %tmain.exe -o %tmain.exe.bolt --update-debug-sections
4# RUN: llvm-dwarfdump --debug-names %tmain.exe.bolt > %tlog.txt
5# RUN: cat %tlog.txt | FileCheck -check-prefix=BOLT %s
6
7## This test checks that BOLT correctly generates .debug_names section when there is transative
8## DW_AT_name/DW_AT_linkage_name resolution.
9
10# BOLT:       Abbreviations [
11# BOLT-NEXT:   Abbreviation [[ABBREV1:0x[0-9a-f]*]] {
12# BOLT-NEXT:      Tag: DW_TAG_subprogram
13# BOLT-NEXT:      DW_IDX_die_offset: DW_FORM_ref4
14# BOLT-NEXT:      DW_IDX_parent: DW_FORM_flag_present
15# BOLT-NEXT:    }
16# BOLT-NEXT:    Abbreviation [[ABBREV2:0x[0-9a-f]*]] {
17# BOLT-NEXT:      Tag: DW_TAG_class_type
18# BOLT-NEXT:      DW_IDX_die_offset: DW_FORM_ref4
19# BOLT-NEXT:      DW_IDX_parent: DW_FORM_flag_present
20# BOLT-NEXT:    }
21# BOLT-NEXT:    Abbreviation [[ABBREV3:0x[0-9a-f]*]] {
22# BOLT-NEXT:      Tag: DW_TAG_inlined_subroutine
23# BOLT-NEXT:      DW_IDX_die_offset: DW_FORM_ref4
24# BOLT-NEXT:      DW_IDX_parent: DW_FORM_ref4
25# BOLT-NEXT:    }
26# BOLT-NEXT:    Abbreviation [[ABBREV4:0x[0-9a-f]*]] {
27# BOLT-NEXT:      Tag: DW_TAG_base_type
28# BOLT-NEXT:      DW_IDX_die_offset: DW_FORM_ref4
29# BOLT-NEXT:      DW_IDX_parent: DW_FORM_flag_present
30# BOLT-NEXT:    }
31# BOLT-NEXT:  ]
32# BOLT-NEXT:  Bucket 0 [
33# BOLT-NEXT:    Name 1 {
34# BOLT-NEXT:      Hash: 0xD72418AA
35# BOLT-NEXT:      String: {{.+}} "_ZL3fooi"
36# BOLT-NEXT:      Entry @ {{.+}}  {
37# BOLT-NEXT:        Abbrev: [[ABBREV1]]
38# BOLT-NEXT:        Tag: DW_TAG_subprogram
39# BOLT-NEXT:        DW_IDX_die_offset: 0x000000ba
40# BOLT-NEXT:        DW_IDX_parent: <parent not indexed>
41# BOLT-NEXT:      }
42# BOLT-NEXT:    }
43# BOLT-NEXT:  ]
44# BOLT-NEXT:  Bucket 1 [
45# BOLT-NEXT:    Name 2 {
46# BOLT-NEXT:      Hash: 0x10614A06
47# BOLT-NEXT:      String: {{.+}} "State"
48# BOLT-NEXT:      Entry @ {{.+}}  {
49# BOLT-NEXT:        Abbrev: [[ABBREV2]]
50# BOLT-NEXT:        Tag: DW_TAG_class_type
51# BOLT-NEXT:        DW_IDX_die_offset: 0x0000002b
52# BOLT-NEXT:        DW_IDX_parent: <parent not indexed>
53# BOLT-NEXT:      }
54# BOLT-NEXT:      Entry @ [[REF1:0x[0-9a-f]*]] {
55# BOLT-NEXT:        Abbrev: [[ABBREV1]]
56# BOLT-NEXT:        Tag: DW_TAG_subprogram
57# BOLT-NEXT:        DW_IDX_die_offset: 0x00000089
58# BOLT-NEXT:        DW_IDX_parent: <parent not indexed>
59# BOLT-NEXT:      }
60# BOLT-NEXT:      Entry @ {{.+}}  {
61# BOLT-NEXT:        Abbrev: [[ABBREV3]]
62# BOLT-NEXT:        Tag: DW_TAG_inlined_subroutine
63# BOLT-NEXT:        DW_IDX_die_offset: 0x000000a3
64# BOLT-NEXT:        DW_IDX_parent: Entry @ [[REF1]]
65# BOLT-NEXT:      }
66# BOLT-NEXT:    }
67# BOLT-NEXT:  ]
68# BOLT-NEXT:  Bucket 2 [
69# BOLT-NEXT:    EMPTY
70# BOLT-NEXT:  ]
71# BOLT-NEXT:  Bucket 3 [
72# BOLT-NEXT:    Name 3 {
73# BOLT-NEXT:      Hash: 0xB888030
74# BOLT-NEXT:      String: {{.+}} "int"
75# BOLT-NEXT:      Entry @ {{.+}}  {
76# BOLT-NEXT:        Abbrev: [[ABBREV4]]
77# BOLT-NEXT:        Tag: DW_TAG_base_type
78# BOLT-NEXT:        DW_IDX_die_offset: 0x00000085
79# BOLT-NEXT:        DW_IDX_parent: <parent not indexed>
80# BOLT-NEXT:      }
81# BOLT-NEXT:    }
82# BOLT-NEXT:    Name 4 {
83# BOLT-NEXT:      Hash: 0x7C9A7F6A
84# BOLT-NEXT:      String: {{.+}} "main"
85# BOLT-NEXT:      Entry @ {{.+}}  {
86# BOLT-NEXT:        Abbrev: [[ABBREV1]]
87# BOLT-NEXT:        Tag: DW_TAG_subprogram
88# BOLT-NEXT:        DW_IDX_die_offset: 0x00000042
89# BOLT-NEXT:        DW_IDX_parent: <parent not indexed>
90# BOLT-NEXT:      }
91# BOLT-NEXT:    }
92# BOLT-NEXT:  ]
93# BOLT-NEXT:  Bucket 4 [
94# BOLT-NEXT:    EMPTY
95# BOLT-NEXT:  ]
96# BOLT-NEXT:  Bucket 5 [
97# BOLT-NEXT:    Name 5 {
98# BOLT-NEXT:      Hash: 0xB887389
99# BOLT-NEXT:      String: {{.+}} "foo"
100# BOLT-NEXT:      Entry @ {{.+}}  {
101# BOLT-NEXT:        Abbrev: [[ABBREV1]]
102# BOLT-NEXT:        Tag: DW_TAG_subprogram
103# BOLT-NEXT:        DW_IDX_die_offset: 0x000000ba
104# BOLT-NEXT:        DW_IDX_parent: <parent not indexed>
105# BOLT-NEXT:      }
106# BOLT-NEXT:    }
107# BOLT-NEXT:    Name 6 {
108# BOLT-NEXT:      Hash: 0x7C952063
109# BOLT-NEXT:      String: {{.+}} "char"
110# BOLT-NEXT:      Entry @ {{.+}}  {
111# BOLT-NEXT:        Abbrev: [[ABBREV4]]
112# BOLT-NEXT:        Tag: DW_TAG_base_type
113# BOLT-NEXT:        DW_IDX_die_offset: 0x000000d9
114# BOLT-NEXT:        DW_IDX_parent: <parent not indexed>
115# BOLT-NEXT:      }
116# BOLT-NEXT:    }
117# BOLT-NEXT:    Name 7 {
118# BOLT-NEXT:      Hash: 0xFBBDC812
119# BOLT-NEXT:      String: {{.+}} "_ZN5StateC2Ev"
120# BOLT-NEXT:      Entry @ {{.+}}  {
121# BOLT-NEXT:        Abbrev: [[ABBREV1]]
122# BOLT-NEXT:        Tag: DW_TAG_subprogram
123# BOLT-NEXT:        DW_IDX_die_offset: 0x00000089
124# BOLT-NEXT:        DW_IDX_parent: <parent not indexed>
125# BOLT-NEXT:      }
126# BOLT-NEXT:      Entry @ {{.+}}  {
127# BOLT-NEXT:        Abbrev: [[ABBREV3]]
128# BOLT-NEXT:        Tag: DW_TAG_inlined_subroutine
129# BOLT-NEXT:        DW_IDX_die_offset: 0x000000a3
130# BOLT-NEXT:        DW_IDX_parent: Entry @ [[REF1]]
131
132## static int foo(int i) {
133##   return i ++;
134## }
135## class State {
136## public:
137##   State() {[[clang::always_inline]] foo(3);}
138## };
139##
140## int main(int argc, char* argv[]) {
141##   State S;
142##   return 0;
143## }
144
145## Test manually modified to redirect DW_TAG_inlined_subroutine to DW_TAG_subprogram with DW_AT_specification.
146
147	.text
148	.file	"main.cpp"
149	.file	0 "abstractChainTwo" "main.cpp" md5 0x17ad726b6a1fd49ee59559a1302da539
150	.globl	main                            # -- Begin function main
151	.p2align	4, 0x90
152	.type	main,@function
153main:                                   # @main
154.Lfunc_begin0:
155	.loc	0 9 0                           # main.cpp:9:0
156.Ltmp0:
157	.loc	0 10 9 prologue_end             # main.cpp:10:9
158	callq	_ZN5StateC2Ev
159	.loc	0 11 3                          # main.cpp:11:3
160	.loc	0 11 3 epilogue_begin is_stmt 0 # main.cpp:11:3
161	retq
162.Ltmp1:
163.Lfunc_end0:
164	.size	main, .Lfunc_end0-main
165                                        # -- End function
166	.section	.text._ZN5StateC2Ev,"axG",@progbits,_ZN5StateC2Ev,comdat
167	.weak	_ZN5StateC2Ev                   # -- Begin function _ZN5StateC2Ev
168	.p2align	4, 0x90
169	.type	_ZN5StateC2Ev,@function
170_ZN5StateC2Ev:                          # @_ZN5StateC2Ev
171.Lfunc_begin1:
172	.loc	0 6 0 is_stmt 1                 # main.cpp:6:0
173	.cfi_startproc
174# %bb.0:
175	pushq	%rbp
176	.cfi_def_cfa_offset 16
177	.cfi_offset %rbp, -16
178	movq	%rsp, %rbp
179	.cfi_def_cfa_register %rbp
180	movq	%rdi, -16(%rbp)
181	movl	$3, -4(%rbp)
182.Ltmp2:
183	.loc	0 2 12 prologue_end             # main.cpp:2:12
184	movl	-4(%rbp), %eax
185	addl	$1, %eax
186	movl	%eax, -4(%rbp)
187.Ltmp3:
188	.loc	0 6 44 epilogue_begin           # main.cpp:6:44
189	popq	%rbp
190	.cfi_def_cfa %rsp, 8
191	retq
192.Ltmp4:
193.Lfunc_end1:
194	.size	_ZN5StateC2Ev, .Lfunc_end1-_ZN5StateC2Ev
195	.cfi_endproc
196                                        # -- End function
197	.text
198	.p2align	4, 0x90                         # -- Begin function _ZL3fooi
199	.type	_ZL3fooi,@function
200_ZL3fooi:                               # @_ZL3fooi
201.Lfunc_begin2:
202	.loc	0 1 0                           # main.cpp:1:0
203	.cfi_startproc
204# %bb.0:
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.Ltmp5:
212	.loc	0 2 12 prologue_end             # main.cpp:2:12
213	movl	-4(%rbp), %eax
214	movl	%eax, %ecx
215	addl	$1, %ecx
216	movl	%ecx, -4(%rbp)
217	.loc	0 2 3 epilogue_begin is_stmt 0  # main.cpp:2:3
218	popq	%rbp
219	.cfi_def_cfa %rsp, 8
220	retq
221.Ltmp6:
222.Lfunc_end2:
223	.size	_ZL3fooi, .Lfunc_end2-_ZL3fooi
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	1                               # DW_FORM_addr
244	.byte	85                              # DW_AT_ranges
245	.byte	35                              # DW_FORM_rnglistx
246	.byte	115                             # DW_AT_addr_base
247	.byte	23                              # DW_FORM_sec_offset
248	.byte	116                             # DW_AT_rnglists_base
249	.byte	23                              # DW_FORM_sec_offset
250	.byte	0                               # EOM(1)
251	.byte	0                               # EOM(2)
252	.byte	2                               # Abbreviation Code
253	.byte	2                               # DW_TAG_class_type
254	.byte	1                               # DW_CHILDREN_yes
255	.byte	54                              # DW_AT_calling_convention
256	.byte	11                              # DW_FORM_data1
257	.byte	3                               # DW_AT_name
258	.byte	37                              # DW_FORM_strx1
259	.byte	11                              # DW_AT_byte_size
260	.byte	11                              # DW_FORM_data1
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	0                               # EOM(1)
266	.byte	0                               # EOM(2)
267	.byte	3                               # Abbreviation Code
268	.byte	46                              # DW_TAG_subprogram
269	.byte	1                               # DW_CHILDREN_yes
270	.byte	3                               # DW_AT_name
271	.byte	37                              # DW_FORM_strx1
272	.byte	58                              # DW_AT_decl_file
273	.byte	11                              # DW_FORM_data1
274	.byte	59                              # DW_AT_decl_line
275	.byte	11                              # DW_FORM_data1
276	.byte	60                              # DW_AT_declaration
277	.byte	25                              # DW_FORM_flag_present
278	.byte	63                              # DW_AT_external
279	.byte	25                              # DW_FORM_flag_present
280	.byte	50                              # DW_AT_accessibility
281	.byte	11                              # DW_FORM_data1
282	.byte	0                               # EOM(1)
283	.byte	0                               # EOM(2)
284	.byte	4                               # Abbreviation Code
285	.byte	5                               # DW_TAG_formal_parameter
286	.byte	0                               # DW_CHILDREN_no
287	.byte	73                              # DW_AT_type
288	.byte	19                              # DW_FORM_ref4
289	.byte	52                              # DW_AT_artificial
290	.byte	25                              # DW_FORM_flag_present
291	.byte	0                               # EOM(1)
292	.byte	0                               # EOM(2)
293	.byte	5                               # Abbreviation Code
294	.byte	15                              # DW_TAG_pointer_type
295	.byte	0                               # DW_CHILDREN_no
296	.byte	73                              # DW_AT_type
297	.byte	19                              # DW_FORM_ref4
298	.byte	0                               # EOM(1)
299	.byte	0                               # EOM(2)
300	.byte	6                               # Abbreviation Code
301	.byte	46                              # DW_TAG_subprogram
302	.byte	1                               # DW_CHILDREN_yes
303	.byte	17                              # DW_AT_low_pc
304	.byte	27                              # DW_FORM_addrx
305	.byte	18                              # DW_AT_high_pc
306	.byte	6                               # DW_FORM_data4
307	.byte	64                              # DW_AT_frame_base
308	.byte	24                              # DW_FORM_exprloc
309	.byte	3                               # DW_AT_name
310	.byte	37                              # DW_FORM_strx1
311	.byte	58                              # DW_AT_decl_file
312	.byte	11                              # DW_FORM_data1
313	.byte	59                              # DW_AT_decl_line
314	.byte	11                              # DW_FORM_data1
315	.byte	73                              # DW_AT_type
316	.byte	19                              # DW_FORM_ref4
317	.byte	63                              # DW_AT_external
318	.byte	25                              # DW_FORM_flag_present
319	.byte	0                               # EOM(1)
320	.byte	0                               # EOM(2)
321	.byte	7                               # Abbreviation Code
322	.byte	5                               # DW_TAG_formal_parameter
323	.byte	0                               # DW_CHILDREN_no
324	.byte	2                               # DW_AT_location
325	.byte	24                              # DW_FORM_exprloc
326	.byte	3                               # DW_AT_name
327	.byte	37                              # DW_FORM_strx1
328	.byte	58                              # DW_AT_decl_file
329	.byte	11                              # DW_FORM_data1
330	.byte	59                              # DW_AT_decl_line
331	.byte	11                              # DW_FORM_data1
332	.byte	73                              # DW_AT_type
333	.byte	19                              # DW_FORM_ref4
334	.byte	0                               # EOM(1)
335	.byte	0                               # EOM(2)
336	.byte	8                               # Abbreviation Code
337	.byte	52                              # DW_TAG_variable
338	.byte	0                               # DW_CHILDREN_no
339	.byte	2                               # DW_AT_location
340	.byte	24                              # DW_FORM_exprloc
341	.byte	3                               # DW_AT_name
342	.byte	37                              # DW_FORM_strx1
343	.byte	58                              # DW_AT_decl_file
344	.byte	11                              # DW_FORM_data1
345	.byte	59                              # DW_AT_decl_line
346	.byte	11                              # DW_FORM_data1
347	.byte	73                              # DW_AT_type
348	.byte	19                              # DW_FORM_ref4
349	.byte	0                               # EOM(1)
350	.byte	0                               # EOM(2)
351	.byte	9                               # Abbreviation Code
352	.byte	46                              # DW_TAG_subprogram
353	.byte	1                               # DW_CHILDREN_yes
354	.byte	110                             # DW_AT_linkage_name
355	.byte	37                              # DW_FORM_strx1
356	.byte	3                               # DW_AT_name
357	.byte	37                              # DW_FORM_strx1
358	.byte	58                              # DW_AT_decl_file
359	.byte	11                              # DW_FORM_data1
360	.byte	59                              # DW_AT_decl_line
361	.byte	11                              # DW_FORM_data1
362	.byte	73                              # DW_AT_type
363	.byte	19                              # DW_FORM_ref4
364	.byte	32                              # DW_AT_inline
365	.byte	33                              # DW_FORM_implicit_const
366	.byte	1
367	.byte	0                               # EOM(1)
368	.byte	0                               # EOM(2)
369	.byte	10                              # Abbreviation Code
370	.byte	5                               # DW_TAG_formal_parameter
371	.byte	0                               # DW_CHILDREN_no
372	.byte	3                               # DW_AT_name
373	.byte	37                              # DW_FORM_strx1
374	.byte	58                              # DW_AT_decl_file
375	.byte	11                              # DW_FORM_data1
376	.byte	59                              # DW_AT_decl_line
377	.byte	11                              # DW_FORM_data1
378	.byte	73                              # DW_AT_type
379	.byte	19                              # DW_FORM_ref4
380	.byte	0                               # EOM(1)
381	.byte	0                               # EOM(2)
382	.byte	11                              # Abbreviation Code
383	.byte	36                              # DW_TAG_base_type
384	.byte	0                               # DW_CHILDREN_no
385	.byte	3                               # DW_AT_name
386	.byte	37                              # DW_FORM_strx1
387	.byte	62                              # DW_AT_encoding
388	.byte	11                              # DW_FORM_data1
389	.byte	11                              # DW_AT_byte_size
390	.byte	11                              # DW_FORM_data1
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	100                             # DW_AT_object_pointer
403	.byte	19                              # DW_FORM_ref4
404	.byte	110                             # DW_AT_linkage_name
405	.byte	37                              # DW_FORM_strx1
406	.byte	71                              # DW_AT_specification
407	.byte	19                              # DW_FORM_ref4
408	.byte	0                               # EOM(1)
409	.byte	0                               # EOM(2)
410	.byte	13                              # Abbreviation Code
411	.byte	5                               # DW_TAG_formal_parameter
412	.byte	0                               # DW_CHILDREN_no
413	.byte	2                               # DW_AT_location
414	.byte	24                              # DW_FORM_exprloc
415	.byte	3                               # DW_AT_name
416	.byte	37                              # DW_FORM_strx1
417	.byte	73                              # DW_AT_type
418	.byte	19                              # DW_FORM_ref4
419	.byte	52                              # DW_AT_artificial
420	.byte	25                              # DW_FORM_flag_present
421	.byte	0                               # EOM(1)
422	.byte	0                               # EOM(2)
423	.byte	14                              # Abbreviation Code
424	.byte	29                              # DW_TAG_inlined_subroutine
425	.byte	1                               # DW_CHILDREN_yes
426	.byte	49                              # DW_AT_abstract_origin
427	.byte	19                              # DW_FORM_ref4
428	.byte	17                              # DW_AT_low_pc
429	.byte	27                              # DW_FORM_addrx
430	.byte	18                              # DW_AT_high_pc
431	.byte	6                               # DW_FORM_data4
432	.byte	88                              # DW_AT_call_file
433	.byte	11                              # DW_FORM_data1
434	.byte	89                              # DW_AT_call_line
435	.byte	11                              # DW_FORM_data1
436	.byte	87                              # DW_AT_call_column
437	.byte	11                              # DW_FORM_data1
438	.byte	0                               # EOM(1)
439	.byte	0                               # EOM(2)
440	.byte	15                              # Abbreviation Code
441	.byte	5                               # DW_TAG_formal_parameter
442	.byte	0                               # DW_CHILDREN_no
443	.byte	2                               # DW_AT_location
444	.byte	24                              # DW_FORM_exprloc
445	.byte	49                              # DW_AT_abstract_origin
446	.byte	19                              # DW_FORM_ref4
447	.byte	0                               # EOM(1)
448	.byte	0                               # EOM(2)
449	.byte	16                              # Abbreviation Code
450	.byte	46                              # DW_TAG_subprogram
451	.byte	1                               # DW_CHILDREN_yes
452	.byte	17                              # DW_AT_low_pc
453	.byte	27                              # DW_FORM_addrx
454	.byte	18                              # DW_AT_high_pc
455	.byte	6                               # DW_FORM_data4
456	.byte	64                              # DW_AT_frame_base
457	.byte	24                              # DW_FORM_exprloc
458	.byte	49                              # DW_AT_abstract_origin
459	.byte	19                              # DW_FORM_ref4
460	.byte	0                               # EOM(1)
461	.byte	0                               # EOM(2)
462	.byte	0                               # EOM(3)
463	.section	.debug_info,"",@progbits
464.Lcu_begin0:
465	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
466.Ldebug_info_start0:
467	.short	5                               # DWARF version number
468	.byte	1                               # DWARF Unit Type
469	.byte	8                               # Address Size (in bytes)
470	.long	.debug_abbrev                   # Offset Into Abbrev. Section
471	.byte	1                               # Abbrev [1] 0xc:0xd7 DW_TAG_compile_unit
472	.byte	0                               # DW_AT_producer
473	.short	33                              # DW_AT_language
474	.byte	1                               # DW_AT_name
475	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base
476	.long	.Lline_table_start0             # DW_AT_stmt_list
477	.byte	2                               # DW_AT_comp_dir
478	.quad	0                               # DW_AT_low_pc
479	.byte	0                               # DW_AT_ranges
480	.long	.Laddr_table_base0              # DW_AT_addr_base
481	.long	.Lrnglists_table_base0          # DW_AT_rnglists_base
482	.byte	2                               # Abbrev [2] 0x2b:0x12 DW_TAG_class_type
483	.byte	5                               # DW_AT_calling_convention
484	.byte	3                               # DW_AT_name
485	.byte	1                               # DW_AT_byte_size
486	.byte	0                               # DW_AT_decl_file
487	.byte	4                               # DW_AT_decl_line
488	.byte	3                               # Abbrev [3] 0x31:0xb DW_TAG_subprogram
489	.byte	3                               # DW_AT_name
490	.byte	0                               # DW_AT_decl_file
491	.byte	6                               # DW_AT_decl_line
492                                        # DW_AT_declaration
493                                        # DW_AT_external
494	.byte	1                               # DW_AT_accessibility
495                                        # DW_ACCESS_public
496	.byte	4                               # Abbrev [4] 0x36:0x5 DW_TAG_formal_parameter
497	.long	61                              # DW_AT_type
498                                        # DW_AT_artificial
499	.byte	0                               # End Of Children Mark
500	.byte	0                               # End Of Children Mark
501	.byte	5                               # Abbrev [5] 0x3d:0x5 DW_TAG_pointer_type
502	.long	43                              # DW_AT_type
503	.byte	6                               # Abbrev [6] 0x42:0x31 DW_TAG_subprogram
504	.byte	0                               # DW_AT_low_pc
505	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc
506	.byte	1                               # DW_AT_frame_base
507	.byte	86
508	.byte	8                               # DW_AT_name
509	.byte	0                               # DW_AT_decl_file
510	.byte	9                               # DW_AT_decl_line
511	.long	133                             # DW_AT_type
512                                        # DW_AT_external
513	.byte	7                               # Abbrev [7] 0x51:0xb DW_TAG_formal_parameter
514	.byte	2                               # DW_AT_location
515	.byte	145
516	.byte	120
517	.byte	10                              # DW_AT_name
518	.byte	0                               # DW_AT_decl_file
519	.byte	9                               # DW_AT_decl_line
520	.long	133                             # DW_AT_type
521	.byte	7                               # Abbrev [7] 0x5c:0xb DW_TAG_formal_parameter
522	.byte	2                               # DW_AT_location
523	.byte	145
524	.byte	112
525	.byte	11                              # DW_AT_name
526	.byte	0                               # DW_AT_decl_file
527	.byte	9                               # DW_AT_decl_line
528	.long	207                             # DW_AT_type
529	.byte	8                               # Abbrev [8] 0x67:0xb DW_TAG_variable
530	.byte	2                               # DW_AT_location
531	.byte	145
532	.byte	111
533	.byte	13                              # DW_AT_name
534	.byte	0                               # DW_AT_decl_file
535	.byte	10                              # DW_AT_decl_line
536	.long	43                              # DW_AT_type
537	.byte	0                               # End Of Children Mark
538	.byte	9                               # Abbrev [9] 0x73:0x12 DW_TAG_subprogram
539	.byte	4                               # DW_AT_linkage_name
540	.byte	5                               # DW_AT_name
541	.byte	0                               # DW_AT_decl_file
542	.byte	1                               # DW_AT_decl_line
543	.long	133                             # DW_AT_type
544                                        # DW_AT_inline
545	.byte	10                              # Abbrev [10] 0x7c:0x8 DW_TAG_formal_parameter
546	.byte	7                               # DW_AT_name
547	.byte	0                               # DW_AT_decl_file
548	.byte	1                               # DW_AT_decl_line
549	.long	133                             # DW_AT_type
550	.byte	0                               # End Of Children Mark
551	.byte	11                              # Abbrev [11] 0x85:0x4 DW_TAG_base_type
552	.byte	6                               # DW_AT_name
553	.byte	5                               # DW_AT_encoding
554	.byte	4                               # DW_AT_byte_size
555	.byte	12                              # Abbrev [12] 0x89:0x31 DW_TAG_subprogram
556	.byte	1                               # DW_AT_low_pc
557	.long	.Lfunc_end1-.Lfunc_begin1       # DW_AT_high_pc
558	.byte	1                               # DW_AT_frame_base
559	.byte	86
560	.long	154                             # DW_AT_object_pointer
561	.byte	9                               # DW_AT_linkage_name
562	.long	49                              # DW_AT_specification
563	.byte	13                              # Abbrev [13] 0x9a:0x9 DW_TAG_formal_parameter
564	.byte	2                               # DW_AT_location
565	.byte	145
566	.byte	112
567	.byte	14                              # DW_AT_name
568	.long	221                             # DW_AT_type
569                                        # DW_AT_artificial
570	.byte	14                              # Abbrev [14] 0xa3:0x16 DW_TAG_inlined_subroutine
571	.long	137                             # DW_AT_abstract_origin Manually Modified
572	.byte	2                               # DW_AT_low_pc
573	.long	.Ltmp3-.Ltmp2                   # DW_AT_high_pc
574	.byte	0                               # DW_AT_call_file
575	.byte	6                               # DW_AT_call_line
576	.byte	37                              # DW_AT_call_column
577	.byte	15                              # Abbrev [15] 0xb0:0x8 DW_TAG_formal_parameter
578	.byte	2                               # DW_AT_location
579	.byte	145
580	.byte	124
581	.long	124                             # DW_AT_abstract_origin
582	.byte	0                               # End Of Children Mark
583	.byte	0                               # End Of Children Mark
584	.byte	16                              # Abbrev [16] 0xba:0x15 DW_TAG_subprogram
585	.byte	3                               # DW_AT_low_pc
586	.long	.Lfunc_end2-.Lfunc_begin2       # DW_AT_high_pc
587	.byte	1                               # DW_AT_frame_base
588	.byte	86
589	.long	115                             # DW_AT_abstract_origin
590	.byte	15                              # Abbrev [15] 0xc6:0x8 DW_TAG_formal_parameter
591	.byte	2                               # DW_AT_location
592	.byte	145
593	.byte	124
594	.long	124                             # DW_AT_abstract_origin
595	.byte	0                               # End Of Children Mark
596	.byte	5                               # Abbrev [5] 0xcf:0x5 DW_TAG_pointer_type
597	.long	212                             # DW_AT_type
598	.byte	5                               # Abbrev [5] 0xd4:0x5 DW_TAG_pointer_type
599	.long	217                             # DW_AT_type
600	.byte	11                              # Abbrev [11] 0xd9:0x4 DW_TAG_base_type
601	.byte	12                              # DW_AT_name
602	.byte	6                               # DW_AT_encoding
603	.byte	1                               # DW_AT_byte_size
604	.byte	5                               # Abbrev [5] 0xdd:0x5 DW_TAG_pointer_type
605	.long	43                              # DW_AT_type
606	.byte	0                               # End Of Children Mark
607.Ldebug_info_end0:
608	.section	.debug_rnglists,"",@progbits
609	.long	.Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length
610.Ldebug_list_header_start0:
611	.short	5                               # Version
612	.byte	8                               # Address size
613	.byte	0                               # Segment selector size
614	.long	1                               # Offset entry count
615.Lrnglists_table_base0:
616	.long	.Ldebug_ranges0-.Lrnglists_table_base0
617.Ldebug_ranges0:
618	.byte	1                               # DW_RLE_base_addressx
619	.byte	0                               #   base address index
620	.byte	4                               # DW_RLE_offset_pair
621	.uleb128 .Lfunc_begin0-.Lfunc_begin0    #   starting offset
622	.uleb128 .Lfunc_end0-.Lfunc_begin0      #   ending offset
623	.byte	4                               # DW_RLE_offset_pair
624	.uleb128 .Lfunc_begin2-.Lfunc_begin0    #   starting offset
625	.uleb128 .Lfunc_end2-.Lfunc_begin0      #   ending offset
626	.byte	3                               # DW_RLE_startx_length
627	.byte	1                               #   start index
628	.uleb128 .Lfunc_end1-.Lfunc_begin1      #   length
629	.byte	0                               # DW_RLE_end_of_list
630.Ldebug_list_header_end0:
631	.section	.debug_str_offsets,"",@progbits
632	.long	64                              # Length of String Offsets Set
633	.short	5
634	.short	0
635.Lstr_offsets_base0:
636	.section	.debug_str,"MS",@progbits,1
637.Linfo_string0:
638	.asciz	"clang version 20.0.0git"       # string offset=0
639.Linfo_string1:
640	.asciz	"main.cpp"                      # string offset=24
641.Linfo_string2:
642	.asciz	"abstractChainTwo" # string offset=33
643.Linfo_string3:
644	.asciz	"State"                         # string offset=88
645.Linfo_string4:
646	.asciz	"main"                          # string offset=94
647.Linfo_string5:
648	.asciz	"_ZL3fooi"                      # string offset=99
649.Linfo_string6:
650	.asciz	"foo"                           # string offset=108
651.Linfo_string7:
652	.asciz	"int"                           # string offset=112
653.Linfo_string8:
654	.asciz	"i"                             # string offset=116
655.Linfo_string9:
656	.asciz	"_ZN5StateC2Ev"                 # string offset=118
657.Linfo_string10:
658	.asciz	"argc"                          # string offset=132
659.Linfo_string11:
660	.asciz	"argv"                          # string offset=137
661.Linfo_string12:
662	.asciz	"char"                          # string offset=142
663.Linfo_string13:
664	.asciz	"S"                             # string offset=147
665.Linfo_string14:
666	.asciz	"this"                          # string offset=149
667	.section	.debug_str_offsets,"",@progbits
668	.long	.Linfo_string0
669	.long	.Linfo_string1
670	.long	.Linfo_string2
671	.long	.Linfo_string3
672	.long	.Linfo_string5
673	.long	.Linfo_string6
674	.long	.Linfo_string7
675	.long	.Linfo_string8
676	.long	.Linfo_string4
677	.long	.Linfo_string9
678	.long	.Linfo_string10
679	.long	.Linfo_string11
680	.long	.Linfo_string12
681	.long	.Linfo_string13
682	.long	.Linfo_string14
683	.section	.debug_addr,"",@progbits
684	.long	.Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution
685.Ldebug_addr_start0:
686	.short	5                               # DWARF version number
687	.byte	8                               # Address size
688	.byte	0                               # Segment selector size
689.Laddr_table_base0:
690	.quad	.Lfunc_begin0
691	.quad	.Lfunc_begin1
692	.quad	.Ltmp2
693	.quad	.Lfunc_begin2
694.Ldebug_addr_end0:
695	.section	.debug_names,"",@progbits
696	.long	.Lnames_end0-.Lnames_start0     # Header: unit length
697.Lnames_start0:
698	.short	5                               # Header: version
699	.short	0                               # Header: padding
700	.long	1                               # Header: compilation unit count
701	.long	0                               # Header: local type unit count
702	.long	0                               # Header: foreign type unit count
703	.long	7                               # Header: bucket count
704	.long	7                               # Header: name count
705	.long	.Lnames_abbrev_end0-.Lnames_abbrev_start0 # Header: abbreviation table size
706	.long	8                               # Header: augmentation string size
707	.ascii	"LLVM0700"                      # Header: augmentation string
708	.long	.Lcu_begin0                     # Compilation unit 0
709	.long	1                               # Bucket 0
710	.long	2                               # Bucket 1
711	.long	0                               # Bucket 2
712	.long	3                               # Bucket 3
713	.long	0                               # Bucket 4
714	.long	5                               # Bucket 5
715	.long	0                               # Bucket 6
716	.long	-685500246                      # Hash in Bucket 0
717	.long	274811398                       # Hash in Bucket 1
718	.long	193495088                       # Hash in Bucket 3
719	.long	2090499946                      # Hash in Bucket 3
720	.long	193491849                       # Hash in Bucket 5
721	.long	2090147939                      # Hash in Bucket 5
722	.long	-71448558                       # Hash in Bucket 5
723	.long	.Linfo_string5                  # String in Bucket 0: _ZL3fooi
724	.long	.Linfo_string3                  # String in Bucket 1: State
725	.long	.Linfo_string7                  # String in Bucket 3: int
726	.long	.Linfo_string4                  # String in Bucket 3: main
727	.long	.Linfo_string6                  # String in Bucket 5: foo
728	.long	.Linfo_string12                 # String in Bucket 5: char
729	.long	.Linfo_string9                  # String in Bucket 5: _ZN5StateC2Ev
730	.long	.Lnames5-.Lnames_entries0       # Offset in Bucket 0
731	.long	.Lnames0-.Lnames_entries0       # Offset in Bucket 1
732	.long	.Lnames2-.Lnames_entries0       # Offset in Bucket 3
733	.long	.Lnames1-.Lnames_entries0       # Offset in Bucket 3
734	.long	.Lnames4-.Lnames_entries0       # Offset in Bucket 5
735	.long	.Lnames6-.Lnames_entries0       # Offset in Bucket 5
736	.long	.Lnames3-.Lnames_entries0       # Offset in Bucket 5
737.Lnames_abbrev_start0:
738	.byte	1                               # Abbrev code
739	.byte	29                              # DW_TAG_inlined_subroutine
740	.byte	3                               # DW_IDX_die_offset
741	.byte	19                              # DW_FORM_ref4
742	.byte	4                               # DW_IDX_parent
743	.byte	19                              # DW_FORM_ref4
744	.byte	0                               # End of abbrev
745	.byte	0                               # End of abbrev
746	.byte	2                               # Abbrev code
747	.byte	46                              # DW_TAG_subprogram
748	.byte	3                               # DW_IDX_die_offset
749	.byte	19                              # DW_FORM_ref4
750	.byte	4                               # DW_IDX_parent
751	.byte	25                              # DW_FORM_flag_present
752	.byte	0                               # End of abbrev
753	.byte	0                               # End of abbrev
754	.byte	3                               # Abbrev code
755	.byte	2                               # DW_TAG_class_type
756	.byte	3                               # DW_IDX_die_offset
757	.byte	19                              # DW_FORM_ref4
758	.byte	4                               # DW_IDX_parent
759	.byte	25                              # DW_FORM_flag_present
760	.byte	0                               # End of abbrev
761	.byte	0                               # End of abbrev
762	.byte	4                               # Abbrev code
763	.byte	36                              # DW_TAG_base_type
764	.byte	3                               # DW_IDX_die_offset
765	.byte	19                              # DW_FORM_ref4
766	.byte	4                               # DW_IDX_parent
767	.byte	25                              # DW_FORM_flag_present
768	.byte	0                               # End of abbrev
769	.byte	0                               # End of abbrev
770	.byte	0                               # End of abbrev list
771.Lnames_abbrev_end0:
772.Lnames_entries0:
773.Lnames5:
774.L1:
775	.byte	1                               # Abbreviation code
776	.long	163                             # DW_IDX_die_offset
777	.long	.L2-.Lnames_entries0            # DW_IDX_parent
778.L0:
779	.byte	2                               # Abbreviation code
780	.long	186                             # DW_IDX_die_offset
781	.byte	0                               # DW_IDX_parent
782                                        # End of list: _ZL3fooi
783.Lnames0:
784.L5:
785	.byte	3                               # Abbreviation code
786	.long	43                              # DW_IDX_die_offset
787.L2:                                    # DW_IDX_parent
788	.byte	2                               # Abbreviation code
789	.long	137                             # DW_IDX_die_offset
790	.byte	0                               # DW_IDX_parent
791                                        # End of list: State
792.Lnames2:
793.L4:
794	.byte	4                               # Abbreviation code
795	.long	133                             # DW_IDX_die_offset
796	.byte	0                               # DW_IDX_parent
797                                        # End of list: int
798.Lnames1:
799.L6:
800	.byte	2                               # Abbreviation code
801	.long	66                              # DW_IDX_die_offset
802	.byte	0                               # DW_IDX_parent
803                                        # End of list: main
804.Lnames4:
805	.byte	1                               # Abbreviation code
806	.long	163                             # DW_IDX_die_offset
807	.long	.L2-.Lnames_entries0            # DW_IDX_parent
808	.byte	2                               # Abbreviation code
809	.long	186                             # DW_IDX_die_offset
810	.byte	0                               # DW_IDX_parent
811                                        # End of list: foo
812.Lnames6:
813.L3:
814	.byte	4                               # Abbreviation code
815	.long	217                             # DW_IDX_die_offset
816	.byte	0                               # DW_IDX_parent
817                                        # End of list: char
818.Lnames3:
819	.byte	2                               # Abbreviation code
820	.long	137                             # DW_IDX_die_offset
821	.byte	0                               # DW_IDX_parent
822                                        # End of list: _ZN5StateC2Ev
823	.p2align	2, 0x0
824.Lnames_end0:
825	.ident	"clang version 20.0.0git"
826	.section	".note.GNU-stack","",@progbits
827	.addrsig
828	.section	.debug_line,"",@progbits
829.Lline_table_start0:
830