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