summaryrefslogtreecommitdiffstats
path: root/compiler-rt/test/tsan/Linux/user_malloc.cc
diff options
context:
space:
mode:
authorViktor Kutuzov <vkutuzov@accesssoftek.com>2014-10-10 06:55:17 +0000
committerViktor Kutuzov <vkutuzov@accesssoftek.com>2014-10-10 06:55:17 +0000
commit918df1abd83df29d3069db55222177c3f0a8927c (patch)
tree15b7bd0fcfba28bbd4b57fe987dd98b7185e49a9 /compiler-rt/test/tsan/Linux/user_malloc.cc
parent4191cbce8c7d9bcc151a0b4b406959a48b0883b7 (diff)
downloadbcm5719-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.cc27
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
+
OpenPOWER on IntegriCloud