18bf2b755SAndrew Jones #include "libcflat.h"
29dde4243SPaolo Bonzini #include "setjmp.h"
39dde4243SPaolo Bonzini
46f6a3713SBill Wendling static const int expected[] = {
56f6a3713SBill Wendling 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
66f6a3713SBill Wendling };
76f6a3713SBill Wendling
86f6a3713SBill Wendling #define NUM_LONGJMPS ARRAY_SIZE(expected)
96f6a3713SBill Wendling
main(void)107db17e21SThomas Huth int main(void)
119dde4243SPaolo Bonzini {
126f6a3713SBill Wendling volatile int index = 0;
139dde4243SPaolo Bonzini jmp_buf j;
146f6a3713SBill Wendling int i;
159dde4243SPaolo Bonzini
166f6a3713SBill Wendling i = setjmp(j);
17*dee2f09eSThomas Huth report(expected[index] == i, "actual %d == expected %d",
18*dee2f09eSThomas Huth i, expected[index]);
196f6a3713SBill Wendling index++;
206f6a3713SBill Wendling if (i + 1 < NUM_LONGJMPS)
216f6a3713SBill Wendling longjmp(j, i + 1);
229dde4243SPaolo Bonzini
23*dee2f09eSThomas Huth return report_summary();
249dde4243SPaolo Bonzini }
25