]> git.proxmox.com Git - rustc.git/blob - src/compiler-rt/test/asan/TestCases/Windows/longjmp.cc
Imported Upstream version 1.6.0+dfsg1
[rustc.git] / src / compiler-rt / test / asan / TestCases / Windows / longjmp.cc
1 // RUN: %clangxx_asan -O %s -o %t && %run %t
2
3 // FIXME: merge this with the common longjmp test when we can run common
4 // tests on Windows.
5
6 #include <assert.h>
7 #include <setjmp.h>
8 #include <stdio.h>
9 #include <sanitizer/asan_interface.h>
10
11 static jmp_buf buf;
12
13 int main() {
14 char x[32];
15 fprintf(stderr, "\nTestLongJmp\n");
16 fprintf(stderr, "Before: %p poisoned: %d\n", &x,
17 __asan_address_is_poisoned(x + 32));
18 assert(__asan_address_is_poisoned(x + 32));
19 if (0 == setjmp(buf))
20 longjmp(buf, 1);
21 fprintf(stderr, "After: %p poisoned: %d\n", &x,
22 __asan_address_is_poisoned(x + 32));
23 // FIXME: Invert this assertion once we fix
24 // https://code.google.com/p/address-sanitizer/issues/detail?id=258
25 assert(!__asan_address_is_poisoned(x + 32));
26 }