// RUN: %clangxx_asan -O %s -o %t && %run %t // FIXME: merge this with the common longjmp test when we can run common // tests on Windows. #include <assert.h> #include <setjmp.h> #include <stdio.h> #include <sanitizer/asan_interface.h> static jmp_buf buf; int main() { char x[32]; fprintf(stderr, "\nTestLongJmp\n"); fprintf(stderr, "Before: %p poisoned: %d\n", &x, __asan_address_is_poisoned(x + 32)); assert(__asan_address_is_poisoned(x + 32)); if (0 == setjmp(buf)) longjmp(buf, 1); fprintf(stderr, "After: %p poisoned: %d\n", &x, __asan_address_is_poisoned(x + 32)); // FIXME: Invert this assertion once we fix // https://code.google.com/p/address-sanitizer/issues/detail?id=258 assert(!__asan_address_is_poisoned(x + 32)); }