• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt/router/gdb/gdb/testsuite/gdb.trace/
1/*
2 * Test program for trace collection
3 */
4
5/*
6 * Typedefs
7 */
8
9typedef struct TEST_STRUCT {
10  char   memberc;
11  int    memberi;
12  float  memberf;
13  double memberd;
14} test_struct;
15
16typedef int test_array [4];
17
18/*
19 * Global variables to be collected
20 */
21
22char         globalc;
23int          globali;
24float        globalf;
25double       globald;
26test_struct  globalstruct;
27test_struct *globalp;
28int          globalarr[16];
29
30/*
31 * Additional globals used in arithmetic tests
32 */
33
34signed char  c0,  c1,  c2,  c3,  c4,  c5,  c6,  c7,
35             c8,  c9,  c10, c11, c12, c13, c14, c15, cminus;
36signed short s0,  s1,  s2,  s3,  s4,  s5,  s6,  s7,
37             s8,  s9,  s10, s11, s12, s13, s14, s15, sminus;
38signed long  l0,  l1,  l2,  l3,  l4,  l5,  l6,  l7,
39             l8,  l9,  l10, l11, l12, l13, l14, l15, lminus;
40
41
42/*
43 * Test functions
44 */
45
46static void begin ()	/* called before anything else */
47{
48}
49
50static void end ()	/* called after everything else */
51{
52}
53
54/* Test collecting args. */
55int args_test_func (argc, argi, argf, argd, argstruct, argarray)
56     char   argc;
57     int    argi;
58     float  argf;
59     double argd;
60     test_struct argstruct;
61     int argarray[4];
62{
63  int i;
64
65  i =  (int) argc + argi + argf + argd + argstruct.memberi + argarray[1];
66
67  return i;
68}
69
70/* Test collecting struct args. */
71int argstruct_test_func (argstruct)
72     test_struct argstruct;
73{
74  return (int) argstruct.memberc + argstruct.memberi +
75                 argstruct.memberf + argstruct.memberd;
76}
77
78/* Test collecting array args. */
79int argarray_test_func (argarray)
80     int argarray[4];
81{
82  return (int) argarray[0] + argarray[1] + argarray[2] + argarray[3];
83}
84
85
86
87int local_test_func ()			/* test collecting locals */
88{
89  char        locc  = 11;
90  int         loci  = 12;
91  float       locf  = 13.3;
92  double      locd  = 14.4;
93  test_struct locst;
94  int         locar[4];
95  int         i;
96
97  locst.memberc  = 15;
98  locst.memberi  = 16;
99  locst.memberf  = 17.7;
100  locst.memberd  = 18.8;
101  locar[0] = 121;
102  locar[1] = 122;
103  locar[2] = 123;
104  locar[3] = 124;
105
106  i = /* Set_Tracepoint_Here */
107    (int) locc + loci + locf + locd + locst.memberi + locar[1];
108
109  return i;
110}
111
112int reglocal_test_func ()		/* test collecting register locals */
113{
114  register char        locc = 11;
115  register int         loci = 12;
116  register float       locf = 13.3;
117  register double      locd = 14.4;
118  register test_struct locst;
119  register int         locar[4];
120  int                  i;
121
122  locst.memberc  = 15;
123  locst.memberi  = 16;
124  locst.memberf  = 17.7;
125  locst.memberd  = 18.8;
126  locar[0] = 121;
127  locar[1] = 122;
128  locar[2] = 123;
129  locar[3] = 124;
130
131  i = /* Set_Tracepoint_Here */
132    (int) locc + loci + locf + locd + locst.memberi + locar[1];
133
134  return i;
135}
136
137int statlocal_test_func ()		/* test collecting static locals */
138{
139  static   char        locc;
140  static   int         loci;
141  static   float       locf;
142  static   double      locd;
143  static   test_struct locst;
144  static   int         locar[4];
145  int                  i;
146
147  locc = 11;
148  loci = 12;
149  locf = 13.3;
150  locd = 14.4;
151  locst.memberc = 15;
152  locst.memberi = 16;
153  locst.memberf = 17.7;
154  locst.memberd = 18.8;
155  locar[0] = 121;
156  locar[1] = 122;
157  locar[2] = 123;
158  locar[3] = 124;
159
160  i = /* Set_Tracepoint_Here */
161    (int) locc + loci + locf + locd + locst.memberi + locar[1];
162
163  /* Set static locals back to zero so collected values are clearly special. */
164  locc = 0;
165  loci = 0;
166  locf = 0;
167  locd = 0;
168  locst.memberc = 0;
169  locst.memberi = 0;
170  locst.memberf = 0;
171  locst.memberd = 0;
172  locar[0] = 0;
173  locar[1] = 0;
174  locar[2] = 0;
175  locar[3] = 0;
176
177  return i;
178}
179
180
181int globals_test_func ()
182{
183  int i = 0;
184
185  i += globalc + globali + globalf + globald;
186  i += globalstruct.memberc + globalstruct.memberi;
187  i += globalstruct.memberf + globalstruct.memberd;
188  i += globalarr[1];
189
190  return i;	/* Set_Tracepoint_Here */
191}
192
193int
194main (argc, argv, envp)
195     int argc;
196     char *argv[], **envp;
197{
198  int         i = 0;
199  test_struct mystruct;
200  int         myarray[4];
201
202#ifdef usestubs
203  set_debug_traps ();
204  breakpoint ();
205#endif
206
207  begin ();
208  /* Assign collectable values to global variables. */
209  l0  = s0  = c0  = 0;     l1  = s1  = c1  = 1;
210  l2  = s2  = c2  = 2;     l3  = s3  = c3  = 3;
211  l4  = s4  = c4  = 4;     l5  = s5  = c5  = 5;
212  l6  = s6  = c6  = 6;     l7  = s7  = c7  = 7;
213  l8  = s8  = c8  = 8;     l9  = s9  = c9  = 9;
214  l10 = s10 = c10 = 10;    l11 = s11 = c11 = 11;
215  l12 = s12 = c12 = 12;    l13 = s13 = c13 = 13;
216  l14 = s14 = c14 = 14;    l15 = s15 = c15 = 15;
217  lminus = sminus = cminus = -2;
218  globalc = 71;
219  globali = 72;
220  globalf = 73.3;
221  globald = 74.4;
222  globalstruct.memberc = 81;
223  globalstruct.memberi = 82;
224  globalstruct.memberf = 83.3;
225  globalstruct.memberd = 84.4;
226  globalp = &globalstruct;
227
228  for (i = 0; i < 15; i++)
229    globalarr[i] = i;
230
231  mystruct.memberc = 101;
232  mystruct.memberi = 102;
233  mystruct.memberf = 103.3;
234  mystruct.memberd = 104.4;
235  myarray[0] = 111;
236  myarray[1] = 112;
237  myarray[2] = 113;
238  myarray[3] = 114;
239
240  /* Call test functions, so they can be traced and data collected.  */
241  i = 0;
242  i += args_test_func (1, 2, 3.3, 4.4, mystruct, myarray);
243  i += argstruct_test_func (mystruct);
244  i += argarray_test_func (myarray);
245  i += local_test_func ();
246  i += reglocal_test_func ();
247  i += statlocal_test_func ();
248  i += globals_test_func ();
249
250  /* Values of globals at end of test should be different from
251     values that they had when trace data was captured.  */
252
253  l0  = s0  = c0  = 0;     l1  = s1  = c1  = 0;
254  l2  = s2  = c2  = 0;     l3  = s3  = c3  = 0;
255  l4  = s4  = c4  = 0;     l5  = s5  = c5  = 0;
256  l6  = s6  = c6  = 0;     l7  = s7  = c7  = 0;
257  l8  = s8  = c8  = 0;     l9  = s9  = c9  = 0;
258  l10 = s10 = c10 = 0;     l11 = s11 = c11 = 0;
259  l12 = s12 = c12 = 0;     l13 = s13 = c13 = 0;
260  l14 = s14 = c14 = 0;     l15 = s15 = c15 = 0;
261  lminus = sminus = cminus = 0;
262
263  /* Set 'em back to zero, so that the collected values will be
264     distinctly different from the "realtime" (end of test) values.  */
265
266  globalc = 0;
267  globali = 0;
268  globalf = 0;
269  globald = 0;
270  globalstruct.memberc = 0;
271  globalstruct.memberi = 0;
272  globalstruct.memberf = 0;
273  globalstruct.memberd = 0;
274  globalp = 0;
275  for (i = 0; i < 15; i++)
276    globalarr[i] = 0;
277
278  end ();
279  return 0;
280}
281