xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.trace/actions.c (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
1*b725ae77Skettenis /*
2*b725ae77Skettenis  * Test program for trace action commands
3*b725ae77Skettenis  */
4*b725ae77Skettenis 
5*b725ae77Skettenis static char   gdb_char_test;
6*b725ae77Skettenis static short  gdb_short_test;
7*b725ae77Skettenis static long   gdb_long_test;
8*b725ae77Skettenis static char   gdb_arr_test[25];
9*b725ae77Skettenis static struct GDB_STRUCT_TEST
10*b725ae77Skettenis {
11*b725ae77Skettenis   char   c;
12*b725ae77Skettenis   short  s;
13*b725ae77Skettenis   long   l;
14*b725ae77Skettenis   int    bfield : 11;	/* collect bitfield */
15*b725ae77Skettenis   char   arr[25];
16*b725ae77Skettenis   struct GDB_STRUCT_TEST *next;
17*b725ae77Skettenis } gdb_struct1_test, gdb_struct2_test, *gdb_structp_test, **gdb_structpp_test;
18*b725ae77Skettenis 
19*b725ae77Skettenis static union GDB_UNION_TEST
20*b725ae77Skettenis {
21*b725ae77Skettenis   char   c;
22*b725ae77Skettenis   short  s;
23*b725ae77Skettenis   long   l;
24*b725ae77Skettenis   int    bfield : 11;	/* collect bitfield */
25*b725ae77Skettenis   char   arr[4];
26*b725ae77Skettenis   union GDB_UNION_TEST *next;
27*b725ae77Skettenis } gdb_union1_test;
28*b725ae77Skettenis 
29*b725ae77Skettenis void gdb_recursion_test (int, int, int, int,  int,  int,  int);
30*b725ae77Skettenis 
gdb_recursion_test(int depth,int q1,int q2,int q3,int q4,int q5,int q6)31*b725ae77Skettenis void gdb_recursion_test (int depth,
32*b725ae77Skettenis 			 int q1,
33*b725ae77Skettenis 			 int q2,
34*b725ae77Skettenis 			 int q3,
35*b725ae77Skettenis 			 int q4,
36*b725ae77Skettenis 			 int q5,
37*b725ae77Skettenis 			 int q6)
38*b725ae77Skettenis {	/* gdb_recursion_test line 0 */
39*b725ae77Skettenis   int q = q1;						/* gdbtestline 1 */
40*b725ae77Skettenis 
41*b725ae77Skettenis   q1 = q2;						/* gdbtestline 2 */
42*b725ae77Skettenis   q2 = q3;						/* gdbtestline 3 */
43*b725ae77Skettenis   q3 = q4;						/* gdbtestline 4 */
44*b725ae77Skettenis   q4 = q5;						/* gdbtestline 5 */
45*b725ae77Skettenis   q5 = q6;						/* gdbtestline 6 */
46*b725ae77Skettenis   q6 = q;						/* gdbtestline 7 */
47*b725ae77Skettenis   if (depth--)						/* gdbtestline 8 */
48*b725ae77Skettenis     gdb_recursion_test (depth, q1, q2, q3, q4, q5, q6);	/* gdbtestline 9 */
49*b725ae77Skettenis }
50*b725ae77Skettenis 
51*b725ae77Skettenis 
gdb_c_test(unsigned long * parm)52*b725ae77Skettenis unsigned long   gdb_c_test( unsigned long *parm )
53*b725ae77Skettenis 
54*b725ae77Skettenis {
55*b725ae77Skettenis    char *p = "gdb_c_test";
56*b725ae77Skettenis    char *ridiculously_long_variable_name_with_equally_long_string_assignment;
57*b725ae77Skettenis    register long local_reg = 7;
58*b725ae77Skettenis    static unsigned long local_static, local_static_sizeof;
59*b725ae77Skettenis    long local_long;
60*b725ae77Skettenis    unsigned long *stack_ptr;
61*b725ae77Skettenis    unsigned long end_of_stack;
62*b725ae77Skettenis 
63*b725ae77Skettenis    ridiculously_long_variable_name_with_equally_long_string_assignment =
64*b725ae77Skettenis      "ridiculously long variable name with equally long string assignment";
65*b725ae77Skettenis    local_static = 9;
66*b725ae77Skettenis    local_static_sizeof = sizeof (struct GDB_STRUCT_TEST);
67*b725ae77Skettenis    local_long = local_reg + 1;
68*b725ae77Skettenis    stack_ptr  = (unsigned long *) &local_long;
69*b725ae77Skettenis    end_of_stack =
70*b725ae77Skettenis      (unsigned long) &stack_ptr + sizeof(stack_ptr) + sizeof(end_of_stack) - 1;
71*b725ae77Skettenis 
72*b725ae77Skettenis    gdb_char_test   = gdb_struct1_test.c = (char)   ((long) parm[1] & 0xff);
73*b725ae77Skettenis    gdb_short_test  = gdb_struct1_test.s = (short)  ((long) parm[2] & 0xffff);
74*b725ae77Skettenis    gdb_long_test   = gdb_struct1_test.l = (long)   ((long) parm[3] & 0xffffffff);
75*b725ae77Skettenis    gdb_union1_test.l = (long) parm[4];
76*b725ae77Skettenis    gdb_arr_test[0] = gdb_struct1_test.arr[0] = (char) ((long) parm[1] & 0xff);
77*b725ae77Skettenis    gdb_arr_test[1] = gdb_struct1_test.arr[1] = (char) ((long) parm[2] & 0xff);
78*b725ae77Skettenis    gdb_arr_test[2] = gdb_struct1_test.arr[2] = (char) ((long) parm[3] & 0xff);
79*b725ae77Skettenis    gdb_arr_test[3] = gdb_struct1_test.arr[3] = (char) ((long) parm[4] & 0xff);
80*b725ae77Skettenis    gdb_arr_test[4] = gdb_struct1_test.arr[4] = (char) ((long) parm[5] & 0xff);
81*b725ae77Skettenis    gdb_arr_test[5] = gdb_struct1_test.arr[5] = (char) ((long) parm[6] & 0xff);
82*b725ae77Skettenis    gdb_struct1_test.bfield = 144;
83*b725ae77Skettenis    gdb_struct1_test.next = &gdb_struct2_test;
84*b725ae77Skettenis    gdb_structp_test      = &gdb_struct1_test;
85*b725ae77Skettenis    gdb_structpp_test     = &gdb_structp_test;
86*b725ae77Skettenis 
87*b725ae77Skettenis    gdb_recursion_test (3, (long) parm[1], (long) parm[2], (long) parm[3],
88*b725ae77Skettenis 		       (long) parm[4], (long) parm[5], (long) parm[6]);
89*b725ae77Skettenis 
90*b725ae77Skettenis    gdb_char_test = gdb_short_test = gdb_long_test = 0;
91*b725ae77Skettenis    gdb_structp_test  = (void *) 0;
92*b725ae77Skettenis    gdb_structpp_test = (void *) 0;
93*b725ae77Skettenis    memset ((char *) &gdb_struct1_test, 0, sizeof (gdb_struct1_test));
94*b725ae77Skettenis    memset ((char *) &gdb_struct2_test, 0, sizeof (gdb_struct2_test));
95*b725ae77Skettenis    local_static_sizeof = 0;
96*b725ae77Skettenis    local_static = 0;
97*b725ae77Skettenis    return ( (unsigned long) 0 );
98*b725ae77Skettenis }
99*b725ae77Skettenis 
gdb_asm_test(void)100*b725ae77Skettenis static void gdb_asm_test (void)
101*b725ae77Skettenis {
102*b725ae77Skettenis }
103*b725ae77Skettenis 
begin()104*b725ae77Skettenis static void begin ()	/* called before anything else */
105*b725ae77Skettenis {
106*b725ae77Skettenis }
107*b725ae77Skettenis 
end()108*b725ae77Skettenis static void end ()	/* called after everything else */
109*b725ae77Skettenis {
110*b725ae77Skettenis }
111*b725ae77Skettenis 
112*b725ae77Skettenis int
main(argc,argv,envp)113*b725ae77Skettenis main (argc, argv, envp)
114*b725ae77Skettenis      int argc;
115*b725ae77Skettenis      char *argv[], **envp;
116*b725ae77Skettenis {
117*b725ae77Skettenis   int i;
118*b725ae77Skettenis   unsigned long myparms[10];
119*b725ae77Skettenis 
120*b725ae77Skettenis #ifdef usestubs
121*b725ae77Skettenis   set_debug_traps ();
122*b725ae77Skettenis   breakpoint ();
123*b725ae77Skettenis #endif
124*b725ae77Skettenis 
125*b725ae77Skettenis   begin ();
126*b725ae77Skettenis   for (i = 0; i < sizeof (myparms) / sizeof (myparms[0]); i++)
127*b725ae77Skettenis     myparms[i] = i;
128*b725ae77Skettenis 
129*b725ae77Skettenis   gdb_c_test (&myparms[0]);
130*b725ae77Skettenis 
131*b725ae77Skettenis   end ();
132*b725ae77Skettenis   return 0;
133*b725ae77Skettenis }
134*b725ae77Skettenis 
135