summaryrefslogtreecommitdiffstats
path: root/compiler-rt/test/tsan/debug_alloc_stack.cc
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2019-08-02 07:18:07 +0000
committerFangrui Song <maskray@google.com>2019-08-02 07:18:07 +0000
commitbcaeed49cb063de9fe504aa29e1cadff8a7be710 (patch)
tree01b6111d0c244bb2c86f705a06f575442cf58aeb /compiler-rt/test/tsan/debug_alloc_stack.cc
parent8113c93fb1b7d1cc595882bca17381c1bd3b2069 (diff)
downloadbcm5719-llvm-bcaeed49cb063de9fe504aa29e1cadff8a7be710.tar.gz
bcm5719-llvm-bcaeed49cb063de9fe504aa29e1cadff8a7be710.zip
compiler-rt: Rename .cc file in test/tsan to .cpp
Like r367463, but for test/tsan. llvm-svn: 367656
Diffstat (limited to 'compiler-rt/test/tsan/debug_alloc_stack.cc')
-rw-r--r--compiler-rt/test/tsan/debug_alloc_stack.cc84
1 files changed, 0 insertions, 84 deletions
diff --git a/compiler-rt/test/tsan/debug_alloc_stack.cc b/compiler-rt/test/tsan/debug_alloc_stack.cc
deleted file mode 100644
index ffe99e73a2a..00000000000
--- a/compiler-rt/test/tsan/debug_alloc_stack.cc
+++ /dev/null
@@ -1,84 +0,0 @@
-// RUN: %clangxx_tsan -O0 %s -o %t
-// RUN: env %env_tsan_opts=stack_trace_format=DEFAULT %deflake %run %t 2>&1 | FileCheck %s
-
-// Until I figure out how to make this test work on Linux
-// REQUIRES: system-darwin
-
-#include "test.h"
-#include <pthread.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#ifndef __APPLE__
-#include <sys/types.h>
-#endif
-
-extern "C" int __tsan_get_alloc_stack(void *addr, void **trace, size_t size,
- int *thread_id, uint64_t *os_id);
-
-char *mem;
-void alloc_func() { mem = (char *)malloc(10); }
-
-void *AllocThread(void *context) {
- uint64_t tid;
-#ifdef __APPLE__
- pthread_threadid_np(NULL, &tid);
-#else
- tid = gettid();
-#endif
- fprintf(stderr, "alloc stack thread os id = 0x%llx\n", tid);
- // CHECK: alloc stack thread os id = [[THREAD_OS_ID:0x[0-9a-f]+]]
- alloc_func();
- return NULL;
-}
-
-void *RaceThread(void *context) {
- *mem = 'a';
- barrier_wait(&barrier);
- return NULL;
-}
-
-int main() {
- pthread_t t;
- barrier_init(&barrier, 2);
-
- pthread_create(&t, NULL, AllocThread, NULL);
- pthread_join(t, NULL);
-
- void *trace[100];
- size_t num_frames = 100;
- int thread_id;
- uint64_t *thread_os_id;
- num_frames =
- __tsan_get_alloc_stack(mem, trace, num_frames, &thread_id, &thread_os_id);
-
- fprintf(stderr, "alloc stack retval %s\n",
- (num_frames > 0 && num_frames < 10) ? "ok" : "");
- // CHECK: alloc stack retval ok
- fprintf(stderr, "thread id = %d\n", thread_id);
- // CHECK: thread id = 1
- fprintf(stderr, "thread os id = 0x%llx\n", thread_os_id);
- // CHECK: thread os id = [[THREAD_OS_ID]]
- fprintf(stderr, "%p\n", trace[0]);
- // CHECK: [[ALLOC_FRAME_0:0x[0-9a-f]+]]
- fprintf(stderr, "%p\n", trace[1]);
- // CHECK: [[ALLOC_FRAME_1:0x[0-9a-f]+]]
- fprintf(stderr, "%p\n", trace[2]);
- // CHECK: [[ALLOC_FRAME_2:0x[0-9a-f]+]]
-
- pthread_create(&t, NULL, RaceThread, NULL);
- barrier_wait(&barrier);
- mem[0] = 'b';
- pthread_join(t, NULL);
-
- free(mem);
-
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
-// CHECK: Location is heap block of size 10 at {{.*}} allocated by thread T1
-// CHECK: #0 [[ALLOC_FRAME_0]]
-// CHECK: #1 [[ALLOC_FRAME_1]] in alloc_func
-// CHECK: #2 [[ALLOC_FRAME_2]] in AllocThread
OpenPOWER on IntegriCloud