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