xref: /llvm-project/bolt/test/X86/Inputs/dwarf5-subprogram-multiple-ranges-other.s (revision 278b3964655ab06576a27be57ee2378732bc7420)
1## clang++ -fbasic-block-sections=all -ffunction-sections -g2 -gdwarf-5
2## int doStuffOther(int val) {
3##   if (val)
4##     ++val;
5##   return val;
6## }
7##
8## int mainOther(int argc, const char** argv) {
9##     return  doStuffOther(argc);
10## }
11		.text
12	.file	"mainOther.cpp"
13	.section	.text._Z12doStuffOtheri,"ax",@progbits
14	.globl	_Z12doStuffOtheri               # -- Begin function _Z12doStuffOtheri
15	.p2align	4, 0x90
16	.type	_Z12doStuffOtheri,@function
17_Z12doStuffOtheri:                      # @_Z12doStuffOtheri
18.Lfunc_begin0:
19	.file	0 "." "mainOther.cpp" md5 0xe43cc8133fbf67674318eacbcc46a59e
20	.loc	0 1 0                           # mainOther.cpp:1:0
21	.cfi_startproc
22# %bb.0:                                # %entry
23	pushq	%rbp
24	.cfi_def_cfa_offset 16
25	.cfi_offset %rbp, -16
26	movq	%rsp, %rbp
27	.cfi_def_cfa_register %rbp
28	movl	%edi, -4(%rbp)
29.Ltmp0:
30	.loc	0 2 8 prologue_end              # mainOther.cpp:2:8
31	cmpl	$0, -4(%rbp)
32.Ltmp1:
33	.loc	0 2 8 is_stmt 0                 # mainOther.cpp:2:8
34	je	_Z12doStuffOtheri.__part.2
35	jmp	_Z12doStuffOtheri.__part.1
36.LBB_END0_0:
37	.cfi_endproc
38	.section	.text._Z12doStuffOtheri,"ax",@progbits,unique,1
39_Z12doStuffOtheri.__part.1:             # %if.then
40	.cfi_startproc
41	.cfi_def_cfa %rbp, 16
42	.cfi_offset %rbp, -16
43	.loc	0 3 6 is_stmt 1                 # mainOther.cpp:3:6
44	movl	-4(%rbp), %eax
45	addl	$1, %eax
46	movl	%eax, -4(%rbp)
47	jmp	_Z12doStuffOtheri.__part.2
48.LBB_END0_1:
49	.size	_Z12doStuffOtheri.__part.1, .LBB_END0_1-_Z12doStuffOtheri.__part.1
50	.cfi_endproc
51	.section	.text._Z12doStuffOtheri,"ax",@progbits,unique,2
52_Z12doStuffOtheri.__part.2:             # %if.end
53	.cfi_startproc
54	.cfi_def_cfa %rbp, 16
55	.cfi_offset %rbp, -16
56	.loc	0 4 11                          # mainOther.cpp:4:11
57	movl	-4(%rbp), %eax
58	.loc	0 4 4 epilogue_begin is_stmt 0  # mainOther.cpp:4:4
59	popq	%rbp
60	.cfi_def_cfa %rsp, 8
61	retq
62.LBB_END0_2:
63	.size	_Z12doStuffOtheri.__part.2, .LBB_END0_2-_Z12doStuffOtheri.__part.2
64	.cfi_endproc
65	.section	.text._Z12doStuffOtheri,"ax",@progbits
66.Lfunc_end0:
67	.size	_Z12doStuffOtheri, .Lfunc_end0-_Z12doStuffOtheri
68                                        # -- End function
69	.section	.text._Z9mainOtheriPPKc,"ax",@progbits
70	.globl	_Z9mainOtheriPPKc               # -- Begin function _Z9mainOtheriPPKc
71	.p2align	4, 0x90
72	.type	_Z9mainOtheriPPKc,@function
73_Z9mainOtheriPPKc:                      # @_Z9mainOtheriPPKc
74.Lfunc_begin1:
75	.loc	0 7 0 is_stmt 1                 # mainOther.cpp:7:0
76	.cfi_startproc
77# %bb.0:                                # %entry
78	pushq	%rbp
79	.cfi_def_cfa_offset 16
80	.cfi_offset %rbp, -16
81	movq	%rsp, %rbp
82	.cfi_def_cfa_register %rbp
83	subq	$16, %rsp
84	movl	%edi, -4(%rbp)
85	movq	%rsi, -16(%rbp)
86.Ltmp2:
87	.loc	0 8 27 prologue_end             # mainOther.cpp:8:27
88	movl	-4(%rbp), %edi
89	.loc	0 8 14 is_stmt 0                # mainOther.cpp:8:14
90	callq	_Z12doStuffOtheri
91	.loc	0 8 6 epilogue_begin            # mainOther.cpp:8:6
92	addq	$16, %rsp
93	popq	%rbp
94	.cfi_def_cfa %rsp, 8
95	retq
96.LBB_END1_0:
97	.cfi_endproc
98.Lfunc_end1:
99	.size	_Z9mainOtheriPPKc, .Lfunc_end1-_Z9mainOtheriPPKc
100                                        # -- End function
101	.section	.debug_abbrev,"",@progbits
102	.byte	1                               # Abbreviation Code
103	.byte	17                              # DW_TAG_compile_unit
104	.byte	1                               # DW_CHILDREN_yes
105	.byte	37                              # DW_AT_producer
106	.byte	37                              # DW_FORM_strx1
107	.byte	19                              # DW_AT_language
108	.byte	5                               # DW_FORM_data2
109	.byte	3                               # DW_AT_name
110	.byte	37                              # DW_FORM_strx1
111	.byte	114                             # DW_AT_str_offsets_base
112	.byte	23                              # DW_FORM_sec_offset
113	.byte	16                              # DW_AT_stmt_list
114	.byte	23                              # DW_FORM_sec_offset
115	.byte	27                              # DW_AT_comp_dir
116	.byte	37                              # DW_FORM_strx1
117	.byte	17                              # DW_AT_low_pc
118	.byte	1                               # DW_FORM_addr
119	.byte	85                              # DW_AT_ranges
120	.byte	35                              # DW_FORM_rnglistx
121	.byte	115                             # DW_AT_addr_base
122	.byte	23                              # DW_FORM_sec_offset
123	.byte	116                             # DW_AT_rnglists_base
124	.byte	23                              # DW_FORM_sec_offset
125	.byte	0                               # EOM(1)
126	.byte	0                               # EOM(2)
127	.byte	2                               # Abbreviation Code
128	.byte	46                              # DW_TAG_subprogram
129	.byte	1                               # DW_CHILDREN_yes
130	.byte	85                              # DW_AT_ranges
131	.byte	35                              # DW_FORM_rnglistx
132	.byte	64                              # DW_AT_frame_base
133	.byte	24                              # DW_FORM_exprloc
134	.byte	110                             # DW_AT_linkage_name
135	.byte	37                              # DW_FORM_strx1
136	.byte	3                               # DW_AT_name
137	.byte	37                              # DW_FORM_strx1
138	.byte	58                              # DW_AT_decl_file
139	.byte	11                              # DW_FORM_data1
140	.byte	59                              # DW_AT_decl_line
141	.byte	11                              # DW_FORM_data1
142	.byte	73                              # DW_AT_type
143	.byte	19                              # DW_FORM_ref4
144	.byte	63                              # DW_AT_external
145	.byte	25                              # DW_FORM_flag_present
146	.byte	0                               # EOM(1)
147	.byte	0                               # EOM(2)
148	.byte	3                               # Abbreviation Code
149	.byte	5                               # DW_TAG_formal_parameter
150	.byte	0                               # DW_CHILDREN_no
151	.byte	2                               # DW_AT_location
152	.byte	24                              # DW_FORM_exprloc
153	.byte	3                               # DW_AT_name
154	.byte	37                              # DW_FORM_strx1
155	.byte	58                              # DW_AT_decl_file
156	.byte	11                              # DW_FORM_data1
157	.byte	59                              # DW_AT_decl_line
158	.byte	11                              # DW_FORM_data1
159	.byte	73                              # DW_AT_type
160	.byte	19                              # DW_FORM_ref4
161	.byte	0                               # EOM(1)
162	.byte	0                               # EOM(2)
163	.byte	4                               # Abbreviation Code
164	.byte	46                              # DW_TAG_subprogram
165	.byte	1                               # DW_CHILDREN_yes
166	.byte	17                              # DW_AT_low_pc
167	.byte	27                              # DW_FORM_addrx
168	.byte	18                              # DW_AT_high_pc
169	.byte	6                               # DW_FORM_data4
170	.byte	64                              # DW_AT_frame_base
171	.byte	24                              # DW_FORM_exprloc
172	.byte	110                             # DW_AT_linkage_name
173	.byte	37                              # DW_FORM_strx1
174	.byte	3                               # DW_AT_name
175	.byte	37                              # DW_FORM_strx1
176	.byte	58                              # DW_AT_decl_file
177	.byte	11                              # DW_FORM_data1
178	.byte	59                              # DW_AT_decl_line
179	.byte	11                              # DW_FORM_data1
180	.byte	73                              # DW_AT_type
181	.byte	19                              # DW_FORM_ref4
182	.byte	63                              # DW_AT_external
183	.byte	25                              # DW_FORM_flag_present
184	.byte	0                               # EOM(1)
185	.byte	0                               # EOM(2)
186	.byte	5                               # Abbreviation Code
187	.byte	36                              # DW_TAG_base_type
188	.byte	0                               # DW_CHILDREN_no
189	.byte	3                               # DW_AT_name
190	.byte	37                              # DW_FORM_strx1
191	.byte	62                              # DW_AT_encoding
192	.byte	11                              # DW_FORM_data1
193	.byte	11                              # DW_AT_byte_size
194	.byte	11                              # DW_FORM_data1
195	.byte	0                               # EOM(1)
196	.byte	0                               # EOM(2)
197	.byte	6                               # Abbreviation Code
198	.byte	15                              # DW_TAG_pointer_type
199	.byte	0                               # DW_CHILDREN_no
200	.byte	73                              # DW_AT_type
201	.byte	19                              # DW_FORM_ref4
202	.byte	0                               # EOM(1)
203	.byte	0                               # EOM(2)
204	.byte	7                               # Abbreviation Code
205	.byte	38                              # DW_TAG_const_type
206	.byte	0                               # DW_CHILDREN_no
207	.byte	73                              # DW_AT_type
208	.byte	19                              # DW_FORM_ref4
209	.byte	0                               # EOM(1)
210	.byte	0                               # EOM(2)
211	.byte	0                               # EOM(3)
212	.section	.debug_info,"",@progbits
213.Lcu_begin0:
214	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
215.Ldebug_info_start0:
216	.short	5                               # DWARF version number
217	.byte	1                               # DWARF Unit Type
218	.byte	8                               # Address Size (in bytes)
219	.long	.debug_abbrev                   # Offset Into Abbrev. Section
220	.byte	1                               # Abbrev [1] 0xc:0x76 DW_TAG_compile_unit
221	.byte	0                               # DW_AT_producer
222	.short	33                              # DW_AT_language
223	.byte	1                               # DW_AT_name
224	.long	.Lstr_offsets_base0             # DW_AT_str_offsets_base
225	.long	.Lline_table_start0             # DW_AT_stmt_list
226	.byte	2                               # DW_AT_comp_dir
227	.quad	0                               # DW_AT_low_pc
228	.byte	1                               # DW_AT_ranges
229	.long	.Laddr_table_base0              # DW_AT_addr_base
230	.long	.Lrnglists_table_base0          # DW_AT_rnglists_base
231	.byte	2                               # Abbrev [2] 0x2b:0x18 DW_TAG_subprogram
232	.byte	0                               # DW_AT_ranges
233	.byte	1                               # DW_AT_frame_base
234	.byte	86
235	.byte	3                               # DW_AT_linkage_name
236	.byte	4                               # DW_AT_name
237	.byte	0                               # DW_AT_decl_file
238	.byte	1                               # DW_AT_decl_line
239	.long	106                             # DW_AT_type
240                                        # DW_AT_external
241	.byte	3                               # Abbrev [3] 0x37:0xb DW_TAG_formal_parameter
242	.byte	2                               # DW_AT_location
243	.byte	145
244	.byte	124
245	.byte	8                               # DW_AT_name
246	.byte	0                               # DW_AT_decl_file
247	.byte	1                               # DW_AT_decl_line
248	.long	106                             # DW_AT_type
249	.byte	0                               # End Of Children Mark
250	.byte	4                               # Abbrev [4] 0x43:0x27 DW_TAG_subprogram
251	.byte	3                               # DW_AT_low_pc
252	.long	.Lfunc_end1-.Lfunc_begin1       # DW_AT_high_pc
253	.byte	1                               # DW_AT_frame_base
254	.byte	86
255	.byte	6                               # DW_AT_linkage_name
256	.byte	7                               # DW_AT_name
257	.byte	0                               # DW_AT_decl_file
258	.byte	7                               # DW_AT_decl_line
259	.long	106                             # DW_AT_type
260                                        # DW_AT_external
261	.byte	3                               # Abbrev [3] 0x53:0xb DW_TAG_formal_parameter
262	.byte	2                               # DW_AT_location
263	.byte	145
264	.byte	124
265	.byte	9                               # DW_AT_name
266	.byte	0                               # DW_AT_decl_file
267	.byte	7                               # DW_AT_decl_line
268	.long	106                             # DW_AT_type
269	.byte	3                               # Abbrev [3] 0x5e:0xb DW_TAG_formal_parameter
270	.byte	2                               # DW_AT_location
271	.byte	145
272	.byte	112
273	.byte	10                              # DW_AT_name
274	.byte	0                               # DW_AT_decl_file
275	.byte	7                               # DW_AT_decl_line
276	.long	110                             # DW_AT_type
277	.byte	0                               # End Of Children Mark
278	.byte	5                               # Abbrev [5] 0x6a:0x4 DW_TAG_base_type
279	.byte	5                               # DW_AT_name
280	.byte	5                               # DW_AT_encoding
281	.byte	4                               # DW_AT_byte_size
282	.byte	6                               # Abbrev [6] 0x6e:0x5 DW_TAG_pointer_type
283	.long	115                             # DW_AT_type
284	.byte	6                               # Abbrev [6] 0x73:0x5 DW_TAG_pointer_type
285	.long	120                             # DW_AT_type
286	.byte	7                               # Abbrev [7] 0x78:0x5 DW_TAG_const_type
287	.long	125                             # DW_AT_type
288	.byte	5                               # Abbrev [5] 0x7d:0x4 DW_TAG_base_type
289	.byte	11                              # DW_AT_name
290	.byte	6                               # DW_AT_encoding
291	.byte	1                               # DW_AT_byte_size
292	.byte	0                               # End Of Children Mark
293.Ldebug_info_end0:
294	.section	.debug_rnglists,"",@progbits
295	.long	.Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length
296.Ldebug_list_header_start0:
297	.short	5                               # Version
298	.byte	8                               # Address size
299	.byte	0                               # Segment selector size
300	.long	2                               # Offset entry count
301.Lrnglists_table_base0:
302	.long	.Ldebug_ranges0-.Lrnglists_table_base0
303	.long	.Ldebug_ranges1-.Lrnglists_table_base0
304.Ldebug_ranges0:
305	.byte	3                               # DW_RLE_startx_length
306	.byte	0                               #   start index
307	.uleb128 .LBB_END0_1-_Z12doStuffOtheri.__part.1 #   length
308	.byte	3                               # DW_RLE_startx_length
309	.byte	1                               #   start index
310	.uleb128 .LBB_END0_2-_Z12doStuffOtheri.__part.2 #   length
311	.byte	3                               # DW_RLE_startx_length
312	.byte	2                               #   start index
313	.uleb128 .Lfunc_end0-.Lfunc_begin0      #   length
314	.byte	0                               # DW_RLE_end_of_list
315.Ldebug_ranges1:
316	.byte	3                               # DW_RLE_startx_length
317	.byte	0                               #   start index
318	.uleb128 .LBB_END0_1-_Z12doStuffOtheri.__part.1 #   length
319	.byte	3                               # DW_RLE_startx_length
320	.byte	1                               #   start index
321	.uleb128 .LBB_END0_2-_Z12doStuffOtheri.__part.2 #   length
322	.byte	3                               # DW_RLE_startx_length
323	.byte	2                               #   start index
324	.uleb128 .Lfunc_end0-.Lfunc_begin0      #   length
325	.byte	3                               # DW_RLE_startx_length
326	.byte	3                               #   start index
327	.uleb128 .Lfunc_end1-.Lfunc_begin1      #   length
328	.byte	0                               # DW_RLE_end_of_list
329.Ldebug_list_header_end0:
330	.section	.debug_str_offsets,"",@progbits
331	.long	52                              # Length of String Offsets Set
332	.short	5
333	.short	0
334.Lstr_offsets_base0:
335	.section	.debug_str,"MS",@progbits,1
336.Linfo_string0:
337	.asciz	"clang version 19.0.0git (git@github.com:llvm/llvm-project.git df542e1ed82bd4e5a9e345d3a3ae63a76893a0cf)" # string offset=0
338.Linfo_string1:
339	.asciz	"mainOther.cpp"                 # string offset=104
340.Linfo_string2:
341	.asciz	"."                             # string offset=118
342.Linfo_string3:
343	.asciz	"_Z12doStuffOtheri"             # string offset=120
344.Linfo_string4:
345	.asciz	"doStuffOther"                  # string offset=138
346.Linfo_string5:
347	.asciz	"int"                           # string offset=151
348.Linfo_string6:
349	.asciz	"_Z9mainOtheriPPKc"             # string offset=155
350.Linfo_string7:
351	.asciz	"mainOther"                     # string offset=173
352.Linfo_string8:
353	.asciz	"val"                           # string offset=183
354.Linfo_string9:
355	.asciz	"argc"                          # string offset=187
356.Linfo_string10:
357	.asciz	"argv"                          # string offset=192
358.Linfo_string11:
359	.asciz	"char"                          # string offset=197
360	.section	.debug_str_offsets,"",@progbits
361	.long	.Linfo_string0
362	.long	.Linfo_string1
363	.long	.Linfo_string2
364	.long	.Linfo_string3
365	.long	.Linfo_string4
366	.long	.Linfo_string5
367	.long	.Linfo_string6
368	.long	.Linfo_string7
369	.long	.Linfo_string8
370	.long	.Linfo_string9
371	.long	.Linfo_string10
372	.long	.Linfo_string11
373	.section	.debug_addr,"",@progbits
374	.long	.Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution
375.Ldebug_addr_start0:
376	.short	5                               # DWARF version number
377	.byte	8                               # Address size
378	.byte	0                               # Segment selector size
379.Laddr_table_base0:
380	.quad	_Z12doStuffOtheri.__part.1
381	.quad	_Z12doStuffOtheri.__part.2
382	.quad	.Lfunc_begin0
383	.quad	.Lfunc_begin1
384.Ldebug_addr_end0:
385	.ident	"clang version 19.0.0git (git@github.com:llvm/llvm-project.git df542e1ed82bd4e5a9e345d3a3ae63a76893a0cf)"
386	.section	".note.GNU-stack","",@progbits
387	.addrsig
388	.addrsig_sym _Z12doStuffOtheri
389	.section	.debug_line,"",@progbits
390.Lline_table_start0:
391