diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2014-09-18 19:00:02 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2014-09-18 19:00:02 +0000 |
commit | c0ae07e98cb60702d8bb989a57375434abae9275 (patch) | |
tree | 40dc21d3acbdafa64a484624e955f5ef56528dab | |
parent | dfd8c74a988991fa1e69aa61c42a8ff29f8151be (diff) | |
download | bcm5719-llvm-c0ae07e98cb60702d8bb989a57375434abae9275.tar.gz bcm5719-llvm-c0ae07e98cb60702d8bb989a57375434abae9275.zip |
tsan: fix signal_longjmp test in debug mode
In debug mode tsan checks that user accesses
access user memory. NULL is not user memory.
So the test fails. Allocate real inaccessible
memory for the test.
llvm-svn: 218069
-rw-r--r-- | compiler-rt/test/tsan/signal_longjmp.cc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/compiler-rt/test/tsan/signal_longjmp.cc b/compiler-rt/test/tsan/signal_longjmp.cc index 7991a6f73a8..84b0682dcba 100644 --- a/compiler-rt/test/tsan/signal_longjmp.cc +++ b/compiler-rt/test/tsan/signal_longjmp.cc @@ -7,6 +7,7 @@ #include <signal.h> #include <stdlib.h> #include <stdio.h> +#include <sys/mman.h> sigjmp_buf fault_jmp; volatile int fault_expected; @@ -45,9 +46,12 @@ int main() { exit(1); } - MUST_FAULT(((volatile int *volatile)0)[0] = 0); - MUST_FAULT(((volatile int *volatile)0)[1] = 1); - MUST_FAULT(((volatile int *volatile)0)[3] = 1); + void *mem = mmap(0, 4096, PROT_NONE, MAP_PRIVATE | MAP_ANON, + -1, 0); + + MUST_FAULT(((volatile int *volatile)mem)[0] = 0); + MUST_FAULT(((volatile int *volatile)mem)[1] = 1); + MUST_FAULT(((volatile int *volatile)mem)[3] = 1); // Ensure that tsan does not think that we are // in a signal handler. @@ -55,6 +59,8 @@ int main() { ((volatile int*)p)[1] = 1; free((void*)p); + munmap(p, 4096); + fprintf(stderr, "DONE\n"); return 0; } |