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