xref: /llvm-project/bolt/test/X86/Inputs/dwarf5-loclist-offset-form-helper.s (revision 1a1324a303f856bb6cfd0a2bca00736c2b5bc187)
1# int fooVar = 0;
2# void useFoo(int * x) {
3# 	*x += 4;
4# }
5# int  foo(int argc) {
6#    int x = argc;
7#    useFoo(&x);
8#    return x;
9# }
10
11	.text
12	.file	"helper.cpp"
13	.file	0 "." "helper.cpp" md5 0xf1508be63cfcbaf913e2dfef3cd5bccc
14	.globl	_Z6useFooPi                     # -- Begin function _Z6useFooPi
15	.p2align	4, 0x90
16	.type	_Z6useFooPi,@function
17_Z6useFooPi:                            # @_Z6useFooPi
18.Lfunc_begin0:
19	.loc	0 2 0                           # helper.cpp:2:0
20	.cfi_startproc
21# %bb.0:                                # %entry
22	#DEBUG_VALUE: useFoo:x <- $rdi
23	.loc	0 3 5 prologue_end              # helper.cpp:3:5
24	addl	$4, (%rdi)
25	.loc	0 4 2                           # helper.cpp:4:2
26	retq
27.Ltmp0:
28.Lfunc_end0:
29	.size	_Z6useFooPi, .Lfunc_end0-_Z6useFooPi
30	.cfi_endproc
31                                        # -- End function
32	.globl	_Z3fooi                         # -- Begin function _Z3fooi
33	.p2align	4, 0x90
34	.type	_Z3fooi,@function
35_Z3fooi:                                # @_Z3fooi
36.Lfunc_begin1:
37	.loc	0 6 0                           # helper.cpp:6:0
38	.cfi_startproc
39# %bb.0:                                # %entry
40	#DEBUG_VALUE: foo:argc <- $edi
41	#DEBUG_VALUE: foo:x <- $edi
42                                        # kill: def $edi killed $edi def $rdi
43	#DEBUG_VALUE: useFoo:x <- undef
44	.loc	0 3 5 prologue_end              # helper.cpp:3:5
45	leal	4(%rdi), %eax
46.Ltmp1:
47	#DEBUG_VALUE: foo:x <- $eax
48	.loc	0 9 5                           # helper.cpp:9:5
49	retq
50.Ltmp2:
51.Lfunc_end1:
52	.size	_Z3fooi, .Lfunc_end1-_Z3fooi
53	.cfi_endproc
54                                        # -- End function
55	.type	fooVar,@object                  # @fooVar
56	.bss
57	.globl	fooVar
58	.p2align	2
59fooVar:
60	.long	0                               # 0x0
61	.size	fooVar, 4
62
63	.section	.debug_loclists,"",@progbits
64	.long	.Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length
65.Ldebug_list_header_start0:
66	.short	5                               # Version
67	.byte	8                               # Address size
68	.byte	0                               # Segment selector size
69	.long	1                               # Offset entry count
70.Lloclists_table_base0:
71	.long	.Ldebug_loc0-.Lloclists_table_base0
72.Ldebug_loc0:
73	.byte	4                               # DW_LLE_offset_pair
74	.uleb128 .Lfunc_begin1-.Lfunc_begin0    #   starting offset
75	.uleb128 .Ltmp1-.Lfunc_begin0           #   ending offset
76	.byte	1                               # Loc expr size
77	.byte	85                              # super-register DW_OP_reg5
78	.byte	4                               # DW_LLE_offset_pair
79	.uleb128 .Ltmp1-.Lfunc_begin0           #   starting offset
80	.uleb128 .Lfunc_end1-.Lfunc_begin0      #   ending offset
81	.byte	1                               # Loc expr size
82	.byte	80                              # super-register DW_OP_reg0
83	.byte	0                               # DW_LLE_end_of_list
84.Ldebug_list_header_end0:
85	.section	.debug_abbrev,"",@progbits
86	.byte	1                               # Abbreviation Code
87	.byte	17                              # DW_TAG_compile_unit
88	.byte	1                               # DW_CHILDREN_yes
89	.byte	37                              # DW_AT_producer
90	.byte	37                              # DW_FORM_strx1
91	.byte	19                              # DW_AT_language
92	.byte	5                               # DW_FORM_data2
93	.byte	3                               # DW_AT_name
94	.byte	37                              # DW_FORM_strx1
95	.byte	114                             # DW_AT_str_offsets_base
96	.byte	23                              # DW_FORM_sec_offset
97	.byte	16                              # DW_AT_stmt_list
98	.byte	23                              # DW_FORM_sec_offset
99	.byte	27                              # DW_AT_comp_dir
100	.byte	37                              # DW_FORM_strx1
101	.byte	17                              # DW_AT_low_pc
102	.byte	27                              # DW_FORM_addrx
103	.byte	18                              # DW_AT_high_pc
104	.byte	6                               # DW_FORM_data4
105	.byte	115                             # DW_AT_addr_base
106	.byte	23                              # DW_FORM_sec_offset
107	.byte	0                               # EOM(1)
108	.byte	0                               # EOM(2)
109	.byte	2                               # Abbreviation Code
110	.byte	52                              # DW_TAG_variable
111	.byte	0                               # DW_CHILDREN_no
112	.byte	3                               # DW_AT_name
113	.byte	37                              # DW_FORM_strx1
114	.byte	73                              # DW_AT_type
115	.byte	19                              # DW_FORM_ref4
116	.byte	63                              # DW_AT_external
117	.byte	25                              # DW_FORM_flag_present
118	.byte	58                              # DW_AT_decl_file
119	.byte	11                              # DW_FORM_data1
120	.byte	59                              # DW_AT_decl_line
121	.byte	11                              # DW_FORM_data1
122	.byte	2                               # DW_AT_location
123	.byte	24                              # DW_FORM_exprloc
124	.byte	0                               # EOM(1)
125	.byte	0                               # EOM(2)
126	.byte	3                               # Abbreviation Code
127	.byte	36                              # DW_TAG_base_type
128	.byte	0                               # DW_CHILDREN_no
129	.byte	3                               # DW_AT_name
130	.byte	37                              # DW_FORM_strx1
131	.byte	62                              # DW_AT_encoding
132	.byte	11                              # DW_FORM_data1
133	.byte	11                              # DW_AT_byte_size
134	.byte	11                              # DW_FORM_data1
135	.byte	0                               # EOM(1)
136	.byte	0                               # EOM(2)
137	.byte	4                               # Abbreviation Code
138	.byte	46                              # DW_TAG_subprogram
139	.byte	1                               # DW_CHILDREN_yes
140	.byte	17                              # DW_AT_low_pc
141	.byte	27                              # DW_FORM_addrx
142	.byte	18                              # DW_AT_high_pc
143	.byte	6                               # DW_FORM_data4
144	.byte	64                              # DW_AT_frame_base
145	.byte	24                              # DW_FORM_exprloc
146	.byte	122                             # DW_AT_call_all_calls
147	.byte	25                              # DW_FORM_flag_present
148	.byte	49                              # DW_AT_abstract_origin
149	.byte	19                              # DW_FORM_ref4
150	.byte	0                               # EOM(1)
151	.byte	0                               # EOM(2)
152	.byte	5                               # Abbreviation Code
153	.byte	5                               # DW_TAG_formal_parameter
154	.byte	0                               # DW_CHILDREN_no
155	.byte	2                               # DW_AT_location
156	.byte	24                              # DW_FORM_exprloc
157	.byte	49                              # DW_AT_abstract_origin
158	.byte	19                              # DW_FORM_ref4
159	.byte	0                               # EOM(1)
160	.byte	0                               # EOM(2)
161	.byte	6                               # Abbreviation Code
162	.byte	46                              # DW_TAG_subprogram
163	.byte	1                               # DW_CHILDREN_yes
164	.byte	110                             # DW_AT_linkage_name
165	.byte	37                              # DW_FORM_strx1
166	.byte	3                               # DW_AT_name
167	.byte	37                              # DW_FORM_strx1
168	.byte	58                              # DW_AT_decl_file
169	.byte	11                              # DW_FORM_data1
170	.byte	59                              # DW_AT_decl_line
171	.byte	11                              # DW_FORM_data1
172	.byte	63                              # DW_AT_external
173	.byte	25                              # DW_FORM_flag_present
174	.byte	32                              # DW_AT_inline
175	.byte	33                              # DW_FORM_implicit_const
176	.byte	1
177	.byte	0                               # EOM(1)
178	.byte	0                               # EOM(2)
179	.byte	7                               # Abbreviation Code
180	.byte	5                               # DW_TAG_formal_parameter
181	.byte	0                               # DW_CHILDREN_no
182	.byte	3                               # DW_AT_name
183	.byte	37                              # DW_FORM_strx1
184	.byte	58                              # DW_AT_decl_file
185	.byte	11                              # DW_FORM_data1
186	.byte	59                              # DW_AT_decl_line
187	.byte	11                              # DW_FORM_data1
188	.byte	73                              # DW_AT_type
189	.byte	19                              # DW_FORM_ref4
190	.byte	0                               # EOM(1)
191	.byte	0                               # EOM(2)
192	.byte	8                               # Abbreviation Code
193	.byte	15                              # DW_TAG_pointer_type
194	.byte	0                               # DW_CHILDREN_no
195	.byte	73                              # DW_AT_type
196	.byte	19                              # DW_FORM_ref4
197	.byte	0                               # EOM(1)
198	.byte	0                               # EOM(2)
199	.byte	9                               # Abbreviation Code
200	.byte	46                              # DW_TAG_subprogram
201	.byte	1                               # DW_CHILDREN_yes
202	.byte	17                              # DW_AT_low_pc
203	.byte	27                              # DW_FORM_addrx
204	.byte	18                              # DW_AT_high_pc
205	.byte	6                               # DW_FORM_data4
206	.byte	64                              # DW_AT_frame_base
207	.byte	24                              # DW_FORM_exprloc
208	.byte	122                             # DW_AT_call_all_calls
209	.byte	25                              # DW_FORM_flag_present
210	.byte	110                             # DW_AT_linkage_name
211	.byte	37                              # DW_FORM_strx1
212	.byte	3                               # DW_AT_name
213	.byte	37                              # DW_FORM_strx1
214	.byte	58                              # DW_AT_decl_file
215	.byte	11                              # DW_FORM_data1
216	.byte	59                              # DW_AT_decl_line
217	.byte	11                              # DW_FORM_data1
218	.byte	73                              # DW_AT_type
219	.byte	19                              # DW_FORM_ref4
220	.byte	63                              # DW_AT_external
221	.byte	25                              # DW_FORM_flag_present
222	.byte	0                               # EOM(1)
223	.byte	0                               # EOM(2)
224	.byte	10                              # Abbreviation Code
225	.byte	5                               # DW_TAG_formal_parameter
226	.byte	0                               # DW_CHILDREN_no
227	.byte	2                               # DW_AT_location
228	.byte	24                              # DW_FORM_exprloc
229	.byte	3                               # DW_AT_name
230	.byte	37                              # DW_FORM_strx1
231	.byte	58                              # DW_AT_decl_file
232	.byte	11                              # DW_FORM_data1
233	.byte	59                              # DW_AT_decl_line
234	.byte	11                              # DW_FORM_data1
235	.byte	73                              # DW_AT_type
236	.byte	19                              # DW_FORM_ref4
237	.byte	0                               # EOM(1)
238	.byte	0                               # EOM(2)
239	.byte	11                              # Abbreviation Code
240	.byte	52                              # DW_TAG_variable
241	.byte	0                               # DW_CHILDREN_no
242	.byte	2                               # DW_AT_location
243	.byte	23                              # DW_FORM_sec_offset
244	.byte	3                               # DW_AT_name
245	.byte	37                              # DW_FORM_strx1
246	.byte	58                              # DW_AT_decl_file
247	.byte	11                              # DW_FORM_data1
248	.byte	59                              # DW_AT_decl_line
249	.byte	11                              # DW_FORM_data1
250	.byte	73                              # DW_AT_type
251	.byte	19                              # DW_FORM_ref4
252	.byte	0                               # EOM(1)
253	.byte	0                               # EOM(2)
254	.byte	12                              # Abbreviation Code
255	.byte	29                              # DW_TAG_inlined_subroutine
256	.byte	0                               # DW_CHILDREN_no
257	.byte	49                              # DW_AT_abstract_origin
258	.byte	19                              # DW_FORM_ref4
259	.byte	17                              # DW_AT_low_pc
260	.byte	27                              # DW_FORM_addrx
261	.byte	18                              # DW_AT_high_pc
262	.byte	6                               # DW_FORM_data4
263	.byte	88                              # DW_AT_call_file
264	.byte	11                              # DW_FORM_data1
265	.byte	89                              # DW_AT_call_line
266	.byte	11                              # DW_FORM_data1
267	.byte	87                              # DW_AT_call_column
268	.byte	11                              # DW_FORM_data1
269	.byte	0                               # EOM(1)
270	.byte	0                               # EOM(2)
271	.byte	0                               # EOM(3)
272	.section	.debug_info,"",@progbits
273.Lcu_begin0:
274	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
275.Ldebug_info_start0:
276	.short	5                               # DWARF version number
277	.byte	1                               # DWARF Unit Type
278	.byte	8                               # Address Size (in bytes)
279	.long	.debug_abbrev                   # Offset Into Abbrev. Section
280	.byte	1                               # Abbrev [1] 0xc:0x83 DW_TAG_compile_unit
281	.byte	0                               # DW_AT_producer
282	.short	33                              # DW_AT_language
283	.byte	1                               # DW_AT_name
284	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base
285	.long	.Lline_table_start0             # DW_AT_stmt_list
286	.byte	2                               # DW_AT_comp_dir
287	.byte	1                               # DW_AT_low_pc
288	.long	.Lfunc_end1-.Lfunc_begin0       # DW_AT_high_pc
289	.long	.Laddr_table_base0              # DW_AT_addr_base
290	.byte	2                               # Abbrev [2] 0x27:0xb DW_TAG_variable
291	.byte	3                               # DW_AT_name
292	.long	46                              # DW_AT_type
293                                        # DW_AT_external
294	.byte	0                               # DW_AT_decl_file
295	.byte	1                               # DW_AT_decl_line
296	.byte	2                               # DW_AT_location
297	.byte	161
298	.byte	0
299	.byte	3                               # Abbrev [3] 0x32:0x4 DW_TAG_base_type
300	.byte	4                               # DW_AT_name
301	.byte	5                               # DW_AT_encoding
302	.byte	4                               # DW_AT_byte_size
303	.byte	4                               # Abbrev [4] 0x36:0x14 DW_TAG_subprogram
304	.byte	1                               # DW_AT_low_pc
305	.long	.Lfunc_end0-.Lfunc_begin0       # DW_AT_high_pc
306	.byte	1                               # DW_AT_frame_base
307	.byte	87
308                                        # DW_AT_call_all_calls
309	.long	70                              # DW_AT_abstract_origin
310	.byte	5                               # Abbrev [5] 0x42:0x7 DW_TAG_formal_parameter
311	.byte	1                               # DW_AT_location
312	.byte	85
313	.long	75                              # DW_AT_abstract_origin
314	.byte	0                               # End Of Children Mark
315	.byte	6                               # Abbrev [6] 0x4a:0xe DW_TAG_subprogram
316	.byte	5                               # DW_AT_linkage_name
317	.byte	6                               # DW_AT_name
318	.byte	0                               # DW_AT_decl_file
319	.byte	2                               # DW_AT_decl_line
320                                        # DW_AT_external
321                                        # DW_AT_inline
322	.byte	7                               # Abbrev [7] 0x4f:0x8 DW_TAG_formal_parameter
323	.byte	7                               # DW_AT_name
324	.byte	0                               # DW_AT_decl_file
325	.byte	2                               # DW_AT_decl_line
326	.long	84                              # DW_AT_type
327	.byte	0                               # End Of Children Mark
328	.byte	8                               # Abbrev [8] 0x58:0x5 DW_TAG_pointer_type
329	.long	46                              # DW_AT_type
330	.byte	9                               # Abbrev [9] 0x5d:0x31 DW_TAG_subprogram
331	.byte	2                               # DW_AT_low_pc
332	.long	.Lfunc_end1-.Lfunc_begin1       # DW_AT_high_pc
333	.byte	1                               # DW_AT_frame_base
334	.byte	87
335                                        # DW_AT_call_all_calls
336	.byte	8                               # DW_AT_linkage_name
337	.byte	9                               # DW_AT_name
338	.byte	0                               # DW_AT_decl_file
339	.byte	6                               # DW_AT_decl_line
340	.long	46                              # DW_AT_type
341                                        # DW_AT_external
342	.byte	10                              # Abbrev [10] 0x6d:0xa DW_TAG_formal_parameter
343	.byte	1                               # DW_AT_location
344	.byte	85
345	.byte	10                              # DW_AT_name
346	.byte	0                               # DW_AT_decl_file
347	.byte	6                               # DW_AT_decl_line
348	.long	46                              # DW_AT_type
349	.byte	11                              # Abbrev [11] 0x77:0x9 DW_TAG_variable
350	.long	.Ldebug_loc0                    # DW_AT_location
351	.byte	7                               # DW_AT_name
352	.byte	0                               # DW_AT_decl_file
353	.byte	7                               # DW_AT_decl_line
354	.long	46                              # DW_AT_type
355	.byte	12                              # Abbrev [12] 0x80:0xd DW_TAG_inlined_subroutine
356	.long	70                              # DW_AT_abstract_origin
357	.byte	2                               # DW_AT_low_pc
358	.long	.Ltmp1-.Lfunc_begin1            # DW_AT_high_pc
359	.byte	0                               # DW_AT_call_file
360	.byte	8                               # DW_AT_call_line
361	.byte	5                               # DW_AT_call_column
362	.byte	0                               # End Of Children Mark
363	.byte	0                               # End Of Children Mark
364.Ldebug_info_end0:
365	.section	.debug_str_offsets,"",@progbits
366	.long	48                              # Length of String Offsets Set
367	.short	5
368	.short	0
369.Lstr_offsets_base0:
370	.section	.debug_str,"MS",@progbits,1
371.Linfo_string0:
372	.asciz	"clang version 15.0.0" # string offset=0
373.Linfo_string1:
374	.asciz	"helper.cpp"                    # string offset=134
375.Linfo_string2:
376	.asciz	"." # string offset=145
377.Linfo_string3:
378	.asciz	"fooVar"                        # string offset=183
379.Linfo_string4:
380	.asciz	"int"                           # string offset=190
381.Linfo_string5:
382	.asciz	"_Z6useFooPi"                   # string offset=194
383.Linfo_string6:
384	.asciz	"useFoo"                        # string offset=206
385.Linfo_string7:
386	.asciz	"x"                             # string offset=213
387.Linfo_string8:
388	.asciz	"_Z3fooi"                       # string offset=215
389.Linfo_string9:
390	.asciz	"foo"                           # string offset=223
391.Linfo_string10:
392	.asciz	"argc"                          # string offset=227
393	.section	.debug_str_offsets,"",@progbits
394	.long	.Linfo_string0
395	.long	.Linfo_string1
396	.long	.Linfo_string2
397	.long	.Linfo_string3
398	.long	.Linfo_string4
399	.long	.Linfo_string5
400	.long	.Linfo_string6
401	.long	.Linfo_string7
402	.long	.Linfo_string8
403	.long	.Linfo_string9
404	.long	.Linfo_string10
405	.section	.debug_addr,"",@progbits
406	.long	.Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution
407.Ldebug_addr_start0:
408	.short	5                               # DWARF version number
409	.byte	8                               # Address size
410	.byte	0                               # Segment selector size
411.Laddr_table_base0:
412	.quad	fooVar
413	.quad	.Lfunc_begin0
414	.quad	.Lfunc_begin1
415.Ldebug_addr_end0:
416	.ident	"clang version 15.0.0"
417	.section	".note.GNU-stack","",@progbits
418	.addrsig
419	.section	.debug_line,"",@progbits
420.Lline_table_start0:
421