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