1*c4992bf5SKevin Athey // RUN: %clangxx_asan -fsanitize-address-use-after-return=never -O %s -o %t && %run %t 2673dc3d4SNico Weber 3673dc3d4SNico Weber #include <assert.h> 4673dc3d4SNico Weber #include <setjmp.h> 5673dc3d4SNico Weber #include <stdio.h> 6673dc3d4SNico Weber #include <sanitizer/asan_interface.h> 7673dc3d4SNico Weber 8673dc3d4SNico Weber static jmp_buf buf; 9673dc3d4SNico Weber main()10673dc3d4SNico Weberint main() { 11673dc3d4SNico Weber char x[32]; 12673dc3d4SNico Weber fprintf(stderr, "\nTestLongJmp\n"); 13673dc3d4SNico Weber fprintf(stderr, "Before: %p poisoned: %d\n", &x, 14673dc3d4SNico Weber __asan_address_is_poisoned(x + 32)); 15673dc3d4SNico Weber assert(__asan_address_is_poisoned(x + 32)); 16673dc3d4SNico Weber if (0 == setjmp(buf)) 17673dc3d4SNico Weber longjmp(buf, 1); 18673dc3d4SNico Weber fprintf(stderr, "After: %p poisoned: %d\n", &x, 19673dc3d4SNico Weber __asan_address_is_poisoned(x + 32)); 20673dc3d4SNico Weber assert(!__asan_address_is_poisoned(x + 32)); 21673dc3d4SNico Weber } 22