xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.base/step-test.c (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
1*b725ae77Skettenis #include <stdlib.h>
2*b725ae77Skettenis #include <string.h>
3*b725ae77Skettenis 
4*b725ae77Skettenis /* Test various kinds of stepping.
5*b725ae77Skettenis */
6*b725ae77Skettenis int myglob = 0;
7*b725ae77Skettenis 
callee()8*b725ae77Skettenis int callee() {
9*b725ae77Skettenis     myglob++; return 0;
10*b725ae77Skettenis }
11*b725ae77Skettenis 
12*b725ae77Skettenis /* A structure which, we hope, will need to be passed using memcpy.  */
13*b725ae77Skettenis struct rhomboidal {
14*b725ae77Skettenis   int rather_large[100];
15*b725ae77Skettenis };
16*b725ae77Skettenis 
17*b725ae77Skettenis void
large_struct_by_value(struct rhomboidal r)18*b725ae77Skettenis large_struct_by_value (struct rhomboidal r)
19*b725ae77Skettenis {
20*b725ae77Skettenis   myglob += r.rather_large[42]; /* step-test.exp: arrive here 1 */
21*b725ae77Skettenis }
22*b725ae77Skettenis 
main()23*b725ae77Skettenis int main () {
24*b725ae77Skettenis    int w,x,y,z;
25*b725ae77Skettenis    int a[10], b[10];
26*b725ae77Skettenis 
27*b725ae77Skettenis    /* Test "next" and "step" */
28*b725ae77Skettenis    w = 0;
29*b725ae77Skettenis    x = 1;
30*b725ae77Skettenis    y = 2;
31*b725ae77Skettenis    z = 3;
32*b725ae77Skettenis    w = w + 2;
33*b725ae77Skettenis    x = x + 3;
34*b725ae77Skettenis    y = y + 4;
35*b725ae77Skettenis    z = z + 5;
36*b725ae77Skettenis 
37*b725ae77Skettenis    /* Test that "next" goes over a call */
38*b725ae77Skettenis    callee(); /* OVER */
39*b725ae77Skettenis 
40*b725ae77Skettenis    /* Test that "step" doesn't */
41*b725ae77Skettenis    callee(); /* INTO */
42*b725ae77Skettenis 
43*b725ae77Skettenis    /* Test "stepi" */
44*b725ae77Skettenis    a[5] = a[3] - a[4];
45*b725ae77Skettenis    callee(); /* STEPI */
46*b725ae77Skettenis 
47*b725ae77Skettenis    /* Test "nexti" */
48*b725ae77Skettenis    callee(); /* NEXTI */
49*b725ae77Skettenis 
50*b725ae77Skettenis    y = w + z;
51*b725ae77Skettenis 
52*b725ae77Skettenis    {
53*b725ae77Skettenis      struct rhomboidal r;
54*b725ae77Skettenis      memset (r.rather_large, 0, sizeof (r.rather_large));
55*b725ae77Skettenis      r.rather_large[42] = 10;
56*b725ae77Skettenis      large_struct_by_value (r);  /* step-test.exp: large struct by value */
57*b725ae77Skettenis    }
58*b725ae77Skettenis 
59*b725ae77Skettenis    exit (0);
60*b725ae77Skettenis }
61*b725ae77Skettenis 
62