diff options
author | Viktor Kutuzov <vkutuzov@accesssoftek.com> | 2014-10-10 06:55:17 +0000 |
---|---|---|
committer | Viktor Kutuzov <vkutuzov@accesssoftek.com> | 2014-10-10 06:55:17 +0000 |
commit | 918df1abd83df29d3069db55222177c3f0a8927c (patch) | |
tree | 15b7bd0fcfba28bbd4b57fe987dd98b7185e49a9 /compiler-rt/test/tsan/Linux/user_malloc.cc | |
parent | 4191cbce8c7d9bcc151a0b4b406959a48b0883b7 (diff) | |
download | bcm5719-llvm-918df1abd83df29d3069db55222177c3f0a8927c.tar.gz bcm5719-llvm-918df1abd83df29d3069db55222177c3f0a8927c.zip |
[Tsan] Make the user_fopen.cc and user_malloc.cc tests Linux-specific
Differential Revision: http://reviews.llvm.org/D5670
llvm-svn: 219478
Diffstat (limited to 'compiler-rt/test/tsan/Linux/user_malloc.cc')
-rw-r--r-- | compiler-rt/test/tsan/Linux/user_malloc.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/compiler-rt/test/tsan/Linux/user_malloc.cc b/compiler-rt/test/tsan/Linux/user_malloc.cc new file mode 100644 index 00000000000..21067707408 --- /dev/null +++ b/compiler-rt/test/tsan/Linux/user_malloc.cc @@ -0,0 +1,27 @@ +// RUN: %clangxx_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s +#include <stdio.h> + +// defined by tsan. +extern "C" void *__interceptor_malloc(unsigned long size); +extern "C" void __interceptor_free(void *p); + +extern "C" void *malloc(unsigned long size) { + static int first = 0; + if (__sync_lock_test_and_set(&first, 1) == 0) + printf("user malloc\n"); + return __interceptor_malloc(size); +} + +extern "C" void free(void *p) { + __interceptor_free(p); +} + +int main() { + volatile char *p = (char*)malloc(10); + p[0] = 0; + free((void*)p); +} + +// CHECK: user malloc +// CHECK-NOT: ThreadSanitizer + |