gdb/testsuite/
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.trace / collection.c
CommitLineData
c906108c
SS
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;
2c58c0a9 96 struct localstruct {} locdefst;
c906108c
SS
97
98 locst.memberc = 15;
99 locst.memberi = 16;
100 locst.memberf = 17.7;
101 locst.memberd = 18.8;
102 locar[0] = 121;
103 locar[1] = 122;
104 locar[2] = 123;
105 locar[3] = 124;
106
107 i = /* Set_Tracepoint_Here */
108 (int) locc + loci + locf + locd + locst.memberi + locar[1];
109
110 return i;
111}
112
113int reglocal_test_func () /* test collecting register locals */
114{
115 register char locc = 11;
116 register int loci = 12;
117 register float locf = 13.3;
118 register double locd = 14.4;
119 register test_struct locst;
120 register int locar[4];
121 int i;
122
123 locst.memberc = 15;
124 locst.memberi = 16;
125 locst.memberf = 17.7;
126 locst.memberd = 18.8;
127 locar[0] = 121;
128 locar[1] = 122;
129 locar[2] = 123;
130 locar[3] = 124;
131
132 i = /* Set_Tracepoint_Here */
133 (int) locc + loci + locf + locd + locst.memberi + locar[1];
134
135 return i;
136}
137
138int statlocal_test_func () /* test collecting static locals */
139{
140 static char locc;
141 static int loci;
142 static float locf;
143 static double locd;
144 static test_struct locst;
145 static int locar[4];
146 int i;
147
148 locc = 11;
149 loci = 12;
150 locf = 13.3;
151 locd = 14.4;
152 locst.memberc = 15;
153 locst.memberi = 16;
154 locst.memberf = 17.7;
155 locst.memberd = 18.8;
156 locar[0] = 121;
157 locar[1] = 122;
158 locar[2] = 123;
159 locar[3] = 124;
160
161 i = /* Set_Tracepoint_Here */
162 (int) locc + loci + locf + locd + locst.memberi + locar[1];
163
164 /* Set static locals back to zero so collected values are clearly special. */
165 locc = 0;
166 loci = 0;
167 locf = 0;
168 locd = 0;
169 locst.memberc = 0;
170 locst.memberi = 0;
171 locst.memberf = 0;
172 locst.memberd = 0;
173 locar[0] = 0;
174 locar[1] = 0;
175 locar[2] = 0;
176 locar[3] = 0;
177
178 return i;
179}
180
181
182int globals_test_func ()
183{
184 int i = 0;
185
186 i += globalc + globali + globalf + globald;
187 i += globalstruct.memberc + globalstruct.memberi;
188 i += globalstruct.memberf + globalstruct.memberd;
189 i += globalarr[1];
190
191 return i; /* Set_Tracepoint_Here */
192}
193
194int
195main (argc, argv, envp)
196 int argc;
197 char *argv[], **envp;
198{
199 int i = 0;
200 test_struct mystruct;
201 int myarray[4];
202
203#ifdef usestubs
204 set_debug_traps ();
205 breakpoint ();
206#endif
207
208 begin ();
209 /* Assign collectable values to global variables. */
210 l0 = s0 = c0 = 0; l1 = s1 = c1 = 1;
211 l2 = s2 = c2 = 2; l3 = s3 = c3 = 3;
212 l4 = s4 = c4 = 4; l5 = s5 = c5 = 5;
213 l6 = s6 = c6 = 6; l7 = s7 = c7 = 7;
214 l8 = s8 = c8 = 8; l9 = s9 = c9 = 9;
215 l10 = s10 = c10 = 10; l11 = s11 = c11 = 11;
216 l12 = s12 = c12 = 12; l13 = s13 = c13 = 13;
217 l14 = s14 = c14 = 14; l15 = s15 = c15 = 15;
218 lminus = sminus = cminus = -2;
219 globalc = 71;
220 globali = 72;
221 globalf = 73.3;
222 globald = 74.4;
223 globalstruct.memberc = 81;
224 globalstruct.memberi = 82;
225 globalstruct.memberf = 83.3;
226 globalstruct.memberd = 84.4;
227 globalp = &globalstruct;
228
229 for (i = 0; i < 15; i++)
230 globalarr[i] = i;
231
232 mystruct.memberc = 101;
233 mystruct.memberi = 102;
234 mystruct.memberf = 103.3;
235 mystruct.memberd = 104.4;
236 myarray[0] = 111;
237 myarray[1] = 112;
238 myarray[2] = 113;
239 myarray[3] = 114;
240
241 /* Call test functions, so they can be traced and data collected. */
242 i = 0;
243 i += args_test_func (1, 2, 3.3, 4.4, mystruct, myarray);
244 i += argstruct_test_func (mystruct);
245 i += argarray_test_func (myarray);
246 i += local_test_func ();
247 i += reglocal_test_func ();
248 i += statlocal_test_func ();
249 i += globals_test_func ();
250
251 /* Values of globals at end of test should be different from
252 values that they had when trace data was captured. */
253
254 l0 = s0 = c0 = 0; l1 = s1 = c1 = 0;
255 l2 = s2 = c2 = 0; l3 = s3 = c3 = 0;
256 l4 = s4 = c4 = 0; l5 = s5 = c5 = 0;
257 l6 = s6 = c6 = 0; l7 = s7 = c7 = 0;
258 l8 = s8 = c8 = 0; l9 = s9 = c9 = 0;
259 l10 = s10 = c10 = 0; l11 = s11 = c11 = 0;
260 l12 = s12 = c12 = 0; l13 = s13 = c13 = 0;
261 l14 = s14 = c14 = 0; l15 = s15 = c15 = 0;
262 lminus = sminus = cminus = 0;
263
264 /* Set 'em back to zero, so that the collected values will be
265 distinctly different from the "realtime" (end of test) values. */
266
267 globalc = 0;
268 globali = 0;
269 globalf = 0;
270 globald = 0;
271 globalstruct.memberc = 0;
272 globalstruct.memberi = 0;
273 globalstruct.memberf = 0;
274 globalstruct.memberd = 0;
275 globalp = 0;
276 for (i = 0; i < 15; i++)
277 globalarr[i] = 0;
278
279 end ();
280 return 0;
281}
This page took 1.369232 seconds and 4 git commands to generate.