xref: /llvm-project/bolt/test/X86/Inputs/dwarf5-df-types-dup-main.s (revision b47b3bee7ba500e81646aa9720f5ca1eddd66875)
1# clang++ -gsplit-dwarf -g2 -gdwarf-5 -gpubnames -fdebug-types-section -fdebug-compilation-dir='.'
2# header.h
3# struct Foo2a {
4#   char *c1;
5#   char *c2;
6#   char *c3;
7# };
8
9# main.cpp
10# #include "header.h"
11# struct Foo2 {
12#  char *c1;
13# };
14# int main(int argc, char *argv[]) {
15#  Foo2 f2;
16#  Foo2a f3;
17#  return 0;
18# }
19	.text
20	.file	"main.cpp"
21	.globl	main                            # -- Begin function main
22	.p2align	4, 0x90
23	.type	main,@function
24main:                                   # @main
25.Lfunc_begin0:
26	.file	0 "." "main.cpp" md5 0x9c5cea5bb78d3fc265cd175110bfe903
27	.loc	0 5 0                           # main.cpp:5:0
28	.cfi_startproc
29# %bb.0:                                # %entry
30	pushq	%rbp
31	.cfi_def_cfa_offset 16
32	.cfi_offset %rbp, -16
33	movq	%rsp, %rbp
34	.cfi_def_cfa_register %rbp
35	movl	$0, -4(%rbp)
36	movl	%edi, -8(%rbp)
37	movq	%rsi, -16(%rbp)
38.Ltmp0:
39	.loc	0 8 2 prologue_end              # main.cpp:8:2
40	xorl	%eax, %eax
41	.loc	0 8 2 epilogue_begin is_stmt 0  # main.cpp:8:2
42	popq	%rbp
43	.cfi_def_cfa %rsp, 8
44	retq
45.Ltmp1:
46.Lfunc_end0:
47	.size	main, .Lfunc_end0-main
48	.cfi_endproc
49                                        # -- End function
50	.section	.debug_info.dwo,"e",@progbits
51	.long	.Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit
52.Ldebug_info_dwo_start0:
53	.short	5                               # DWARF version number
54	.byte	6                               # DWARF Unit Type
55	.byte	8                               # Address Size (in bytes)
56	.long	0                               # Offset Into Abbrev. Section
57	.quad	5322170643381124694             # Type Signature
58	.long	31                              # Type DIE Offset
59	.byte	1                               # Abbrev [1] 0x18:0x21 DW_TAG_type_unit
60	.short	33                              # DW_AT_language
61	.long	0                               # DW_AT_stmt_list
62	.byte	2                               # Abbrev [2] 0x1f:0x10 DW_TAG_structure_type
63	.byte	5                               # DW_AT_calling_convention
64	.byte	7                               # DW_AT_name
65	.byte	8                               # DW_AT_byte_size
66	.byte	0                               # DW_AT_decl_file
67	.byte	2                               # DW_AT_decl_line
68	.byte	3                               # Abbrev [3] 0x25:0x9 DW_TAG_member
69	.byte	6                               # DW_AT_name
70	.long	47                              # DW_AT_type
71	.byte	0                               # DW_AT_decl_file
72	.byte	3                               # DW_AT_decl_line
73	.byte	0                               # DW_AT_data_member_location
74	.byte	0                               # End Of Children Mark
75	.byte	4                               # Abbrev [4] 0x2f:0x5 DW_TAG_pointer_type
76	.long	52                              # DW_AT_type
77	.byte	5                               # Abbrev [5] 0x34:0x4 DW_TAG_base_type
78	.byte	4                               # DW_AT_name
79	.byte	6                               # DW_AT_encoding
80	.byte	1                               # DW_AT_byte_size
81	.byte	0                               # End Of Children Mark
82.Ldebug_info_dwo_end0:
83	.long	.Ldebug_info_dwo_end1-.Ldebug_info_dwo_start1 # Length of Unit
84.Ldebug_info_dwo_start1:
85	.short	5                               # DWARF version number
86	.byte	6                               # DWARF Unit Type
87	.byte	8                               # Address Size (in bytes)
88	.long	0                               # Offset Into Abbrev. Section
89	.quad	1175092228111723119             # Type Signature
90	.long	31                              # Type DIE Offset
91	.byte	1                               # Abbrev [1] 0x18:0x33 DW_TAG_type_unit
92	.short	33                              # DW_AT_language
93	.long	0                               # DW_AT_stmt_list
94	.byte	2                               # Abbrev [2] 0x1f:0x22 DW_TAG_structure_type
95	.byte	5                               # DW_AT_calling_convention
96	.byte	11                              # DW_AT_name
97	.byte	24                              # DW_AT_byte_size
98	.byte	1                               # DW_AT_decl_file
99	.byte	1                               # DW_AT_decl_line
100	.byte	3                               # Abbrev [3] 0x25:0x9 DW_TAG_member
101	.byte	6                               # DW_AT_name
102	.long	65                              # DW_AT_type
103	.byte	1                               # DW_AT_decl_file
104	.byte	2                               # DW_AT_decl_line
105	.byte	0                               # DW_AT_data_member_location
106	.byte	3                               # Abbrev [3] 0x2e:0x9 DW_TAG_member
107	.byte	9                               # DW_AT_name
108	.long	65                              # DW_AT_type
109	.byte	1                               # DW_AT_decl_file
110	.byte	3                               # DW_AT_decl_line
111	.byte	8                               # DW_AT_data_member_location
112	.byte	3                               # Abbrev [3] 0x37:0x9 DW_TAG_member
113	.byte	10                              # DW_AT_name
114	.long	65                              # DW_AT_type
115	.byte	1                               # DW_AT_decl_file
116	.byte	4                               # DW_AT_decl_line
117	.byte	16                              # DW_AT_data_member_location
118	.byte	0                               # End Of Children Mark
119	.byte	4                               # Abbrev [4] 0x41:0x5 DW_TAG_pointer_type
120	.long	70                              # DW_AT_type
121	.byte	5                               # Abbrev [5] 0x46:0x4 DW_TAG_base_type
122	.byte	4                               # DW_AT_name
123	.byte	6                               # DW_AT_encoding
124	.byte	1                               # DW_AT_byte_size
125	.byte	0                               # End Of Children Mark
126.Ldebug_info_dwo_end1:
127	.section	.debug_abbrev,"",@progbits
128	.byte	1                               # Abbreviation Code
129	.byte	74                              # DW_TAG_skeleton_unit
130	.byte	0                               # DW_CHILDREN_no
131	.byte	16                              # DW_AT_stmt_list
132	.byte	23                              # DW_FORM_sec_offset
133	.byte	114                             # DW_AT_str_offsets_base
134	.byte	23                              # DW_FORM_sec_offset
135	.byte	27                              # DW_AT_comp_dir
136	.byte	37                              # DW_FORM_strx1
137	.byte	118                             # DW_AT_dwo_name
138	.byte	37                              # DW_FORM_strx1
139	.byte	17                              # DW_AT_low_pc
140	.byte	27                              # DW_FORM_addrx
141	.byte	18                              # DW_AT_high_pc
142	.byte	6                               # DW_FORM_data4
143	.byte	115                             # DW_AT_addr_base
144	.byte	23                              # DW_FORM_sec_offset
145	.byte	0                               # EOM(1)
146	.byte	0                               # EOM(2)
147	.byte	0                               # EOM(3)
148	.section	.debug_info,"",@progbits
149.Lcu_begin0:
150	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
151.Ldebug_info_start0:
152	.short	5                               # DWARF version number
153	.byte	4                               # DWARF Unit Type
154	.byte	8                               # Address Size (in bytes)
155	.long	.debug_abbrev                   # Offset Into Abbrev. Section
156	.quad	5962099678818150071
157	.byte	1                               # Abbrev [1] 0x14:0x14 DW_TAG_skeleton_unit
158	.long	.Lline_table_start0             # DW_AT_stmt_list
159	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base
160	.byte	0                               # DW_AT_comp_dir
161	.byte	1                               # DW_AT_dwo_name
162	.byte	0                               # DW_AT_low_pc
163	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc
164	.long	.Laddr_table_base0              # DW_AT_addr_base
165.Ldebug_info_end0:
166	.section	.debug_str_offsets,"",@progbits
167	.long	12                              # Length of String Offsets Set
168	.short	5
169	.short	0
170.Lstr_offsets_base0:
171	.section	.debug_str,"MS",@progbits,1
172.Lskel_string0:
173	.asciz	"."                             # string offset=0
174.Lskel_string1:
175	.asciz	"main.dwo"                      # string offset=2
176	.section	.debug_str_offsets,"",@progbits
177	.long	.Lskel_string0
178	.long	.Lskel_string1
179	.section	.debug_str_offsets.dwo,"e",@progbits
180	.long	64                              # Length of String Offsets Set
181	.short	5
182	.short	0
183	.section	.debug_str.dwo,"eMS",@progbits,1
184.Linfo_string0:
185	.asciz	"main"                          # string offset=0
186.Linfo_string1:
187	.asciz	"int"                           # string offset=5
188.Linfo_string2:
189	.asciz	"argc"                          # string offset=9
190.Linfo_string3:
191	.asciz	"argv"                          # string offset=14
192.Linfo_string4:
193	.asciz	"char"                          # string offset=19
194.Linfo_string5:
195	.asciz	"f2"                            # string offset=24
196.Linfo_string6:
197	.asciz	"c1"                            # string offset=27
198.Linfo_string7:
199	.asciz	"Foo2"                          # string offset=30
200.Linfo_string8:
201	.asciz	"f3"                            # string offset=35
202.Linfo_string9:
203	.asciz	"c2"                            # string offset=38
204.Linfo_string10:
205	.asciz	"c3"                            # string offset=41
206.Linfo_string11:
207	.asciz	"Foo2a"                         # string offset=44
208.Linfo_string12:
209	.asciz	"clang version 18.0.0"          # string offset=50
210.Linfo_string13:
211	.asciz	"main.cpp"                      # string offset=71
212.Linfo_string14:
213	.asciz	"main.dwo"                      # string offset=80
214	.section	.debug_str_offsets.dwo,"e",@progbits
215	.long	0
216	.long	5
217	.long	9
218	.long	14
219	.long	19
220	.long	24
221	.long	27
222	.long	30
223	.long	35
224	.long	38
225	.long	41
226	.long	44
227	.long	50
228	.long	71
229	.long	80
230	.section	.debug_info.dwo,"e",@progbits
231	.long	.Ldebug_info_dwo_end2-.Ldebug_info_dwo_start2 # Length of Unit
232.Ldebug_info_dwo_start2:
233	.short	5                               # DWARF version number
234	.byte	5                               # DWARF Unit Type
235	.byte	8                               # Address Size (in bytes)
236	.long	0                               # Offset Into Abbrev. Section
237	.quad	5962099678818150071
238	.byte	6                               # Abbrev [6] 0x14:0x67 DW_TAG_compile_unit
239	.byte	12                              # DW_AT_producer
240	.short	33                              # DW_AT_language
241	.byte	13                              # DW_AT_name
242	.byte	14                              # DW_AT_dwo_name
243	.byte	7                               # Abbrev [7] 0x1a:0x3c DW_TAG_subprogram
244	.byte	0                               # DW_AT_low_pc
245	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc
246	.byte	1                               # DW_AT_frame_base
247	.byte	86
248	.byte	0                               # DW_AT_name
249	.byte	0                               # DW_AT_decl_file
250	.byte	5                               # DW_AT_decl_line
251	.long	86                              # DW_AT_type
252                                        # DW_AT_external
253	.byte	8                               # Abbrev [8] 0x29:0xb DW_TAG_formal_parameter
254	.byte	2                               # DW_AT_location
255	.byte	145
256	.byte	120
257	.byte	2                               # DW_AT_name
258	.byte	0                               # DW_AT_decl_file
259	.byte	5                               # DW_AT_decl_line
260	.long	86                              # DW_AT_type
261	.byte	8                               # Abbrev [8] 0x34:0xb DW_TAG_formal_parameter
262	.byte	2                               # DW_AT_location
263	.byte	145
264	.byte	112
265	.byte	3                               # DW_AT_name
266	.byte	0                               # DW_AT_decl_file
267	.byte	5                               # DW_AT_decl_line
268	.long	90                              # DW_AT_type
269	.byte	9                               # Abbrev [9] 0x3f:0xb DW_TAG_variable
270	.byte	2                               # DW_AT_location
271	.byte	145
272	.byte	104
273	.byte	5                               # DW_AT_name
274	.byte	0                               # DW_AT_decl_file
275	.byte	6                               # DW_AT_decl_line
276	.long	104                             # DW_AT_type
277	.byte	9                               # Abbrev [9] 0x4a:0xb DW_TAG_variable
278	.byte	2                               # DW_AT_location
279	.byte	145
280	.byte	80
281	.byte	8                               # DW_AT_name
282	.byte	0                               # DW_AT_decl_file
283	.byte	7                               # DW_AT_decl_line
284	.long	113                             # DW_AT_type
285	.byte	0                               # End Of Children Mark
286	.byte	5                               # Abbrev [5] 0x56:0x4 DW_TAG_base_type
287	.byte	1                               # DW_AT_name
288	.byte	5                               # DW_AT_encoding
289	.byte	4                               # DW_AT_byte_size
290	.byte	4                               # Abbrev [4] 0x5a:0x5 DW_TAG_pointer_type
291	.long	95                              # DW_AT_type
292	.byte	4                               # Abbrev [4] 0x5f:0x5 DW_TAG_pointer_type
293	.long	100                             # DW_AT_type
294	.byte	5                               # Abbrev [5] 0x64:0x4 DW_TAG_base_type
295	.byte	4                               # DW_AT_name
296	.byte	6                               # DW_AT_encoding
297	.byte	1                               # DW_AT_byte_size
298	.byte	10                              # Abbrev [10] 0x68:0x9 DW_TAG_structure_type
299                                        # DW_AT_declaration
300	.quad	5322170643381124694             # DW_AT_signature
301	.byte	10                              # Abbrev [10] 0x71:0x9 DW_TAG_structure_type
302                                        # DW_AT_declaration
303	.quad	1175092228111723119             # DW_AT_signature
304	.byte	0                               # End Of Children Mark
305.Ldebug_info_dwo_end2:
306	.section	.debug_abbrev.dwo,"e",@progbits
307	.byte	1                               # Abbreviation Code
308	.byte	65                              # DW_TAG_type_unit
309	.byte	1                               # DW_CHILDREN_yes
310	.byte	19                              # DW_AT_language
311	.byte	5                               # DW_FORM_data2
312	.byte	16                              # DW_AT_stmt_list
313	.byte	23                              # DW_FORM_sec_offset
314	.byte	0                               # EOM(1)
315	.byte	0                               # EOM(2)
316	.byte	2                               # Abbreviation Code
317	.byte	19                              # DW_TAG_structure_type
318	.byte	1                               # DW_CHILDREN_yes
319	.byte	54                              # DW_AT_calling_convention
320	.byte	11                              # DW_FORM_data1
321	.byte	3                               # DW_AT_name
322	.byte	37                              # DW_FORM_strx1
323	.byte	11                              # DW_AT_byte_size
324	.byte	11                              # DW_FORM_data1
325	.byte	58                              # DW_AT_decl_file
326	.byte	11                              # DW_FORM_data1
327	.byte	59                              # DW_AT_decl_line
328	.byte	11                              # DW_FORM_data1
329	.byte	0                               # EOM(1)
330	.byte	0                               # EOM(2)
331	.byte	3                               # Abbreviation Code
332	.byte	13                              # DW_TAG_member
333	.byte	0                               # DW_CHILDREN_no
334	.byte	3                               # DW_AT_name
335	.byte	37                              # DW_FORM_strx1
336	.byte	73                              # DW_AT_type
337	.byte	19                              # DW_FORM_ref4
338	.byte	58                              # DW_AT_decl_file
339	.byte	11                              # DW_FORM_data1
340	.byte	59                              # DW_AT_decl_line
341	.byte	11                              # DW_FORM_data1
342	.byte	56                              # DW_AT_data_member_location
343	.byte	11                              # DW_FORM_data1
344	.byte	0                               # EOM(1)
345	.byte	0                               # EOM(2)
346	.byte	4                               # Abbreviation Code
347	.byte	15                              # DW_TAG_pointer_type
348	.byte	0                               # DW_CHILDREN_no
349	.byte	73                              # DW_AT_type
350	.byte	19                              # DW_FORM_ref4
351	.byte	0                               # EOM(1)
352	.byte	0                               # EOM(2)
353	.byte	5                               # Abbreviation Code
354	.byte	36                              # DW_TAG_base_type
355	.byte	0                               # DW_CHILDREN_no
356	.byte	3                               # DW_AT_name
357	.byte	37                              # DW_FORM_strx1
358	.byte	62                              # DW_AT_encoding
359	.byte	11                              # DW_FORM_data1
360	.byte	11                              # DW_AT_byte_size
361	.byte	11                              # DW_FORM_data1
362	.byte	0                               # EOM(1)
363	.byte	0                               # EOM(2)
364	.byte	6                               # Abbreviation Code
365	.byte	17                              # DW_TAG_compile_unit
366	.byte	1                               # DW_CHILDREN_yes
367	.byte	37                              # DW_AT_producer
368	.byte	37                              # DW_FORM_strx1
369	.byte	19                              # DW_AT_language
370	.byte	5                               # DW_FORM_data2
371	.byte	3                               # DW_AT_name
372	.byte	37                              # DW_FORM_strx1
373	.byte	118                             # DW_AT_dwo_name
374	.byte	37                              # DW_FORM_strx1
375	.byte	0                               # EOM(1)
376	.byte	0                               # EOM(2)
377	.byte	7                               # Abbreviation Code
378	.byte	46                              # DW_TAG_subprogram
379	.byte	1                               # DW_CHILDREN_yes
380	.byte	17                              # DW_AT_low_pc
381	.byte	27                              # DW_FORM_addrx
382	.byte	18                              # DW_AT_high_pc
383	.byte	6                               # DW_FORM_data4
384	.byte	64                              # DW_AT_frame_base
385	.byte	24                              # DW_FORM_exprloc
386	.byte	3                               # DW_AT_name
387	.byte	37                              # DW_FORM_strx1
388	.byte	58                              # DW_AT_decl_file
389	.byte	11                              # DW_FORM_data1
390	.byte	59                              # DW_AT_decl_line
391	.byte	11                              # DW_FORM_data1
392	.byte	73                              # DW_AT_type
393	.byte	19                              # DW_FORM_ref4
394	.byte	63                              # DW_AT_external
395	.byte	25                              # DW_FORM_flag_present
396	.byte	0                               # EOM(1)
397	.byte	0                               # EOM(2)
398	.byte	8                               # Abbreviation Code
399	.byte	5                               # DW_TAG_formal_parameter
400	.byte	0                               # DW_CHILDREN_no
401	.byte	2                               # DW_AT_location
402	.byte	24                              # DW_FORM_exprloc
403	.byte	3                               # DW_AT_name
404	.byte	37                              # DW_FORM_strx1
405	.byte	58                              # DW_AT_decl_file
406	.byte	11                              # DW_FORM_data1
407	.byte	59                              # DW_AT_decl_line
408	.byte	11                              # DW_FORM_data1
409	.byte	73                              # DW_AT_type
410	.byte	19                              # DW_FORM_ref4
411	.byte	0                               # EOM(1)
412	.byte	0                               # EOM(2)
413	.byte	9                               # Abbreviation Code
414	.byte	52                              # DW_TAG_variable
415	.byte	0                               # DW_CHILDREN_no
416	.byte	2                               # DW_AT_location
417	.byte	24                              # DW_FORM_exprloc
418	.byte	3                               # DW_AT_name
419	.byte	37                              # DW_FORM_strx1
420	.byte	58                              # DW_AT_decl_file
421	.byte	11                              # DW_FORM_data1
422	.byte	59                              # DW_AT_decl_line
423	.byte	11                              # DW_FORM_data1
424	.byte	73                              # DW_AT_type
425	.byte	19                              # DW_FORM_ref4
426	.byte	0                               # EOM(1)
427	.byte	0                               # EOM(2)
428	.byte	10                              # Abbreviation Code
429	.byte	19                              # DW_TAG_structure_type
430	.byte	0                               # DW_CHILDREN_no
431	.byte	60                              # DW_AT_declaration
432	.byte	25                              # DW_FORM_flag_present
433	.byte	105                             # DW_AT_signature
434	.byte	32                              # DW_FORM_ref_sig8
435	.byte	0                               # EOM(1)
436	.byte	0                               # EOM(2)
437	.byte	0                               # EOM(3)
438	.section	.debug_line.dwo,"e",@progbits
439.Ltmp2:
440	.long	.Ldebug_line_end0-.Ldebug_line_start0 # unit length
441.Ldebug_line_start0:
442	.short	5
443	.byte	8
444	.byte	0
445	.long	.Lprologue_end0-.Lprologue_start0
446.Lprologue_start0:
447	.byte	1
448	.byte	1
449	.byte	1
450	.byte	-5
451	.byte	14
452	.byte	1
453	.byte	1
454	.byte	1
455	.byte	8
456	.byte	2
457	.byte	46
458	.byte	0
459	.byte	46
460	.byte	0
461	.byte	3
462	.byte	1
463	.byte	8
464	.byte	2
465	.byte	15
466	.byte	5
467	.byte	30
468	.byte	2
469	.ascii	"main.cpp"
470	.byte	0
471	.byte	0
472	.byte	0x9c, 0x5c, 0xea, 0x5b
473	.byte	0xb7, 0x8d, 0x3f, 0xc2
474	.byte	0x65, 0xcd, 0x17, 0x51
475	.byte	0x10, 0xbf, 0xe9, 0x03
476	.ascii	"header.h"
477	.byte	0
478	.byte	1
479	.byte	0xfe, 0xa7, 0xbb, 0x1f
480	.byte	0x22, 0xc4, 0x7f, 0x12
481	.byte	0x9e, 0x15, 0x69, 0x5f
482	.byte	0x71, 0x37, 0xa1, 0xe7
483.Lprologue_end0:
484.Ldebug_line_end0:
485	.section	.debug_addr,"",@progbits
486	.long	.Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution
487.Ldebug_addr_start0:
488	.short	5                               # DWARF version number
489	.byte	8                               # Address size
490	.byte	0                               # Segment selector size
491.Laddr_table_base0:
492	.quad	.Lfunc_begin0
493.Ldebug_addr_end0:
494	.ident	"clang version 18.0.0"
495	.section	".note.GNU-stack","",@progbits
496	.addrsig
497	.section	.debug_line,"",@progbits
498.Lline_table_start0:
499