OSDN Git Service

modified: utilsrc/src/Admin/Makefile
[eos/others.git] / utilsrc / srcX86MAC64 / Admin / gdb-7.7.1 / gdb / testsuite / gdb.trace / actions.c
1 /* This testcase is part of GDB, the GNU debugger.
2
3    Copyright 1998-2014 Free Software Foundation, Inc.
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18 /*
19  * Test program for trace action commands
20  */
21
22 #include <string.h>
23
24 static char   gdb_char_test;
25 static short  gdb_short_test;
26 static long   gdb_long_test;
27 static char   gdb_arr_test[25];
28 static struct GDB_STRUCT_TEST
29 {
30   char   c;
31   short  s;
32   long   l;
33   int    bfield : 11;   /* collect bitfield */
34   char   arr[25];
35   struct GDB_STRUCT_TEST *next;
36 } gdb_struct1_test, gdb_struct2_test, *gdb_structp_test, **gdb_structpp_test;
37
38 static union GDB_UNION_TEST
39 {
40   char   c;
41   short  s;
42   long   l;
43   int    bfield : 11;   /* collect bitfield */
44   char   arr[4];
45   union GDB_UNION_TEST *next;
46 } gdb_union1_test;
47
48 void gdb_recursion_test (int, int, int, int,  int,  int,  int);
49
50 void gdb_recursion_test (int depth, 
51                          int q1, 
52                          int q2, 
53                          int q3, 
54                          int q4, 
55                          int q5, 
56                          int q6)
57 {       /* gdb_recursion_test line 0 */
58   int q = q1;                                           /* gdbtestline 1 */
59
60   q1 = q2;                                              /* gdbtestline 2 */
61   q2 = q3;                                              /* gdbtestline 3 */
62   q3 = q4;                                              /* gdbtestline 4 */
63   q4 = q5;                                              /* gdbtestline 5 */
64   q5 = q6;                                              /* gdbtestline 6 */
65   q6 = q;                                               /* gdbtestline 7 */
66   if (depth--)                                          /* gdbtestline 8 */
67     gdb_recursion_test (depth, q1, q2, q3, q4, q5, q6); /* gdbtestline 9 */
68 }
69
70
71 unsigned long   gdb_c_test( unsigned long *parm )
72
73 {
74    char *p = "gdb_c_test";
75    char *ridiculously_long_variable_name_with_equally_long_string_assignment;
76    register long local_reg = 7;
77    static unsigned long local_static, local_static_sizeof;
78    long local_long;
79    unsigned long *stack_ptr;
80    unsigned long end_of_stack;
81
82    ridiculously_long_variable_name_with_equally_long_string_assignment = 
83      "ridiculously long variable name with equally long string assignment";
84    local_static = 9;
85    local_static_sizeof = sizeof (struct GDB_STRUCT_TEST);
86    local_long = local_reg + 1;
87    stack_ptr  = (unsigned long *) &local_long;
88    end_of_stack = 
89      (unsigned long) &stack_ptr + sizeof(stack_ptr) + sizeof(end_of_stack) - 1;
90
91    gdb_char_test   = gdb_struct1_test.c = (char)   ((long) parm[1] & 0xff);
92    gdb_short_test  = gdb_struct1_test.s = (short)  ((long) parm[2] & 0xffff);
93    gdb_long_test   = gdb_struct1_test.l = (long)   ((long) parm[3] & 0xffffffff);
94    gdb_union1_test.l = (long) parm[4];
95    gdb_arr_test[0] = gdb_struct1_test.arr[0] = (char) ((long) parm[1] & 0xff);
96    gdb_arr_test[1] = gdb_struct1_test.arr[1] = (char) ((long) parm[2] & 0xff);
97    gdb_arr_test[2] = gdb_struct1_test.arr[2] = (char) ((long) parm[3] & 0xff);
98    gdb_arr_test[3] = gdb_struct1_test.arr[3] = (char) ((long) parm[4] & 0xff);
99    gdb_arr_test[4] = gdb_struct1_test.arr[4] = (char) ((long) parm[5] & 0xff);
100    gdb_arr_test[5] = gdb_struct1_test.arr[5] = (char) ((long) parm[6] & 0xff);
101    gdb_struct1_test.bfield = 144;
102    gdb_struct1_test.next = &gdb_struct2_test;
103    gdb_structp_test      = &gdb_struct1_test;
104    gdb_structpp_test     = &gdb_structp_test;
105
106    gdb_recursion_test (3, (long) parm[1], (long) parm[2], (long) parm[3],
107                        (long) parm[4], (long) parm[5], (long) parm[6]);
108
109    gdb_char_test = gdb_short_test = gdb_long_test = 0;
110    gdb_structp_test  = (void *) 0;
111    gdb_structpp_test = (void *) 0;
112    memset ((char *) &gdb_struct1_test, 0, sizeof (gdb_struct1_test));
113    memset ((char *) &gdb_struct2_test, 0, sizeof (gdb_struct2_test));
114    local_static_sizeof = 0;
115    local_static = 0;
116    return ( (unsigned long) 0 );
117 }
118
119 static void gdb_asm_test (void)
120 {
121 }
122
123 static void begin ()    /* called before anything else */
124 {
125 }
126
127 static void end ()      /* called after everything else */
128 {
129 }
130
131 int
132 main (argc, argv, envp)
133      int argc;
134      char *argv[], **envp;
135 {
136   int i;
137   unsigned long myparms[10];
138
139   begin ();
140   for (i = 0; i < sizeof (myparms) / sizeof (myparms[0]); i++)
141     myparms[i] = i;
142
143   gdb_c_test (&myparms[0]);
144
145   end ();
146   return 0;
147 }
148