18bf2b755SAndrew Jones #include "libcflat.h" 29dde4243SPaolo Bonzini #include "setjmp.h" 39dde4243SPaolo Bonzini 4*6f6a3713SBill Wendling static const int expected[] = { 5*6f6a3713SBill Wendling 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 6*6f6a3713SBill Wendling }; 7*6f6a3713SBill Wendling 8*6f6a3713SBill Wendling #define NUM_LONGJMPS ARRAY_SIZE(expected) 9*6f6a3713SBill Wendling 107db17e21SThomas Huth int main(void) 119dde4243SPaolo Bonzini { 12*6f6a3713SBill Wendling volatile int index = 0; 139dde4243SPaolo Bonzini jmp_buf j; 14*6f6a3713SBill Wendling int i; 159dde4243SPaolo Bonzini 16*6f6a3713SBill Wendling i = setjmp(j); 17*6f6a3713SBill Wendling if (expected[index] != i) { 18*6f6a3713SBill Wendling printf("FAIL: actual %d / expected %d\n", i, expected[index]); 19*6f6a3713SBill Wendling return -1; 209dde4243SPaolo Bonzini } 21*6f6a3713SBill Wendling index++; 22*6f6a3713SBill Wendling if (i + 1 < NUM_LONGJMPS) 23*6f6a3713SBill Wendling longjmp(j, i + 1); 249dde4243SPaolo Bonzini 259dde4243SPaolo Bonzini return 0; 269dde4243SPaolo Bonzini } 27