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