|  | /* This testcase is part of GDB, the GNU debugger. | 
|  |  | 
|  | Copyright 2008-2022 Free Software Foundation, Inc. | 
|  |  | 
|  | This program is free software; you can redistribute it and/or modify | 
|  | it under the terms of the GNU General Public License as published by | 
|  | the Free Software Foundation; either version 3 of the License, or | 
|  | (at your option) any later version. | 
|  |  | 
|  | This program is distributed in the hope that it will be useful, | 
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | GNU General Public License for more details. | 
|  |  | 
|  | You should have received a copy of the GNU General Public License | 
|  | along with this program.  If not, see <http://www.gnu.org/licenses/>.  */ | 
|  |  | 
|  | #include <stdlib.h> | 
|  | #include <string.h> | 
|  |  | 
|  | /* Test various kinds of stepping. | 
|  | */ | 
|  | int myglob = 0; | 
|  |  | 
|  | int callee() {		/* ENTER CALLEE */ | 
|  | return myglob++;	/* ARRIVED IN CALLEE */ | 
|  | }			/* RETURN FROM CALLEE */ | 
|  |  | 
|  | /* A structure which, we hope, will need to be passed using memcpy.  */ | 
|  | struct rhomboidal { | 
|  | int rather_large[100]; | 
|  | }; | 
|  |  | 
|  | void | 
|  | large_struct_by_value (struct rhomboidal r) | 
|  | { | 
|  | myglob += r.rather_large[42]; /* step-test.exp: arrive here 1 */ | 
|  | } | 
|  |  | 
|  | int main () { | 
|  | int w,x,y,z; | 
|  | int a[10], b[10]; | 
|  |  | 
|  | /* Test "next" and "step" */ | 
|  | w = 0;	/* BREAK AT MAIN */ | 
|  | x = 1;	/* NEXT TEST 1 */ | 
|  | y = 2;	/* STEP TEST 1 */ | 
|  | z = 3;	/* REVERSE NEXT TEST 1 */ | 
|  | w = w + 2;	/* NEXT TEST 2 */ | 
|  | x = x + 3;	/* REVERSE STEP TEST 1 */ | 
|  | y = y + 4; | 
|  | z = z + 5;	/* STEP TEST 2 */ | 
|  |  | 
|  | /* Test that "next" goes over a call */ | 
|  | callee();	/* NEXT OVER THIS CALL */ | 
|  |  | 
|  | /* Test that "step" doesn't */ | 
|  | callee();	/* STEP INTO THIS CALL */ | 
|  |  | 
|  | /* Test "stepi" */ | 
|  | a[5] = a[3] - a[4]; /* FINISH TEST */ | 
|  | callee();	/* STEPI TEST */ | 
|  |  | 
|  | /* Test "nexti" */ | 
|  | callee();	/* NEXTI TEST */ | 
|  |  | 
|  | y = w + z; | 
|  |  | 
|  | { | 
|  | struct rhomboidal r; | 
|  | memset (r.rather_large, 0, sizeof (r.rather_large)); | 
|  | r.rather_large[42] = 10; | 
|  | large_struct_by_value (r);  /* step-test.exp: large struct by value */ | 
|  | } | 
|  |  | 
|  | exit (0); /* end of main */ | 
|  | } | 
|  |  |