]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/testsuite/gdb.reverse/recursion.c
Update copyright year range in header of all files managed by GDB
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.reverse / recursion.c
1 /* This testcase is part of GDB, the GNU debugger.
2
3 Copyright 2023-2024 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 /* Test GDB's ability to handle recursive functions when executing
19 in reverse. */
20
21 /* The recursive foo call must be the first line of the recursive
22 function, to test that we're not stepping too much and skipping
23 multiple calls when we should skip only one. */
24 int
25 foo (int x)
26 {
27 if (x) return foo (x-1);
28 return 0;
29 }
30
31 int
32 bar (int x)
33 {
34 int r = foo (x);
35 return 2*r;
36 }
37
38 int
39 main ()
40 {
41 int i = bar (5);
42 int j = foo (5);
43 return 0; /* END OF MAIN */
44 }