1 // RUN: %clang_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s 2 3 // Longjmp assembly has not been implemented for mips64 yet 4 // XFAIL: mips64 5 6 #include <stdio.h> 7 #include <stdlib.h> 8 #include <setjmp.h> 9 foo(sigjmp_buf env)10int foo(sigjmp_buf env) { 11 printf("env=%p\n", env); 12 siglongjmp(env, 42); 13 } 14 main()15int main() { 16 sigjmp_buf env; 17 printf("env=%p\n", env); 18 if (sigsetjmp(env, 1) == 42) { 19 fprintf(stderr, "JUMPED\n"); 20 return 0; 21 } 22 foo(env); 23 fprintf(stderr, "FAILED\n"); 24 return 0; 25 } 26 27 // CHECK-NOT: FAILED 28 // CHECK: JUMPED 29