gdb.base/structs.c (main): Don't run forever.
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / structs.c
1 /* This testcase is part of GDB, the GNU debugger.
2
3 Copyright 1996-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 /* Useful abreviations. */
19 typedef void t;
20 typedef char tc;
21 typedef short ts;
22 typedef int ti;
23 typedef long tl;
24 typedef long long tll;
25 typedef float tf;
26 typedef double td;
27 typedef long double tld;
28
29 /* Force the type of each field. */
30 #ifndef tA
31 typedef t tA;
32 #endif
33 #ifndef tB
34 typedef tA tB;
35 #endif
36 #ifndef tC
37 typedef tB tC;
38 #endif
39 #ifndef tD
40 typedef tC tD;
41 #endif
42 #ifndef tE
43 typedef tD tE;
44 #endif
45 #ifndef tF
46 typedef tE tF;
47 #endif
48 #ifndef tG
49 typedef tF tG;
50 #endif
51 #ifndef tH
52 typedef tG tH;
53 #endif
54 #ifndef tI
55 typedef tH tI;
56 #endif
57 #ifndef tJ
58 typedef tI tJ;
59 #endif
60 #ifndef tK
61 typedef tJ tK;
62 #endif
63 #ifndef tL
64 typedef tK tL;
65 #endif
66 #ifndef tM
67 typedef tL tM;
68 #endif
69 #ifndef tN
70 typedef tM tN;
71 #endif
72 #ifndef tO
73 typedef tN tO;
74 #endif
75 #ifndef tP
76 typedef tO tP;
77 #endif
78 #ifndef tQ
79 typedef tP tQ;
80 #endif
81 #ifndef tR
82 typedef tQ tR;
83 #endif
84
85 struct struct1 {tA a;};
86 struct struct2 {tA a; tB b;};
87 struct struct3 {tA a; tB b; tC c; };
88 struct struct4 {tA a; tB b; tC c; tD d; };
89 struct struct5 {tA a; tB b; tC c; tD d; tE e; };
90 struct struct6 {tA a; tB b; tC c; tD d; tE e; tF f; };
91 struct struct7 {tA a; tB b; tC c; tD d; tE e; tF f; tG g; };
92 struct struct8 {tA a; tB b; tC c; tD d; tE e; tF f; tG g; tH h; };
93 struct struct9 {tA a; tB b; tC c; tD d; tE e; tF f; tG g; tH h; tI i; };
94 struct struct10 {tA a; tB b; tC c; tD d; tE e; tF f; tG g; tH h; tI i; tJ j; };
95 struct struct11 {tA a; tB b; tC c; tD d; tE e; tF f; tG g; tH h; tI i; tJ j; tK k; };
96 struct struct12 {tA a; tB b; tC c; tD d; tE e; tF f; tG g; tH h; tI i; tJ j; tK k; tL l; };
97 struct struct13 {tA a; tB b; tC c; tD d; tE e; tF f; tG g; tH h; tI i; tJ j; tK k; tL l; tM m; };
98 struct struct14 {tA a; tB b; tC c; tD d; tE e; tF f; tG g; tH h; tI i; tJ j; tK k; tL l; tM m; tN n; };
99 struct struct15 {tA a; tB b; tC c; tD d; tE e; tF f; tG g; tH h; tI i; tJ j; tK k; tL l; tM m; tN n; tO o; };
100 struct struct16 {tA a; tB b; tC c; tD d; tE e; tF f; tG g; tH h; tI i; tJ j; tK k; tL l; tM m; tN n; tO o; tP p; };
101 struct struct17 {tA a; tB b; tC c; tD d; tE e; tF f; tG g; tH h; tI i; tJ j; tK k; tL l; tM m; tN n; tO o; tP p; tQ q; };
102 struct struct18 {tA a; tB b; tC c; tD d; tE e; tF f; tG g; tH h; tI i; tJ j; tK k; tL l; tM m; tN n; tO o; tP p; tQ q; tR r; };
103
104 struct struct1 foo1 = {'1'}, L1;
105 struct struct2 foo2 = {'a','2'}, L2;
106 struct struct3 foo3 = {'1','b','3'}, L3;
107 struct struct4 foo4 = {'a','2','c','4'}, L4;
108 struct struct5 foo5 = {'1','b','3','d','5'}, L5;
109 struct struct6 foo6 = {'a','2','c','4','e','6'}, L6;
110 struct struct7 foo7 = {'1','b','3','d','5','f','7'}, L7;
111 struct struct8 foo8 = {'a','2','c','4','e','6','g','8'}, L8;
112 struct struct9 foo9 = {'1','b','3','d','5','f','7','h','9'}, L9;
113 struct struct10 foo10 = {'a','2','c','4','e','6','g','8','i','A'}, L10;
114 struct struct11 foo11 = {'1','b','3','d','5','f','7','h','9','j','B'}, L11;
115 struct struct12 foo12 = {'a','2','c','4','e','6','g','8','i','A','k','C'}, L12;
116 struct struct13 foo13 = {'1','b','3','d','5','f','7','h','9','j','B','l','D'}, L13;
117 struct struct14 foo14 = {'a','2','c','4','e','6','g','8','i','A','k','C','m','E'}, L14;
118 struct struct15 foo15 = {'1','b','3','d','5','f','7','h','9','j','B','l','D','n','F'}, L15;
119 struct struct16 foo16 = {'a','2','c','4','e','6','g','8','i','A','k','C','m','E','o','G'}, L16;
120 struct struct17 foo17 = {'1','b','3','d','5','f','7','h','9','j','B','l','D','n','F','p','H'}, L17;
121 struct struct18 foo18 = {'a','2','c','4','e','6','g','8','i','A','k','C','m','E','o','G','q','I'}, L18;
122
123 struct struct1 fun1()
124 {
125 return foo1;
126 }
127 struct struct2 fun2()
128 {
129 return foo2;
130 }
131 struct struct3 fun3()
132 {
133 return foo3;
134 }
135 struct struct4 fun4()
136 {
137 return foo4;
138 }
139 struct struct5 fun5()
140 {
141 return foo5;
142 }
143 struct struct6 fun6()
144 {
145 return foo6;
146 }
147 struct struct7 fun7()
148 {
149 return foo7;
150 }
151 struct struct8 fun8()
152 {
153 return foo8;
154 }
155 struct struct9 fun9()
156 {
157 return foo9;
158 }
159 struct struct10 fun10()
160 {
161 return foo10;
162 }
163 struct struct11 fun11()
164 {
165 return foo11;
166 }
167 struct struct12 fun12()
168 {
169 return foo12;
170 }
171 struct struct13 fun13()
172 {
173 return foo13;
174 }
175 struct struct14 fun14()
176 {
177 return foo14;
178 }
179 struct struct15 fun15()
180 {
181 return foo15;
182 }
183 struct struct16 fun16()
184 {
185 return foo16;
186 }
187 struct struct17 fun17()
188 {
189 return foo17;
190 }
191 struct struct18 fun18()
192 {
193 return foo18;
194 }
195
196 #ifdef PROTOTYPES
197 void Fun1(struct struct1 foo1)
198 #else
199 void Fun1(foo1)
200 struct struct1 foo1;
201 #endif
202 {
203 L1 = foo1;
204 }
205 #ifdef PROTOTYPES
206 void Fun2(struct struct2 foo2)
207 #else
208 void Fun2(foo2)
209 struct struct2 foo2;
210 #endif
211 {
212 L2 = foo2;
213 }
214 #ifdef PROTOTYPES
215 void Fun3(struct struct3 foo3)
216 #else
217 void Fun3(foo3)
218 struct struct3 foo3;
219 #endif
220 {
221 L3 = foo3;
222 }
223 #ifdef PROTOTYPES
224 void Fun4(struct struct4 foo4)
225 #else
226 void Fun4(foo4)
227 struct struct4 foo4;
228 #endif
229 {
230 L4 = foo4;
231 }
232 #ifdef PROTOTYPES
233 void Fun5(struct struct5 foo5)
234 #else
235 void Fun5(foo5)
236 struct struct5 foo5;
237 #endif
238 {
239 L5 = foo5;
240 }
241 #ifdef PROTOTYPES
242 void Fun6(struct struct6 foo6)
243 #else
244 void Fun6(foo6)
245 struct struct6 foo6;
246 #endif
247 {
248 L6 = foo6;
249 }
250 #ifdef PROTOTYPES
251 void Fun7(struct struct7 foo7)
252 #else
253 void Fun7(foo7)
254 struct struct7 foo7;
255 #endif
256 {
257 L7 = foo7;
258 }
259 #ifdef PROTOTYPES
260 void Fun8(struct struct8 foo8)
261 #else
262 void Fun8(foo8)
263 struct struct8 foo8;
264 #endif
265 {
266 L8 = foo8;
267 }
268 #ifdef PROTOTYPES
269 void Fun9(struct struct9 foo9)
270 #else
271 void Fun9(foo9)
272 struct struct9 foo9;
273 #endif
274 {
275 L9 = foo9;
276 }
277 #ifdef PROTOTYPES
278 void Fun10(struct struct10 foo10)
279 #else
280 void Fun10(foo10)
281 struct struct10 foo10;
282 #endif
283 {
284 L10 = foo10;
285 }
286 #ifdef PROTOTYPES
287 void Fun11(struct struct11 foo11)
288 #else
289 void Fun11(foo11)
290 struct struct11 foo11;
291 #endif
292 {
293 L11 = foo11;
294 }
295 #ifdef PROTOTYPES
296 void Fun12(struct struct12 foo12)
297 #else
298 void Fun12(foo12)
299 struct struct12 foo12;
300 #endif
301 {
302 L12 = foo12;
303 }
304 #ifdef PROTOTYPES
305 void Fun13(struct struct13 foo13)
306 #else
307 void Fun13(foo13)
308 struct struct13 foo13;
309 #endif
310 {
311 L13 = foo13;
312 }
313 #ifdef PROTOTYPES
314 void Fun14(struct struct14 foo14)
315 #else
316 void Fun14(foo14)
317 struct struct14 foo14;
318 #endif
319 {
320 L14 = foo14;
321 }
322 #ifdef PROTOTYPES
323 void Fun15(struct struct15 foo15)
324 #else
325 void Fun15(foo15)
326 struct struct15 foo15;
327 #endif
328 {
329 L15 = foo15;
330 }
331 #ifdef PROTOTYPES
332 void Fun16(struct struct16 foo16)
333 #else
334 void Fun16(foo16)
335 struct struct16 foo16;
336 #endif
337 {
338 L16 = foo16;
339 }
340 #ifdef PROTOTYPES
341 void Fun17(struct struct17 foo17)
342 #else
343 void Fun17(foo17)
344 struct struct17 foo17;
345 #endif
346 {
347 L17 = foo17;
348 }
349 #ifdef PROTOTYPES
350 void Fun18(struct struct18 foo18)
351 #else
352 void Fun18(foo18)
353 struct struct18 foo18;
354 #endif
355 {
356 L18 = foo18;
357 }
358
359 zed ()
360 {
361
362 L1.a = L2.a = L3.a = L4.a = L5.a = L6.a = L7.a = L8.a = L9.a = L10.a = L11.a = L12.a = L13.a = L14.a = L15.a = L16.a = L17.a = L18.a = 'Z';
363
364 L2.b = L3.b = L4.b = L5.b = L6.b = L7.b = L8.b = L9.b = L10.b = L11.b = L12.b = L13.b = L14.b = L15.b = L16.b = L17.b = L18.b = 'Z';
365
366 L3.c = L4.c = L5.c = L6.c = L7.c = L8.c = L9.c = L10.c = L11.c = L12.c = L13.c = L14.c = L15.c = L16.c = L17.c = L18.c = 'Z';
367
368 L4.d = L5.d = L6.d = L7.d = L8.d = L9.d = L10.d = L11.d = L12.d = L13.d = L14.d = L15.d = L16.d = L17.d = L18.d = 'Z';
369
370 L5.e = L6.e = L7.e = L8.e = L9.e = L10.e = L11.e = L12.e = L13.e = L14.e = L15.e = L16.e = L17.e = L18.e = 'Z';
371
372 L6.f = L7.f = L8.f = L9.f = L10.f = L11.f = L12.f = L13.f = L14.f = L15.f = L16.f = L17.f = L18.f = 'Z';
373
374 L7.g = L8.g = L9.g = L10.g = L11.g = L12.g = L13.g = L14.g = L15.g = L16.g = L17.g = L18.g = 'Z';
375
376 L8.h = L9.h = L10.h = L11.h = L12.h = L13.h = L14.h = L15.h = L16.h = L17.h = L18.h = 'Z';
377
378 L9.i = L10.i = L11.i = L12.i = L13.i = L14.i = L15.i = L16.i = L17.i = L18.i = 'Z';
379
380 L10.j = L11.j = L12.j = L13.j = L14.j = L15.j = L16.j = L17.j = L18.j = 'Z';
381
382 L11.k = L12.k = L13.k = L14.k = L15.k = L16.k = L17.k = L18.k = 'Z';
383
384 L12.l = L13.l = L14.l = L15.l = L16.l = L17.l = L18.l = 'Z';
385
386 L13.m = L14.m = L15.m = L16.m = L17.m = L18.m = 'Z';
387
388 L14.n = L15.n = L16.n = L17.n = L18.n = 'Z';
389
390 L15.o = L16.o = L17.o = L18.o = 'Z';
391
392 L16.p = L17.p = L18.p = 'Z';
393
394 L17.q = L18.q = 'Z';
395
396 L18.r = 'Z';
397 }
398
399 static struct { char c; } chartest[256];
400
401 int main()
402 {
403 int i;
404
405 for (i = 0; i < 256; i++)
406 chartest[i].c = i;
407 chartest[0].c = 0; /* chartest-done */
408
409 Fun1(foo1);
410 Fun2(foo2);
411 Fun3(foo3);
412 Fun4(foo4);
413 Fun5(foo5);
414 Fun6(foo6);
415 Fun7(foo7);
416 Fun8(foo8);
417 Fun9(foo9);
418 Fun10(foo10);
419 Fun11(foo11);
420 Fun12(foo12);
421 Fun13(foo13);
422 Fun14(foo14);
423 Fun15(foo15);
424 Fun16(foo16);
425 Fun17(foo17);
426 Fun18(foo18);
427
428 /* An (almost-)infinite loop that first clears all the variables and then
429 calls each function. This "hack" is to make testing random
430 functions easier - "advance funN" is guaranteed to have always
431 been preceded by a global variable clearing zed call.
432 We don't let this run forever in case gdb crashes while testing,
433 we don't want to be left eating all cpu on the user's system. */
434
435 for (i = 0; i < 1000000; ++i)
436 {
437 zed ();
438 L1 = fun1();
439 L2 = fun2();
440 L3 = fun3();
441 L4 = fun4();
442 L5 = fun5();
443 L6 = fun6();
444 L7 = fun7();
445 L8 = fun8();
446 L9 = fun9();
447 L10 = fun10();
448 L11 = fun11();
449 L12 = fun12();
450 L13 = fun13();
451 L14 = fun14();
452 L15 = fun15();
453 L16 = fun16();
454 L17 = fun17();
455 L18 = fun18();
456 }
457
458 return 0;
459 }
This page took 0.041154 seconds and 5 git commands to generate.