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