Imported Upstream version 1.1
[platform/upstream/libunwind.git] / tests / Lrs-race.c
1 /* libunwind - a platform-independent unwind library
2    Copyright (C) 2003-2005 Hewlett-Packard Co
3         Contributed by Paul Pluzhnikov <ppluzhnikov@google.com>
4
5 Permission is hereby granted, free of charge, to any person obtaining
6 a copy of this software and associated documentation files (the
7 "Software"), to deal in the Software without restriction, including
8 without limitation the rights to use, copy, modify, merge, publish,
9 distribute, sublicense, and/or sell copies of the Software, and to
10 permit persons to whom the Software is furnished to do so, subject to
11 the following conditions:
12
13 The above copyright notice and this permission notice shall be
14 included in all copies or substantial portions of the Software.
15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
23
24 /*  Verify that register state caches work under all caching policies
25     in a multi-threaded environment with a large number IPs */
26
27 #define UNW_LOCAL_ONLY
28 #include <libunwind.h>
29 #include "compiler.h"
30
31 #include <stdio.h>
32 #include <pthread.h>
33 #include <stdlib.h>
34
35 /* ITERS=1000, NTHREAD=10 caught some bugs in the past */
36 #ifndef ITERS 
37 #define ITERS 100
38 #endif
39
40 #ifndef NTHREAD
41 #define NTHREAD 2
42 #endif
43
44 int verbose;
45
46 void
47 foo_0 (void)
48 {
49   void *buf[20];
50   int n;
51
52   if ((n = unw_backtrace (buf, 20)) < 3)
53     abort ();
54 }
55
56 void
57 foo_1 (void)
58 {
59   void *buf[20];
60   int n;
61
62   if ((n = unw_backtrace (buf, 20)) < 3)
63     abort ();
64 }
65
66 void
67 foo_2 (void)
68 {
69   void *buf[20];
70   int n;
71
72   if ((n = unw_backtrace (buf, 20)) < 3)
73     abort ();
74 }
75
76 void
77 foo_3 (void)
78 {
79   void *buf[20];
80   int n;
81
82   if ((n = unw_backtrace (buf, 20)) < 3)
83     abort ();
84 }
85
86 void
87 foo_4 (void)
88 {
89   void *buf[20];
90   int n;
91
92   if ((n = unw_backtrace (buf, 20)) < 3)
93     abort ();
94 }
95
96 void
97 foo_5 (void)
98 {
99   void *buf[20];
100   int n;
101
102   if ((n = unw_backtrace (buf, 20)) < 3)
103     abort ();
104 }
105
106 void
107 foo_6 (void)
108 {
109   void *buf[20];
110   int n;
111
112   if ((n = unw_backtrace (buf, 20)) < 3)
113     abort ();
114 }
115
116 void
117 foo_7 (void)
118 {
119   void *buf[20];
120   int n;
121
122   if ((n = unw_backtrace (buf, 20)) < 3)
123     abort ();
124 }
125
126 void
127 foo_8 (void)
128 {
129   void *buf[20];
130   int n;
131
132   if ((n = unw_backtrace (buf, 20)) < 3)
133     abort ();
134 }
135
136 void
137 foo_9 (void)
138 {
139   void *buf[20];
140   int n;
141
142   if ((n = unw_backtrace (buf, 20)) < 3)
143     abort ();
144 }
145
146 void
147 foo_10 (void)
148 {
149   void *buf[20];
150   int n;
151
152   if ((n = unw_backtrace (buf, 20)) < 3)
153     abort ();
154 }
155
156 void
157 foo_11 (void)
158 {
159   void *buf[20];
160   int n;
161
162   if ((n = unw_backtrace (buf, 20)) < 3)
163     abort ();
164 }
165
166 void
167 foo_12 (void)
168 {
169   void *buf[20];
170   int n;
171
172   if ((n = unw_backtrace (buf, 20)) < 3)
173     abort ();
174 }
175
176 void
177 foo_13 (void)
178 {
179   void *buf[20];
180   int n;
181
182   if ((n = unw_backtrace (buf, 20)) < 3)
183     abort ();
184 }
185
186 void
187 foo_14 (void)
188 {
189   void *buf[20];
190   int n;
191
192   if ((n = unw_backtrace (buf, 20)) < 3)
193     abort ();
194 }
195
196 void
197 foo_15 (void)
198 {
199   void *buf[20];
200   int n;
201
202   if ((n = unw_backtrace (buf, 20)) < 3)
203     abort ();
204 }
205
206 void
207 foo_16 (void)
208 {
209   void *buf[20];
210   int n;
211
212   if ((n = unw_backtrace (buf, 20)) < 3)
213     abort ();
214 }
215
216 void
217 foo_17 (void)
218 {
219   void *buf[20];
220   int n;
221
222   if ((n = unw_backtrace (buf, 20)) < 3)
223     abort ();
224 }
225
226 void
227 foo_18 (void)
228 {
229   void *buf[20];
230   int n;
231
232   if ((n = unw_backtrace (buf, 20)) < 3)
233     abort ();
234 }
235
236 void
237 foo_19 (void)
238 {
239   void *buf[20];
240   int n;
241
242   if ((n = unw_backtrace (buf, 20)) < 3)
243     abort ();
244 }
245
246 void
247 foo_20 (void)
248 {
249   void *buf[20];
250   int n;
251
252   if ((n = unw_backtrace (buf, 20)) < 3)
253     abort ();
254 }
255
256 void
257 foo_21 (void)
258 {
259   void *buf[20];
260   int n;
261
262   if ((n = unw_backtrace (buf, 20)) < 3)
263     abort ();
264 }
265
266 void
267 foo_22 (void)
268 {
269   void *buf[20];
270   int n;
271
272   if ((n = unw_backtrace (buf, 20)) < 3)
273     abort ();
274 }
275
276 void
277 foo_23 (void)
278 {
279   void *buf[20];
280   int n;
281
282   if ((n = unw_backtrace (buf, 20)) < 3)
283     abort ();
284 }
285
286 void
287 foo_24 (void)
288 {
289   void *buf[20];
290   int n;
291
292   if ((n = unw_backtrace (buf, 20)) < 3)
293     abort ();
294 }
295
296 void
297 foo_25 (void)
298 {
299   void *buf[20];
300   int n;
301
302   if ((n = unw_backtrace (buf, 20)) < 3)
303     abort ();
304 }
305
306 void
307 foo_26 (void)
308 {
309   void *buf[20];
310   int n;
311
312   if ((n = unw_backtrace (buf, 20)) < 3)
313     abort ();
314 }
315
316 void
317 foo_27 (void)
318 {
319   void *buf[20];
320   int n;
321
322   if ((n = unw_backtrace (buf, 20)) < 3)
323     abort ();
324 }
325
326 void
327 foo_28 (void)
328 {
329   void *buf[20];
330   int n;
331
332   if ((n = unw_backtrace (buf, 20)) < 3)
333     abort ();
334 }
335
336 void
337 foo_29 (void)
338 {
339   void *buf[20];
340   int n;
341
342   if ((n = unw_backtrace (buf, 20)) < 3)
343     abort ();
344 }
345
346 void
347 foo_30 (void)
348 {
349   void *buf[20];
350   int n;
351
352   if ((n = unw_backtrace (buf, 20)) < 3)
353     abort ();
354 }
355
356 void
357 foo_31 (void)
358 {
359   void *buf[20];
360   int n;
361
362   if ((n = unw_backtrace (buf, 20)) < 3)
363     abort ();
364 }
365
366 void
367 foo_32 (void)
368 {
369   void *buf[20];
370   int n;
371
372   if ((n = unw_backtrace (buf, 20)) < 3)
373     abort ();
374 }
375
376 void
377 foo_33 (void)
378 {
379   void *buf[20];
380   int n;
381
382   if ((n = unw_backtrace (buf, 20)) < 3)
383     abort ();
384 }
385
386 void
387 foo_34 (void)
388 {
389   void *buf[20];
390   int n;
391
392   if ((n = unw_backtrace (buf, 20)) < 3)
393     abort ();
394 }
395
396 void
397 foo_35 (void)
398 {
399   void *buf[20];
400   int n;
401
402   if ((n = unw_backtrace (buf, 20)) < 3)
403     abort ();
404 }
405
406 void
407 foo_36 (void)
408 {
409   void *buf[20];
410   int n;
411
412   if ((n = unw_backtrace (buf, 20)) < 3)
413     abort ();
414 }
415
416 void
417 foo_37 (void)
418 {
419   void *buf[20];
420   int n;
421
422   if ((n = unw_backtrace (buf, 20)) < 3)
423     abort ();
424 }
425
426 void
427 foo_38 (void)
428 {
429   void *buf[20];
430   int n;
431
432   if ((n = unw_backtrace (buf, 20)) < 3)
433     abort ();
434 }
435
436 void
437 foo_39 (void)
438 {
439   void *buf[20];
440   int n;
441
442   if ((n = unw_backtrace (buf, 20)) < 3)
443     abort ();
444 }
445
446 void
447 foo_40 (void)
448 {
449   void *buf[20];
450   int n;
451
452   if ((n = unw_backtrace (buf, 20)) < 3)
453     abort ();
454 }
455
456 void
457 foo_41 (void)
458 {
459   void *buf[20];
460   int n;
461
462   if ((n = unw_backtrace (buf, 20)) < 3)
463     abort ();
464 }
465
466 void
467 foo_42 (void)
468 {
469   void *buf[20];
470   int n;
471
472   if ((n = unw_backtrace (buf, 20)) < 3)
473     abort ();
474 }
475
476 void
477 foo_43 (void)
478 {
479   void *buf[20];
480   int n;
481
482   if ((n = unw_backtrace (buf, 20)) < 3)
483     abort ();
484 }
485
486 void
487 foo_44 (void)
488 {
489   void *buf[20];
490   int n;
491
492   if ((n = unw_backtrace (buf, 20)) < 3)
493     abort ();
494 }
495
496 void
497 foo_45 (void)
498 {
499   void *buf[20];
500   int n;
501
502   if ((n = unw_backtrace (buf, 20)) < 3)
503     abort ();
504 }
505
506 void
507 foo_46 (void)
508 {
509   void *buf[20];
510   int n;
511
512   if ((n = unw_backtrace (buf, 20)) < 3)
513     abort ();
514 }
515
516 void
517 foo_47 (void)
518 {
519   void *buf[20];
520   int n;
521
522   if ((n = unw_backtrace (buf, 20)) < 3)
523     abort ();
524 }
525
526 void
527 foo_48 (void)
528 {
529   void *buf[20];
530   int n;
531
532   if ((n = unw_backtrace (buf, 20)) < 3)
533     abort ();
534 }
535
536 void
537 foo_49 (void)
538 {
539   void *buf[20];
540   int n;
541
542   if ((n = unw_backtrace (buf, 20)) < 3)
543     abort ();
544 }
545
546 void
547 foo_50 (void)
548 {
549   void *buf[20];
550   int n;
551
552   if ((n = unw_backtrace (buf, 20)) < 3)
553     abort ();
554 }
555
556 void
557 foo_51 (void)
558 {
559   void *buf[20];
560   int n;
561
562   if ((n = unw_backtrace (buf, 20)) < 3)
563     abort ();
564 }
565
566 void
567 foo_52 (void)
568 {
569   void *buf[20];
570   int n;
571
572   if ((n = unw_backtrace (buf, 20)) < 3)
573     abort ();
574 }
575
576 void
577 foo_53 (void)
578 {
579   void *buf[20];
580   int n;
581
582   if ((n = unw_backtrace (buf, 20)) < 3)
583     abort ();
584 }
585
586 void
587 foo_54 (void)
588 {
589   void *buf[20];
590   int n;
591
592   if ((n = unw_backtrace (buf, 20)) < 3)
593     abort ();
594 }
595
596 void
597 foo_55 (void)
598 {
599   void *buf[20];
600   int n;
601
602   if ((n = unw_backtrace (buf, 20)) < 3)
603     abort ();
604 }
605
606 void
607 foo_56 (void)
608 {
609   void *buf[20];
610   int n;
611
612   if ((n = unw_backtrace (buf, 20)) < 3)
613     abort ();
614 }
615
616 void
617 foo_57 (void)
618 {
619   void *buf[20];
620   int n;
621
622   if ((n = unw_backtrace (buf, 20)) < 3)
623     abort ();
624 }
625
626 void
627 foo_58 (void)
628 {
629   void *buf[20];
630   int n;
631
632   if ((n = unw_backtrace (buf, 20)) < 3)
633     abort ();
634 }
635
636 void
637 foo_59 (void)
638 {
639   void *buf[20];
640   int n;
641
642   if ((n = unw_backtrace (buf, 20)) < 3)
643     abort ();
644 }
645
646 void
647 foo_60 (void)
648 {
649   void *buf[20];
650   int n;
651
652   if ((n = unw_backtrace (buf, 20)) < 3)
653     abort ();
654 }
655
656 void
657 foo_61 (void)
658 {
659   void *buf[20];
660   int n;
661
662   if ((n = unw_backtrace (buf, 20)) < 3)
663     abort ();
664 }
665
666 void
667 foo_62 (void)
668 {
669   void *buf[20];
670   int n;
671
672   if ((n = unw_backtrace (buf, 20)) < 3)
673     abort ();
674 }
675
676 void
677 foo_63 (void)
678 {
679   void *buf[20];
680   int n;
681
682   if ((n = unw_backtrace (buf, 20)) < 3)
683     abort ();
684 }
685
686 void
687 foo_64 (void)
688 {
689   void *buf[20];
690   int n;
691
692   if ((n = unw_backtrace (buf, 20)) < 3)
693     abort ();
694 }
695
696 void
697 foo_65 (void)
698 {
699   void *buf[20];
700   int n;
701
702   if ((n = unw_backtrace (buf, 20)) < 3)
703     abort ();
704 }
705
706 void
707 foo_66 (void)
708 {
709   void *buf[20];
710   int n;
711
712   if ((n = unw_backtrace (buf, 20)) < 3)
713     abort ();
714 }
715
716 void
717 foo_67 (void)
718 {
719   void *buf[20];
720   int n;
721
722   if ((n = unw_backtrace (buf, 20)) < 3)
723     abort ();
724 }
725
726 void
727 foo_68 (void)
728 {
729   void *buf[20];
730   int n;
731
732   if ((n = unw_backtrace (buf, 20)) < 3)
733     abort ();
734 }
735
736 void
737 foo_69 (void)
738 {
739   void *buf[20];
740   int n;
741
742   if ((n = unw_backtrace (buf, 20)) < 3)
743     abort ();
744 }
745
746 void
747 foo_70 (void)
748 {
749   void *buf[20];
750   int n;
751
752   if ((n = unw_backtrace (buf, 20)) < 3)
753     abort ();
754 }
755
756 void
757 foo_71 (void)
758 {
759   void *buf[20];
760   int n;
761
762   if ((n = unw_backtrace (buf, 20)) < 3)
763     abort ();
764 }
765
766 void
767 foo_72 (void)
768 {
769   void *buf[20];
770   int n;
771
772   if ((n = unw_backtrace (buf, 20)) < 3)
773     abort ();
774 }
775
776 void
777 foo_73 (void)
778 {
779   void *buf[20];
780   int n;
781
782   if ((n = unw_backtrace (buf, 20)) < 3)
783     abort ();
784 }
785
786 void
787 foo_74 (void)
788 {
789   void *buf[20];
790   int n;
791
792   if ((n = unw_backtrace (buf, 20)) < 3)
793     abort ();
794 }
795
796 void
797 foo_75 (void)
798 {
799   void *buf[20];
800   int n;
801
802   if ((n = unw_backtrace (buf, 20)) < 3)
803     abort ();
804 }
805
806 void
807 foo_76 (void)
808 {
809   void *buf[20];
810   int n;
811
812   if ((n = unw_backtrace (buf, 20)) < 3)
813     abort ();
814 }
815
816 void
817 foo_77 (void)
818 {
819   void *buf[20];
820   int n;
821
822   if ((n = unw_backtrace (buf, 20)) < 3)
823     abort ();
824 }
825
826 void
827 foo_78 (void)
828 {
829   void *buf[20];
830   int n;
831
832   if ((n = unw_backtrace (buf, 20)) < 3)
833     abort ();
834 }
835
836 void
837 foo_79 (void)
838 {
839   void *buf[20];
840   int n;
841
842   if ((n = unw_backtrace (buf, 20)) < 3)
843     abort ();
844 }
845
846 void
847 foo_80 (void)
848 {
849   void *buf[20];
850   int n;
851
852   if ((n = unw_backtrace (buf, 20)) < 3)
853     abort ();
854 }
855
856 void
857 foo_81 (void)
858 {
859   void *buf[20];
860   int n;
861
862   if ((n = unw_backtrace (buf, 20)) < 3)
863     abort ();
864 }
865
866 void
867 foo_82 (void)
868 {
869   void *buf[20];
870   int n;
871
872   if ((n = unw_backtrace (buf, 20)) < 3)
873     abort ();
874 }
875
876 void
877 foo_83 (void)
878 {
879   void *buf[20];
880   int n;
881
882   if ((n = unw_backtrace (buf, 20)) < 3)
883     abort ();
884 }
885
886 void
887 foo_84 (void)
888 {
889   void *buf[20];
890   int n;
891
892   if ((n = unw_backtrace (buf, 20)) < 3)
893     abort ();
894 }
895
896 void
897 foo_85 (void)
898 {
899   void *buf[20];
900   int n;
901
902   if ((n = unw_backtrace (buf, 20)) < 3)
903     abort ();
904 }
905
906 void
907 foo_86 (void)
908 {
909   void *buf[20];
910   int n;
911
912   if ((n = unw_backtrace (buf, 20)) < 3)
913     abort ();
914 }
915
916 void
917 foo_87 (void)
918 {
919   void *buf[20];
920   int n;
921
922   if ((n = unw_backtrace (buf, 20)) < 3)
923     abort ();
924 }
925
926 void
927 foo_88 (void)
928 {
929   void *buf[20];
930   int n;
931
932   if ((n = unw_backtrace (buf, 20)) < 3)
933     abort ();
934 }
935
936 void
937 foo_89 (void)
938 {
939   void *buf[20];
940   int n;
941
942   if ((n = unw_backtrace (buf, 20)) < 3)
943     abort ();
944 }
945
946 void
947 foo_90 (void)
948 {
949   void *buf[20];
950   int n;
951
952   if ((n = unw_backtrace (buf, 20)) < 3)
953     abort ();
954 }
955
956 void
957 foo_91 (void)
958 {
959   void *buf[20];
960   int n;
961
962   if ((n = unw_backtrace (buf, 20)) < 3)
963     abort ();
964 }
965
966 void
967 foo_92 (void)
968 {
969   void *buf[20];
970   int n;
971
972   if ((n = unw_backtrace (buf, 20)) < 3)
973     abort ();
974 }
975
976 void
977 foo_93 (void)
978 {
979   void *buf[20];
980   int n;
981
982   if ((n = unw_backtrace (buf, 20)) < 3)
983     abort ();
984 }
985
986 void
987 foo_94 (void)
988 {
989   void *buf[20];
990   int n;
991
992   if ((n = unw_backtrace (buf, 20)) < 3)
993     abort ();
994 }
995
996 void
997 foo_95 (void)
998 {
999   void *buf[20];
1000   int n;
1001
1002   if ((n = unw_backtrace (buf, 20)) < 3)
1003     abort ();
1004 }
1005
1006 void
1007 foo_96 (void)
1008 {
1009   void *buf[20];
1010   int n;
1011
1012   if ((n = unw_backtrace (buf, 20)) < 3)
1013     abort ();
1014 }
1015
1016 void
1017 foo_97 (void)
1018 {
1019   void *buf[20];
1020   int n;
1021
1022   if ((n = unw_backtrace (buf, 20)) < 3)
1023     abort ();
1024 }
1025
1026 void
1027 foo_98 (void)
1028 {
1029   void *buf[20];
1030   int n;
1031
1032   if ((n = unw_backtrace (buf, 20)) < 3)
1033     abort ();
1034 }
1035
1036 void
1037 foo_99 (void)
1038 {
1039   void *buf[20];
1040   int n;
1041
1042   if ((n = unw_backtrace (buf, 20)) < 3)
1043     abort ();
1044 }
1045
1046 void
1047 foo_100 (void)
1048 {
1049   void *buf[20];
1050   int n;
1051
1052   if ((n = unw_backtrace (buf, 20)) < 3)
1053     abort ();
1054 }
1055
1056 void
1057 foo_101 (void)
1058 {
1059   void *buf[20];
1060   int n;
1061
1062   if ((n = unw_backtrace (buf, 20)) < 3)
1063     abort ();
1064 }
1065
1066 void
1067 foo_102 (void)
1068 {
1069   void *buf[20];
1070   int n;
1071
1072   if ((n = unw_backtrace (buf, 20)) < 3)
1073     abort ();
1074 }
1075
1076 void
1077 foo_103 (void)
1078 {
1079   void *buf[20];
1080   int n;
1081
1082   if ((n = unw_backtrace (buf, 20)) < 3)
1083     abort ();
1084 }
1085
1086 void
1087 foo_104 (void)
1088 {
1089   void *buf[20];
1090   int n;
1091
1092   if ((n = unw_backtrace (buf, 20)) < 3)
1093     abort ();
1094 }
1095
1096 void
1097 foo_105 (void)
1098 {
1099   void *buf[20];
1100   int n;
1101
1102   if ((n = unw_backtrace (buf, 20)) < 3)
1103     abort ();
1104 }
1105
1106 void
1107 foo_106 (void)
1108 {
1109   void *buf[20];
1110   int n;
1111
1112   if ((n = unw_backtrace (buf, 20)) < 3)
1113     abort ();
1114 }
1115
1116 void
1117 foo_107 (void)
1118 {
1119   void *buf[20];
1120   int n;
1121
1122   if ((n = unw_backtrace (buf, 20)) < 3)
1123     abort ();
1124 }
1125
1126 void
1127 foo_108 (void)
1128 {
1129   void *buf[20];
1130   int n;
1131
1132   if ((n = unw_backtrace (buf, 20)) < 3)
1133     abort ();
1134 }
1135
1136 void
1137 foo_109 (void)
1138 {
1139   void *buf[20];
1140   int n;
1141
1142   if ((n = unw_backtrace (buf, 20)) < 3)
1143     abort ();
1144 }
1145
1146 void
1147 foo_110 (void)
1148 {
1149   void *buf[20];
1150   int n;
1151
1152   if ((n = unw_backtrace (buf, 20)) < 3)
1153     abort ();
1154 }
1155
1156 void
1157 foo_111 (void)
1158 {
1159   void *buf[20];
1160   int n;
1161
1162   if ((n = unw_backtrace (buf, 20)) < 3)
1163     abort ();
1164 }
1165
1166 void
1167 foo_112 (void)
1168 {
1169   void *buf[20];
1170   int n;
1171
1172   if ((n = unw_backtrace (buf, 20)) < 3)
1173     abort ();
1174 }
1175
1176 void
1177 foo_113 (void)
1178 {
1179   void *buf[20];
1180   int n;
1181
1182   if ((n = unw_backtrace (buf, 20)) < 3)
1183     abort ();
1184 }
1185
1186 void
1187 foo_114 (void)
1188 {
1189   void *buf[20];
1190   int n;
1191
1192   if ((n = unw_backtrace (buf, 20)) < 3)
1193     abort ();
1194 }
1195
1196 void
1197 foo_115 (void)
1198 {
1199   void *buf[20];
1200   int n;
1201
1202   if ((n = unw_backtrace (buf, 20)) < 3)
1203     abort ();
1204 }
1205
1206 void
1207 foo_116 (void)
1208 {
1209   void *buf[20];
1210   int n;
1211
1212   if ((n = unw_backtrace (buf, 20)) < 3)
1213     abort ();
1214 }
1215
1216 void
1217 foo_117 (void)
1218 {
1219   void *buf[20];
1220   int n;
1221
1222   if ((n = unw_backtrace (buf, 20)) < 3)
1223     abort ();
1224 }
1225
1226 void
1227 foo_118 (void)
1228 {
1229   void *buf[20];
1230   int n;
1231
1232   if ((n = unw_backtrace (buf, 20)) < 3)
1233     abort ();
1234 }
1235
1236 void
1237 foo_119 (void)
1238 {
1239   void *buf[20];
1240   int n;
1241
1242   if ((n = unw_backtrace (buf, 20)) < 3)
1243     abort ();
1244 }
1245
1246 void
1247 foo_120 (void)
1248 {
1249   void *buf[20];
1250   int n;
1251
1252   if ((n = unw_backtrace (buf, 20)) < 3)
1253     abort ();
1254 }
1255
1256 void
1257 foo_121 (void)
1258 {
1259   void *buf[20];
1260   int n;
1261
1262   if ((n = unw_backtrace (buf, 20)) < 3)
1263     abort ();
1264 }
1265
1266 void
1267 foo_122 (void)
1268 {
1269   void *buf[20];
1270   int n;
1271
1272   if ((n = unw_backtrace (buf, 20)) < 3)
1273     abort ();
1274 }
1275
1276 void
1277 foo_123 (void)
1278 {
1279   void *buf[20];
1280   int n;
1281
1282   if ((n = unw_backtrace (buf, 20)) < 3)
1283     abort ();
1284 }
1285
1286 void
1287 foo_124 (void)
1288 {
1289   void *buf[20];
1290   int n;
1291
1292   if ((n = unw_backtrace (buf, 20)) < 3)
1293     abort ();
1294 }
1295
1296 void
1297 foo_125 (void)
1298 {
1299   void *buf[20];
1300   int n;
1301
1302   if ((n = unw_backtrace (buf, 20)) < 3)
1303     abort ();
1304 }
1305
1306 void
1307 foo_126 (void)
1308 {
1309   void *buf[20];
1310   int n;
1311
1312   if ((n = unw_backtrace (buf, 20)) < 3)
1313     abort ();
1314 }
1315
1316 void
1317 foo_127 (void)
1318 {
1319   void *buf[20];
1320   int n;
1321
1322   if ((n = unw_backtrace (buf, 20)) < 3)
1323     abort ();
1324 }
1325
1326 void
1327 foo_128 (void)
1328 {
1329   void *buf[20];
1330   int n;
1331
1332   if ((n = unw_backtrace (buf, 20)) < 3)
1333     abort ();
1334 }
1335
1336 void *
1337 bar(void *p UNUSED)
1338 {
1339   int i;
1340   for (i = 0; i < ITERS; ++i) {
1341     foo_0 ();
1342     foo_1 ();
1343     foo_2 ();
1344     foo_3 ();
1345     foo_4 ();
1346     foo_5 ();
1347     foo_6 ();
1348     foo_7 ();
1349     foo_8 ();
1350     foo_9 ();
1351     foo_10 ();
1352     foo_11 ();
1353     foo_12 ();
1354     foo_13 ();
1355     foo_14 ();
1356     foo_15 ();
1357     foo_16 ();
1358     foo_17 ();
1359     foo_18 ();
1360     foo_19 ();
1361     foo_20 ();
1362     foo_21 ();
1363     foo_22 ();
1364     foo_23 ();
1365     foo_24 ();
1366     foo_25 ();
1367     foo_26 ();
1368     foo_27 ();
1369     foo_28 ();
1370     foo_29 ();
1371     foo_30 ();
1372     foo_31 ();
1373     foo_32 ();
1374     foo_33 ();
1375     foo_34 ();
1376     foo_35 ();
1377     foo_36 ();
1378     foo_37 ();
1379     foo_38 ();
1380     foo_39 ();
1381     foo_40 ();
1382     foo_41 ();
1383     foo_42 ();
1384     foo_43 ();
1385     foo_44 ();
1386     foo_45 ();
1387     foo_46 ();
1388     foo_47 ();
1389     foo_48 ();
1390     foo_49 ();
1391     foo_50 ();
1392     foo_51 ();
1393     foo_52 ();
1394     foo_53 ();
1395     foo_54 ();
1396     foo_55 ();
1397     foo_56 ();
1398     foo_57 ();
1399     foo_58 ();
1400     foo_59 ();
1401     foo_60 ();
1402     foo_61 ();
1403     foo_62 ();
1404     foo_63 ();
1405     foo_64 ();
1406     foo_65 ();
1407     foo_66 ();
1408     foo_67 ();
1409     foo_68 ();
1410     foo_69 ();
1411     foo_70 ();
1412     foo_71 ();
1413     foo_72 ();
1414     foo_73 ();
1415     foo_74 ();
1416     foo_75 ();
1417     foo_76 ();
1418     foo_77 ();
1419     foo_78 ();
1420     foo_79 ();
1421     foo_80 ();
1422     foo_81 ();
1423     foo_82 ();
1424     foo_83 ();
1425     foo_84 ();
1426     foo_85 ();
1427     foo_86 ();
1428     foo_87 ();
1429     foo_88 ();
1430     foo_89 ();
1431     foo_90 ();
1432     foo_91 ();
1433     foo_92 ();
1434     foo_93 ();
1435     foo_94 ();
1436     foo_95 ();
1437     foo_96 ();
1438     foo_97 ();
1439     foo_98 ();
1440     foo_99 ();
1441     foo_100 ();
1442     foo_101 ();
1443     foo_102 ();
1444     foo_103 ();
1445     foo_104 ();
1446     foo_105 ();
1447     foo_106 ();
1448     foo_107 ();
1449     foo_108 ();
1450     foo_109 ();
1451     foo_110 ();
1452     foo_111 ();
1453     foo_112 ();
1454     foo_113 ();
1455     foo_114 ();
1456     foo_115 ();
1457     foo_116 ();
1458     foo_117 ();
1459     foo_118 ();
1460     foo_119 ();
1461     foo_120 ();
1462     foo_121 ();
1463     foo_122 ();
1464     foo_123 ();
1465     foo_124 ();
1466     foo_125 ();
1467     foo_126 ();
1468     foo_127 ();
1469     foo_128 ();
1470   }
1471   return NULL;
1472 }
1473
1474 int doit (void)
1475 {
1476   pthread_t tid[NTHREAD];
1477   int i;
1478
1479   for (i = 0; i < NTHREAD; ++i)
1480     if (pthread_create (&tid[i], NULL, bar, NULL))
1481       return 1;
1482
1483   for (i = 0; i < NTHREAD; ++i)
1484     if (pthread_join (tid[i], NULL))
1485       return 1;
1486
1487   return 0;
1488 }
1489
1490 int
1491 main (int argc, char **argv UNUSED)
1492 {
1493   if (argc > 1)
1494     verbose = 1;
1495
1496   if (verbose)
1497     printf ("Caching: none\n");
1498   unw_set_caching_policy (unw_local_addr_space, UNW_CACHE_NONE);
1499   doit ();
1500
1501   if (verbose)
1502     printf ("Caching: global\n");
1503   unw_set_caching_policy (unw_local_addr_space, UNW_CACHE_GLOBAL);
1504   doit ();
1505
1506   if (verbose)
1507     printf ("Caching: per-thread\n");
1508   unw_set_caching_policy (unw_local_addr_space, UNW_CACHE_PER_THREAD);
1509   doit ();
1510
1511   if (verbose)
1512     printf ("SUCCESS\n");
1513   return 0;
1514 }