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