1 /* libunwind - a platform-independent unwind library 2 Copyright (C) 2003-2005 Hewlett-Packard Co 3 Contributed by Paul Pluzhnikov <ppluzhnikov (at) 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 } 1515