1/* This testcase is part of GDB, the GNU debugger.
2
3   Copyright 2012-2021 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   gcc -o gdb.reverse/amd64-tailcall-reverse.S gdb.reverse/amd64-tailcall-reverse.c -Wall -S -dA -O2 -g
20   */
21
22	.file	"amd64-tailcall-reverse.c"
23	.text
24.Ltext0:
25	.p2align 4,,15
26	.type	g, @function
27g:
28.LFB0:
29	.file 1 "gdb.reverse/amd64-tailcall-reverse.c"
30	# gdb.reverse/amd64-tailcall-reverse.c:22
31	.loc 1 22 0
32	.cfi_startproc
33# BLOCK 2 freq:10000 seq:0
34# PRED: ENTRY [100.0%]  (fallthru)
35	# gdb.reverse/amd64-tailcall-reverse.c:23
36	.loc 1 23 0
37	movl	$2, v(%rip)
38# SUCC: EXIT [100.0%]
39	ret
40	.cfi_endproc
41.LFE0:
42	.size	g, .-g
43	.p2align 4,,15
44	.type	f, @function
45f:
46.LFB1:
47	# gdb.reverse/amd64-tailcall-reverse.c:28
48	.loc 1 28 0
49	.cfi_startproc
50# BLOCK 2 freq:10000 seq:0
51# PRED: ENTRY [100.0%]  (fallthru)
52	# gdb.reverse/amd64-tailcall-reverse.c:29
53	.loc 1 29 0
54	jmp	g
55# SUCC: EXIT [100.0%]  (ab,sibcall)
56.LVL0:
57	.cfi_endproc
58.LFE1:
59	.size	f, .-f
60	.section	.text.startup,"ax",@progbits
61	.p2align 4,,15
62	.globl	main
63	.type	main, @function
64main:
65.LFB2:
66	# gdb.reverse/amd64-tailcall-reverse.c:34
67	.loc 1 34 0
68	.cfi_startproc
69# BLOCK 2 freq:10000 seq:0
70# PRED: ENTRY [100.0%]  (fallthru)
71	# gdb.reverse/amd64-tailcall-reverse.c:35
72	.loc 1 35 0
73	movl	$1, v(%rip)
74	# gdb.reverse/amd64-tailcall-reverse.c:36
75	.loc 1 36 0
76	call	f
77.LVL1:
78	# gdb.reverse/amd64-tailcall-reverse.c:37
79	.loc 1 37 0
80	movl	$3, v(%rip)
81	# gdb.reverse/amd64-tailcall-reverse.c:39
82	.loc 1 39 0
83	xorl	%eax, %eax
84# SUCC: EXIT [100.0%]
85	ret
86	.cfi_endproc
87.LFE2:
88	.size	main, .-main
89	.comm	v,4,4
90	.text
91.Letext0:
92	.section	.debug_info,"",@progbits
93.Ldebug_info0:
94	.long	0xc8	# Length of Compilation Unit Info
95	.value	0x2	# DWARF version number
96	.long	.Ldebug_abbrev0	# Offset Into Abbrev. Section
97	.byte	0x8	# Pointer Size (in bytes)
98	.uleb128 0x1	# (DIE (0xb) DW_TAG_compile_unit)
99	.long	.LASF0	# DW_AT_producer: "GNU C 4.7.2 20120911 (prerelease)"
100	.byte	0x1	# DW_AT_language
101	.long	.LASF1	# DW_AT_name: "gdb.reverse/amd64-tailcall-reverse.c"
102	.long	.LASF2	# DW_AT_comp_dir: ""
103	.long	.Ldebug_ranges0+0	# DW_AT_ranges
104	.quad	0	# DW_AT_low_pc
105	.quad	0	# DW_AT_entry_pc
106	.long	.Ldebug_line0	# DW_AT_stmt_list
107	.uleb128 0x2	# (DIE (0x31) DW_TAG_subprogram)
108	.ascii "g\0"	# DW_AT_name
109	.byte	0x1	# DW_AT_decl_file (gdb.reverse/amd64-tailcall-reverse.c)
110	.byte	0x15	# DW_AT_decl_line
111	.byte	0x1	# DW_AT_prototyped
112	.quad	.LFB0	# DW_AT_low_pc
113	.quad	.LFE0	# DW_AT_high_pc
114	.byte	0x2	# DW_AT_frame_base
115	.byte	0x77	# DW_OP_breg7
116	.sleb128 8
117	.byte	0x1	# DW_AT_GNU_all_call_sites
118	.uleb128 0x3	# (DIE (0x4b) DW_TAG_subprogram)
119	.ascii "f\0"	# DW_AT_name
120	.byte	0x1	# DW_AT_decl_file (gdb.reverse/amd64-tailcall-reverse.c)
121	.byte	0x1b	# DW_AT_decl_line
122	.byte	0x1	# DW_AT_prototyped
123	.quad	.LFB1	# DW_AT_low_pc
124	.quad	.LFE1	# DW_AT_high_pc
125	.byte	0x2	# DW_AT_frame_base
126	.byte	0x77	# DW_OP_breg7
127	.sleb128 8
128	.byte	0x1	# DW_AT_GNU_all_call_sites
129	.long	0x78	# DW_AT_sibling
130	.uleb128 0x4	# (DIE (0x69) DW_TAG_GNU_call_site)
131	.quad	.LVL0	# DW_AT_low_pc
132	.byte	0x1	# DW_AT_GNU_tail_call
133	.long	0x31	# DW_AT_abstract_origin
134	.byte	0	# end of children of DIE 0x4b
135	.uleb128 0x5	# (DIE (0x78) DW_TAG_subprogram)
136	.byte	0x1	# DW_AT_external
137	.long	.LASF3	# DW_AT_name: "main"
138	.byte	0x1	# DW_AT_decl_file (gdb.reverse/amd64-tailcall-reverse.c)
139	.byte	0x21	# DW_AT_decl_line
140	.byte	0x1	# DW_AT_prototyped
141	.long	0xab	# DW_AT_type
142	.quad	.LFB2	# DW_AT_low_pc
143	.quad	.LFE2	# DW_AT_high_pc
144	.byte	0x2	# DW_AT_frame_base
145	.byte	0x77	# DW_OP_breg7
146	.sleb128 8
147	.byte	0x1	# DW_AT_GNU_all_call_sites
148	.long	0xab	# DW_AT_sibling
149	.uleb128 0x6	# (DIE (0x9d) DW_TAG_GNU_call_site)
150	.quad	.LVL1	# DW_AT_low_pc
151	.long	0x4b	# DW_AT_abstract_origin
152	.byte	0	# end of children of DIE 0x78
153	.uleb128 0x7	# (DIE (0xab) DW_TAG_base_type)
154	.byte	0x4	# DW_AT_byte_size
155	.byte	0x5	# DW_AT_encoding
156	.ascii "int\0"	# DW_AT_name
157	.uleb128 0x8	# (DIE (0xb2) DW_TAG_variable)
158	.ascii "v\0"	# DW_AT_name
159	.byte	0x1	# DW_AT_decl_file (gdb.reverse/amd64-tailcall-reverse.c)
160	.byte	0x12	# DW_AT_decl_line
161	.long	0xc6	# DW_AT_type
162	.byte	0x1	# DW_AT_external
163	.byte	0x9	# DW_AT_location
164	.byte	0x3	# DW_OP_addr
165	.quad	v
166	.uleb128 0x9	# (DIE (0xc6) DW_TAG_volatile_type)
167	.long	0xab	# DW_AT_type
168	.byte	0	# end of children of DIE 0xb
169	.section	.debug_abbrev,"",@progbits
170.Ldebug_abbrev0:
171	.uleb128 0x1	# (abbrev code)
172	.uleb128 0x11	# (TAG: DW_TAG_compile_unit)
173	.byte	0x1	# DW_children_yes
174	.uleb128 0x25	# (DW_AT_producer)
175	.uleb128 0xe	# (DW_FORM_strp)
176	.uleb128 0x13	# (DW_AT_language)
177	.uleb128 0xb	# (DW_FORM_data1)
178	.uleb128 0x3	# (DW_AT_name)
179	.uleb128 0xe	# (DW_FORM_strp)
180	.uleb128 0x1b	# (DW_AT_comp_dir)
181	.uleb128 0xe	# (DW_FORM_strp)
182	.uleb128 0x55	# (DW_AT_ranges)
183	.uleb128 0x6	# (DW_FORM_data4)
184	.uleb128 0x11	# (DW_AT_low_pc)
185	.uleb128 0x1	# (DW_FORM_addr)
186	.uleb128 0x52	# (DW_AT_entry_pc)
187	.uleb128 0x1	# (DW_FORM_addr)
188	.uleb128 0x10	# (DW_AT_stmt_list)
189	.uleb128 0x6	# (DW_FORM_data4)
190	.byte	0
191	.byte	0
192	.uleb128 0x2	# (abbrev code)
193	.uleb128 0x2e	# (TAG: DW_TAG_subprogram)
194	.byte	0	# DW_children_no
195	.uleb128 0x3	# (DW_AT_name)
196	.uleb128 0x8	# (DW_FORM_string)
197	.uleb128 0x3a	# (DW_AT_decl_file)
198	.uleb128 0xb	# (DW_FORM_data1)
199	.uleb128 0x3b	# (DW_AT_decl_line)
200	.uleb128 0xb	# (DW_FORM_data1)
201	.uleb128 0x27	# (DW_AT_prototyped)
202	.uleb128 0xc	# (DW_FORM_flag)
203	.uleb128 0x11	# (DW_AT_low_pc)
204	.uleb128 0x1	# (DW_FORM_addr)
205	.uleb128 0x12	# (DW_AT_high_pc)
206	.uleb128 0x1	# (DW_FORM_addr)
207	.uleb128 0x40	# (DW_AT_frame_base)
208	.uleb128 0xa	# (DW_FORM_block1)
209	.uleb128 0x2117	# (DW_AT_GNU_all_call_sites)
210	.uleb128 0xc	# (DW_FORM_flag)
211	.byte	0
212	.byte	0
213	.uleb128 0x3	# (abbrev code)
214	.uleb128 0x2e	# (TAG: DW_TAG_subprogram)
215	.byte	0x1	# DW_children_yes
216	.uleb128 0x3	# (DW_AT_name)
217	.uleb128 0x8	# (DW_FORM_string)
218	.uleb128 0x3a	# (DW_AT_decl_file)
219	.uleb128 0xb	# (DW_FORM_data1)
220	.uleb128 0x3b	# (DW_AT_decl_line)
221	.uleb128 0xb	# (DW_FORM_data1)
222	.uleb128 0x27	# (DW_AT_prototyped)
223	.uleb128 0xc	# (DW_FORM_flag)
224	.uleb128 0x11	# (DW_AT_low_pc)
225	.uleb128 0x1	# (DW_FORM_addr)
226	.uleb128 0x12	# (DW_AT_high_pc)
227	.uleb128 0x1	# (DW_FORM_addr)
228	.uleb128 0x40	# (DW_AT_frame_base)
229	.uleb128 0xa	# (DW_FORM_block1)
230	.uleb128 0x2117	# (DW_AT_GNU_all_call_sites)
231	.uleb128 0xc	# (DW_FORM_flag)
232	.uleb128 0x1	# (DW_AT_sibling)
233	.uleb128 0x13	# (DW_FORM_ref4)
234	.byte	0
235	.byte	0
236	.uleb128 0x4	# (abbrev code)
237	.uleb128 0x4109	# (TAG: DW_TAG_GNU_call_site)
238	.byte	0	# DW_children_no
239	.uleb128 0x11	# (DW_AT_low_pc)
240	.uleb128 0x1	# (DW_FORM_addr)
241	.uleb128 0x2115	# (DW_AT_GNU_tail_call)
242	.uleb128 0xc	# (DW_FORM_flag)
243	.uleb128 0x31	# (DW_AT_abstract_origin)
244	.uleb128 0x13	# (DW_FORM_ref4)
245	.byte	0
246	.byte	0
247	.uleb128 0x5	# (abbrev code)
248	.uleb128 0x2e	# (TAG: DW_TAG_subprogram)
249	.byte	0x1	# DW_children_yes
250	.uleb128 0x3f	# (DW_AT_external)
251	.uleb128 0xc	# (DW_FORM_flag)
252	.uleb128 0x3	# (DW_AT_name)
253	.uleb128 0xe	# (DW_FORM_strp)
254	.uleb128 0x3a	# (DW_AT_decl_file)
255	.uleb128 0xb	# (DW_FORM_data1)
256	.uleb128 0x3b	# (DW_AT_decl_line)
257	.uleb128 0xb	# (DW_FORM_data1)
258	.uleb128 0x27	# (DW_AT_prototyped)
259	.uleb128 0xc	# (DW_FORM_flag)
260	.uleb128 0x49	# (DW_AT_type)
261	.uleb128 0x13	# (DW_FORM_ref4)
262	.uleb128 0x11	# (DW_AT_low_pc)
263	.uleb128 0x1	# (DW_FORM_addr)
264	.uleb128 0x12	# (DW_AT_high_pc)
265	.uleb128 0x1	# (DW_FORM_addr)
266	.uleb128 0x40	# (DW_AT_frame_base)
267	.uleb128 0xa	# (DW_FORM_block1)
268	.uleb128 0x2117	# (DW_AT_GNU_all_call_sites)
269	.uleb128 0xc	# (DW_FORM_flag)
270	.uleb128 0x1	# (DW_AT_sibling)
271	.uleb128 0x13	# (DW_FORM_ref4)
272	.byte	0
273	.byte	0
274	.uleb128 0x6	# (abbrev code)
275	.uleb128 0x4109	# (TAG: DW_TAG_GNU_call_site)
276	.byte	0	# DW_children_no
277	.uleb128 0x11	# (DW_AT_low_pc)
278	.uleb128 0x1	# (DW_FORM_addr)
279	.uleb128 0x31	# (DW_AT_abstract_origin)
280	.uleb128 0x13	# (DW_FORM_ref4)
281	.byte	0
282	.byte	0
283	.uleb128 0x7	# (abbrev code)
284	.uleb128 0x24	# (TAG: DW_TAG_base_type)
285	.byte	0	# DW_children_no
286	.uleb128 0xb	# (DW_AT_byte_size)
287	.uleb128 0xb	# (DW_FORM_data1)
288	.uleb128 0x3e	# (DW_AT_encoding)
289	.uleb128 0xb	# (DW_FORM_data1)
290	.uleb128 0x3	# (DW_AT_name)
291	.uleb128 0x8	# (DW_FORM_string)
292	.byte	0
293	.byte	0
294	.uleb128 0x8	# (abbrev code)
295	.uleb128 0x34	# (TAG: DW_TAG_variable)
296	.byte	0	# DW_children_no
297	.uleb128 0x3	# (DW_AT_name)
298	.uleb128 0x8	# (DW_FORM_string)
299	.uleb128 0x3a	# (DW_AT_decl_file)
300	.uleb128 0xb	# (DW_FORM_data1)
301	.uleb128 0x3b	# (DW_AT_decl_line)
302	.uleb128 0xb	# (DW_FORM_data1)
303	.uleb128 0x49	# (DW_AT_type)
304	.uleb128 0x13	# (DW_FORM_ref4)
305	.uleb128 0x3f	# (DW_AT_external)
306	.uleb128 0xc	# (DW_FORM_flag)
307	.uleb128 0x2	# (DW_AT_location)
308	.uleb128 0xa	# (DW_FORM_block1)
309	.byte	0
310	.byte	0
311	.uleb128 0x9	# (abbrev code)
312	.uleb128 0x35	# (TAG: DW_TAG_volatile_type)
313	.byte	0	# DW_children_no
314	.uleb128 0x49	# (DW_AT_type)
315	.uleb128 0x13	# (DW_FORM_ref4)
316	.byte	0
317	.byte	0
318	.byte	0
319	.section	.debug_aranges,"",@progbits
320	.long	0x3c	# Length of Address Ranges Info
321	.value	0x2	# DWARF Version
322	.long	.Ldebug_info0	# Offset of Compilation Unit Info
323	.byte	0x8	# Size of Address
324	.byte	0	# Size of Segment Descriptor
325	.value	0	# Pad to 16 byte boundary
326	.value	0
327	.quad	.Ltext0	# Address
328	.quad	.Letext0-.Ltext0	# Length
329	.quad	.LFB2	# Address
330	.quad	.LFE2-.LFB2	# Length
331	.quad	0
332	.quad	0
333	.section	.debug_ranges,"",@progbits
334.Ldebug_ranges0:
335	.quad	.Ltext0	# Offset 0
336	.quad	.Letext0
337	.quad	.LFB2	# Offset 0x10
338	.quad	.LFE2
339	.quad	0
340	.quad	0
341	.section	.debug_line,"",@progbits
342.Ldebug_line0:
343	.section	.debug_str,"MS",@progbits,1
344.LASF3:
345	.string	"main"
346.LASF0:
347	.string	"GNU C 4.7.2 20120911 (prerelease)"
348.LASF1:
349	.string	"gdb.reverse/amd64-tailcall-reverse.c"
350.LASF2:
351	.string	""
352	.ident	"GCC: (GNU) 4.7.2 20120911 (prerelease)"
353	.section	.note.GNU-stack,"",@progbits
354