1/* This testcase is part of GDB, the GNU debugger.
2
3   Copyright 2012-2023 Free Software Foundation, Inc.
4
5   This program is free software; you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation; either version 3 of the License, or
8   (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18/* This source file was generated by:
19   g++ -o gdb.arch/amd64-tailcall-cxx1.S gdb.arch/amd64-tailcall-cxx1.cc -Wall -S -dA -O2 -g
20   Fedora GCC was used here to also test the case of missing DW_AT_linkage_name.
21   */
22
23	.file	"amd64-tailcall-cxx1.cc"
24	.text
25.Ltext0:
26	.p2align 4,,15
27	.globl	_Z1gi
28	.type	_Z1gi, @function
29_Z1gi:
30.LFB0:
31	.file 1 "gdb.arch/amd64-tailcall-cxx1.cc"
32	# gdb.arch/amd64-tailcall-cxx1.cc:22
33	.loc 1 22 0
34	.cfi_startproc
35.LVL0:
36# BLOCK 2 freq:10000 seq:0
37# PRED: ENTRY [100.0%]  (FALLTHRU)
38	# gdb.arch/amd64-tailcall-cxx1.cc:23
39	.loc 1 23 0
40	movl	%edi, v(%rip)
41# SUCC: EXIT [100.0%]
42	ret
43	.cfi_endproc
44.LFE0:
45	.size	_Z1gi, .-_Z1gi
46	.section	.text.startup,"ax",@progbits
47	.p2align 4,,15
48	.globl	main
49	.type	main, @function
50main:
51.LFB1:
52	# gdb.arch/amd64-tailcall-cxx1.cc:30
53	.loc 1 30 0
54	.cfi_startproc
55# BLOCK 2 freq:10000 seq:0
56# PRED: ENTRY [100.0%]  (FALLTHRU)
57	subq	$8, %rsp
58	.cfi_def_cfa_offset 16
59	# gdb.arch/amd64-tailcall-cxx1.cc:31
60	.loc 1 31 0
61	movl	$1, %edi
62	call	_Z1fi
63.LVL1:
64	# gdb.arch/amd64-tailcall-cxx1.cc:32
65	.loc 1 32 0
66	xorl	%eax, %eax
67	addq	$8, %rsp
68	.cfi_def_cfa_offset 8
69# SUCC: EXIT [100.0%]
70	ret
71	.cfi_endproc
72.LFE1:
73	.size	main, .-main
74	.globl	v
75	.bss
76	.align 4
77	.type	v, @object
78	.size	v, 4
79v:
80	.zero	4
81	.text
82.Letext0:
83	.section	.debug_info,"",@progbits
84.Ldebug_info0:
85	.long	0xb4	# Length of Compilation Unit Info
86	.value	0x4	# DWARF version number
87	.long	.Ldebug_abbrev0	# Offset Into Abbrev. Section
88	.byte	0x8	# Pointer Size (in bytes)
89	.uleb128 0x1	# (DIE (0xb) DW_TAG_compile_unit)
90	.long	.LASF1	# DW_AT_producer: "GNU C++ 4.8.0 20130220 (Red Hat 4.8.0-0.14) -mtune=generic -march=x86-64 -g -O2"
91	.byte	0x4	# DW_AT_language
92	.long	.LASF2	# DW_AT_name: "gdb.arch/amd64-tailcall-cxx1.cc"
93	.long	.LASF3	# DW_AT_comp_dir: ""
94	.long	.Ldebug_ranges0+0	# DW_AT_ranges
95	.quad	0	# DW_AT_low_pc
96	.long	.Ldebug_line0	# DW_AT_stmt_list
97	.uleb128 0x2	# (DIE (0x29) DW_TAG_subprogram)
98			# DW_AT_external
99	.ascii "g\0"	# DW_AT_name
100	.byte	0x1	# DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc)
101	.byte	0x15	# DW_AT_decl_line
102	.long	.LASF4	# DW_AT_linkage_name: "_Z1gi"
103	.quad	.LFB0	# DW_AT_low_pc
104	.quad	.LFE0-.LFB0	# DW_AT_high_pc
105	.uleb128 0x1	# DW_AT_frame_base
106	.byte	0x9c	# DW_OP_call_frame_cfa
107			# DW_AT_GNU_all_call_sites
108	.long	0x54	# DW_AT_sibling
109	.uleb128 0x3	# (DIE (0x48) DW_TAG_formal_parameter)
110	.ascii "x\0"	# DW_AT_name
111	.byte	0x1	# DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc)
112	.byte	0x15	# DW_AT_decl_line
113	.long	0x54	# DW_AT_type
114	.uleb128 0x1	# DW_AT_location
115	.byte	0x55	# DW_OP_reg5
116	.byte	0	# end of children of DIE 0x29
117	.uleb128 0x4	# (DIE (0x54) DW_TAG_base_type)
118	.byte	0x4	# DW_AT_byte_size
119	.byte	0x5	# DW_AT_encoding
120	.ascii "int\0"	# DW_AT_name
121	.uleb128 0x5	# (DIE (0x5b) DW_TAG_subprogram)
122			# DW_AT_external
123	.long	.LASF0	# DW_AT_name: "main"
124	.byte	0x1	# DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc)
125	.byte	0x1d	# DW_AT_decl_line
126	.long	0x54	# DW_AT_type
127	.quad	.LFB1	# DW_AT_low_pc
128	.quad	.LFE1-.LFB1	# DW_AT_high_pc
129	.uleb128 0x1	# DW_AT_frame_base
130	.byte	0x9c	# DW_OP_call_frame_cfa
131			# DW_AT_GNU_all_call_sites
132	.long	0x90	# DW_AT_sibling
133	.uleb128 0x6	# (DIE (0x7c) DW_TAG_GNU_call_site)
134	.quad	.LVL1	# DW_AT_low_pc
135	.long	0xa8	# DW_AT_abstract_origin
136	.uleb128 0x7	# (DIE (0x89) DW_TAG_GNU_call_site_parameter)
137	.uleb128 0x1	# DW_AT_location
138	.byte	0x55	# DW_OP_reg5
139	.uleb128 0x1	# DW_AT_GNU_call_site_value
140	.byte	0x31	# DW_OP_lit1
141	.byte	0	# end of children of DIE 0x7c
142	.byte	0	# end of children of DIE 0x5b
143	.uleb128 0x8	# (DIE (0x90) DW_TAG_variable)
144	.ascii "v\0"	# DW_AT_name
145	.byte	0x1	# DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc)
146	.byte	0x12	# DW_AT_decl_line
147	.long	0xa3	# DW_AT_type
148			# DW_AT_external
149	.uleb128 0x9	# DW_AT_location
150	.byte	0x3	# DW_OP_addr
151	.quad	v
152	.uleb128 0x9	# (DIE (0xa3) DW_TAG_volatile_type)
153	.long	0x54	# DW_AT_type
154	.uleb128 0xa	# (DIE (0xa8) DW_TAG_subprogram)
155			# DW_AT_external
156	.ascii "f\0"	# DW_AT_name
157	.byte	0x1	# DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc)
158	.byte	0x1a	# DW_AT_decl_line
159	.long	.LASF5	# DW_AT_linkage_name: "_Z1fi"
160			# DW_AT_declaration
161	.uleb128 0xb	# (DIE (0xb1) DW_TAG_formal_parameter)
162	.long	0x54	# DW_AT_type
163	.byte	0	# end of children of DIE 0xa8
164	.byte	0	# end of children of DIE 0xb
165	.section	.debug_abbrev,"",@progbits
166.Ldebug_abbrev0:
167	.uleb128 0x1	# (abbrev code)
168	.uleb128 0x11	# (TAG: DW_TAG_compile_unit)
169	.byte	0x1	# DW_children_yes
170	.uleb128 0x25	# (DW_AT_producer)
171	.uleb128 0xe	# (DW_FORM_strp)
172	.uleb128 0x13	# (DW_AT_language)
173	.uleb128 0xb	# (DW_FORM_data1)
174	.uleb128 0x3	# (DW_AT_name)
175	.uleb128 0xe	# (DW_FORM_strp)
176	.uleb128 0x1b	# (DW_AT_comp_dir)
177	.uleb128 0xe	# (DW_FORM_strp)
178	.uleb128 0x55	# (DW_AT_ranges)
179	.uleb128 0x17	# (DW_FORM_sec_offset)
180	.uleb128 0x11	# (DW_AT_low_pc)
181	.uleb128 0x1	# (DW_FORM_addr)
182	.uleb128 0x10	# (DW_AT_stmt_list)
183	.uleb128 0x17	# (DW_FORM_sec_offset)
184	.byte	0
185	.byte	0
186	.uleb128 0x2	# (abbrev code)
187	.uleb128 0x2e	# (TAG: DW_TAG_subprogram)
188	.byte	0x1	# DW_children_yes
189	.uleb128 0x3f	# (DW_AT_external)
190	.uleb128 0x19	# (DW_FORM_flag_present)
191	.uleb128 0x3	# (DW_AT_name)
192	.uleb128 0x8	# (DW_FORM_string)
193	.uleb128 0x3a	# (DW_AT_decl_file)
194	.uleb128 0xb	# (DW_FORM_data1)
195	.uleb128 0x3b	# (DW_AT_decl_line)
196	.uleb128 0xb	# (DW_FORM_data1)
197	.uleb128 0x6e	# (DW_AT_linkage_name)
198	.uleb128 0xe	# (DW_FORM_strp)
199	.uleb128 0x11	# (DW_AT_low_pc)
200	.uleb128 0x1	# (DW_FORM_addr)
201	.uleb128 0x12	# (DW_AT_high_pc)
202	.uleb128 0x7	# (DW_FORM_data8)
203	.uleb128 0x40	# (DW_AT_frame_base)
204	.uleb128 0x18	# (DW_FORM_exprloc)
205	.uleb128 0x2117	# (DW_AT_GNU_all_call_sites)
206	.uleb128 0x19	# (DW_FORM_flag_present)
207	.uleb128 0x1	# (DW_AT_sibling)
208	.uleb128 0x13	# (DW_FORM_ref4)
209	.byte	0
210	.byte	0
211	.uleb128 0x3	# (abbrev code)
212	.uleb128 0x5	# (TAG: DW_TAG_formal_parameter)
213	.byte	0	# DW_children_no
214	.uleb128 0x3	# (DW_AT_name)
215	.uleb128 0x8	# (DW_FORM_string)
216	.uleb128 0x3a	# (DW_AT_decl_file)
217	.uleb128 0xb	# (DW_FORM_data1)
218	.uleb128 0x3b	# (DW_AT_decl_line)
219	.uleb128 0xb	# (DW_FORM_data1)
220	.uleb128 0x49	# (DW_AT_type)
221	.uleb128 0x13	# (DW_FORM_ref4)
222	.uleb128 0x2	# (DW_AT_location)
223	.uleb128 0x18	# (DW_FORM_exprloc)
224	.byte	0
225	.byte	0
226	.uleb128 0x4	# (abbrev code)
227	.uleb128 0x24	# (TAG: DW_TAG_base_type)
228	.byte	0	# DW_children_no
229	.uleb128 0xb	# (DW_AT_byte_size)
230	.uleb128 0xb	# (DW_FORM_data1)
231	.uleb128 0x3e	# (DW_AT_encoding)
232	.uleb128 0xb	# (DW_FORM_data1)
233	.uleb128 0x3	# (DW_AT_name)
234	.uleb128 0x8	# (DW_FORM_string)
235	.byte	0
236	.byte	0
237	.uleb128 0x5	# (abbrev code)
238	.uleb128 0x2e	# (TAG: DW_TAG_subprogram)
239	.byte	0x1	# DW_children_yes
240	.uleb128 0x3f	# (DW_AT_external)
241	.uleb128 0x19	# (DW_FORM_flag_present)
242	.uleb128 0x3	# (DW_AT_name)
243	.uleb128 0xe	# (DW_FORM_strp)
244	.uleb128 0x3a	# (DW_AT_decl_file)
245	.uleb128 0xb	# (DW_FORM_data1)
246	.uleb128 0x3b	# (DW_AT_decl_line)
247	.uleb128 0xb	# (DW_FORM_data1)
248	.uleb128 0x49	# (DW_AT_type)
249	.uleb128 0x13	# (DW_FORM_ref4)
250	.uleb128 0x11	# (DW_AT_low_pc)
251	.uleb128 0x1	# (DW_FORM_addr)
252	.uleb128 0x12	# (DW_AT_high_pc)
253	.uleb128 0x7	# (DW_FORM_data8)
254	.uleb128 0x40	# (DW_AT_frame_base)
255	.uleb128 0x18	# (DW_FORM_exprloc)
256	.uleb128 0x2117	# (DW_AT_GNU_all_call_sites)
257	.uleb128 0x19	# (DW_FORM_flag_present)
258	.uleb128 0x1	# (DW_AT_sibling)
259	.uleb128 0x13	# (DW_FORM_ref4)
260	.byte	0
261	.byte	0
262	.uleb128 0x6	# (abbrev code)
263	.uleb128 0x4109	# (TAG: DW_TAG_GNU_call_site)
264	.byte	0x1	# DW_children_yes
265	.uleb128 0x11	# (DW_AT_low_pc)
266	.uleb128 0x1	# (DW_FORM_addr)
267	.uleb128 0x31	# (DW_AT_abstract_origin)
268	.uleb128 0x13	# (DW_FORM_ref4)
269	.byte	0
270	.byte	0
271	.uleb128 0x7	# (abbrev code)
272	.uleb128 0x410a	# (TAG: DW_TAG_GNU_call_site_parameter)
273	.byte	0	# DW_children_no
274	.uleb128 0x2	# (DW_AT_location)
275	.uleb128 0x18	# (DW_FORM_exprloc)
276	.uleb128 0x2111	# (DW_AT_GNU_call_site_value)
277	.uleb128 0x18	# (DW_FORM_exprloc)
278	.byte	0
279	.byte	0
280	.uleb128 0x8	# (abbrev code)
281	.uleb128 0x34	# (TAG: DW_TAG_variable)
282	.byte	0	# DW_children_no
283	.uleb128 0x3	# (DW_AT_name)
284	.uleb128 0x8	# (DW_FORM_string)
285	.uleb128 0x3a	# (DW_AT_decl_file)
286	.uleb128 0xb	# (DW_FORM_data1)
287	.uleb128 0x3b	# (DW_AT_decl_line)
288	.uleb128 0xb	# (DW_FORM_data1)
289	.uleb128 0x49	# (DW_AT_type)
290	.uleb128 0x13	# (DW_FORM_ref4)
291	.uleb128 0x3f	# (DW_AT_external)
292	.uleb128 0x19	# (DW_FORM_flag_present)
293	.uleb128 0x2	# (DW_AT_location)
294	.uleb128 0x18	# (DW_FORM_exprloc)
295	.byte	0
296	.byte	0
297	.uleb128 0x9	# (abbrev code)
298	.uleb128 0x35	# (TAG: DW_TAG_volatile_type)
299	.byte	0	# DW_children_no
300	.uleb128 0x49	# (DW_AT_type)
301	.uleb128 0x13	# (DW_FORM_ref4)
302	.byte	0
303	.byte	0
304	.uleb128 0xa	# (abbrev code)
305	.uleb128 0x2e	# (TAG: DW_TAG_subprogram)
306	.byte	0x1	# DW_children_yes
307	.uleb128 0x3f	# (DW_AT_external)
308	.uleb128 0x19	# (DW_FORM_flag_present)
309	.uleb128 0x3	# (DW_AT_name)
310	.uleb128 0x8	# (DW_FORM_string)
311	.uleb128 0x3a	# (DW_AT_decl_file)
312	.uleb128 0xb	# (DW_FORM_data1)
313	.uleb128 0x3b	# (DW_AT_decl_line)
314	.uleb128 0xb	# (DW_FORM_data1)
315	.uleb128 0x6e	# (DW_AT_linkage_name)
316	.uleb128 0xe	# (DW_FORM_strp)
317	.uleb128 0x3c	# (DW_AT_declaration)
318	.uleb128 0x19	# (DW_FORM_flag_present)
319	.byte	0
320	.byte	0
321	.uleb128 0xb	# (abbrev code)
322	.uleb128 0x5	# (TAG: DW_TAG_formal_parameter)
323	.byte	0	# DW_children_no
324	.uleb128 0x49	# (DW_AT_type)
325	.uleb128 0x13	# (DW_FORM_ref4)
326	.byte	0
327	.byte	0
328	.byte	0
329	.section	.debug_aranges,"",@progbits
330	.long	0x3c	# Length of Address Ranges Info
331	.value	0x2	# DWARF Version
332	.long	.Ldebug_info0	# Offset of Compilation Unit Info
333	.byte	0x8	# Size of Address
334	.byte	0	# Size of Segment Descriptor
335	.value	0	# Pad to 16 byte boundary
336	.value	0
337	.quad	.Ltext0	# Address
338	.quad	.Letext0-.Ltext0	# Length
339	.quad	.LFB1	# Address
340	.quad	.LFE1-.LFB1	# Length
341	.quad	0
342	.quad	0
343	.section	.debug_ranges,"",@progbits
344.Ldebug_ranges0:
345	.quad	.Ltext0	# Offset 0
346	.quad	.Letext0
347	.quad	.LFB1	# Offset 0x10
348	.quad	.LFE1
349	.quad	0
350	.quad	0
351	.section	.debug_line,"",@progbits
352.Ldebug_line0:
353	.section	.debug_str,"MS",@progbits,1
354.LASF4:
355	.string	"_Z1gi"
356.LASF3:
357	.string	""
358.LASF2:
359	.string	"gdb.arch/amd64-tailcall-cxx1.cc"
360.LASF1:
361	.string	"GNU C++ 4.8.0 20130220 (Red Hat 4.8.0-0.14) -mtune=generic -march=x86-64 -g -O2"
362.LASF0:
363	.string	"main"
364.LASF5:
365	.string	"_Z1fi"
366	.ident	"GCC: (GNU) 4.8.0 20130220 (Red Hat 4.8.0-0.14)"
367	.section	.note.GNU-stack,"",@progbits
368