diff options
| author | Alexey Samsonov <samsonov@google.com> | 2012-09-18 07:23:54 +0000 |
|---|---|---|
| committer | Alexey Samsonov <samsonov@google.com> | 2012-09-18 07:23:54 +0000 |
| commit | 341e5bcb45c9aeab3584d0aaa07a814282ebbefc (patch) | |
| tree | aa4c489f05f13095b7d68d15a1ec93c5da516eb8 /compiler-rt/lib/tsan/output_tests | |
| parent | 7ecfa6d9603e09d5fa3eda0d25d72f07b568b47f (diff) | |
| download | bcm5719-llvm-341e5bcb45c9aeab3584d0aaa07a814282ebbefc.tar.gz bcm5719-llvm-341e5bcb45c9aeab3584d0aaa07a814282ebbefc.zip | |
[TSan] port all output tests to lit and move them to lit_tests directory. This makes 'make check-tsan' command test both unit and output TSan tests. Old custom makefiles for running TSan tests are still functional as well.
llvm-svn: 164110
Diffstat (limited to 'compiler-rt/lib/tsan/output_tests')
33 files changed, 0 insertions, 1086 deletions
diff --git a/compiler-rt/lib/tsan/output_tests/free_race.c b/compiler-rt/lib/tsan/output_tests/free_race.c deleted file mode 100644 index fb7fbac77b0..00000000000 --- a/compiler-rt/lib/tsan/output_tests/free_race.c +++ /dev/null @@ -1,43 +0,0 @@ -#include <pthread.h> -#include <stdlib.h> -#include <stdio.h> -#include <stddef.h> -#include <unistd.h> - -int *mem; -pthread_mutex_t mtx; - -void *Thread1(void *x) { - pthread_mutex_lock(&mtx); - free(mem); - pthread_mutex_unlock(&mtx); - return NULL; -} - -void *Thread2(void *x) { - usleep(1000000); - pthread_mutex_lock(&mtx); - mem[0] = 42; - pthread_mutex_unlock(&mtx); - return NULL; -} - -int main() { - mem = (int*)malloc(100); - pthread_mutex_init(&mtx, 0); - pthread_t t; - pthread_create(&t, NULL, Thread1, NULL); - Thread2(0); - pthread_join(t, NULL); - pthread_mutex_destroy(&mtx); - return 0; -} - -// CHECK: WARNING: ThreadSanitizer: heap-use-after-free -// CHECK: Write of size 4 at {{.*}} by main thread: -// CHECK: #0 Thread2 -// CHECK: #1 main -// CHECK: Previous write of size 8 at {{.*}} by thread 1: -// CHECK: #0 free -// CHECK: #1 Thread1 - diff --git a/compiler-rt/lib/tsan/output_tests/free_race2.c b/compiler-rt/lib/tsan/output_tests/free_race2.c deleted file mode 100644 index 7b2bdec039e..00000000000 --- a/compiler-rt/lib/tsan/output_tests/free_race2.c +++ /dev/null @@ -1,26 +0,0 @@ -#include <stdlib.h> - -void __attribute__((noinline)) foo(int *mem) { - free(mem); -} - -void __attribute__((noinline)) bar(int *mem) { - mem[0] = 42; -} - -int main() { - int *mem = (int*)malloc(100); - foo(mem); - bar(mem); - return 0; -} - -// CHECK: WARNING: ThreadSanitizer: heap-use-after-free -// CHECK: Write of size 4 at {{.*}} by main thread: -// CHECK: #0 bar -// CHECK: #1 main -// CHECK: Previous write of size 8 at {{.*}} by main thread: -// CHECK: #0 free -// CHECK: #1 foo -// CHECK: #2 main - diff --git a/compiler-rt/lib/tsan/output_tests/heap_race.cc b/compiler-rt/lib/tsan/output_tests/heap_race.cc deleted file mode 100644 index e92bb379737..00000000000 --- a/compiler-rt/lib/tsan/output_tests/heap_race.cc +++ /dev/null @@ -1,19 +0,0 @@ -#include <pthread.h> -#include <stdio.h> -#include <stddef.h> - -void *Thread(void *a) { - ((int*)a)[0]++; - return NULL; -} - -int main() { - int *p = new int(42); - pthread_t t; - pthread_create(&t, NULL, Thread, p); - p[0]++; - pthread_join(t, NULL); - delete p; -} - -// CHECK: WARNING: ThreadSanitizer: data race diff --git a/compiler-rt/lib/tsan/output_tests/memcpy_race.cc b/compiler-rt/lib/tsan/output_tests/memcpy_race.cc deleted file mode 100644 index c6b79a709e4..00000000000 --- a/compiler-rt/lib/tsan/output_tests/memcpy_race.cc +++ /dev/null @@ -1,40 +0,0 @@ -#include <pthread.h> -#include <stddef.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> - -char *data = new char[10]; -char *data1 = new char[10]; -char *data2 = new char[10]; - -void *Thread1(void *x) { - memcpy(data+5, data1, 1); - return NULL; -} - -void *Thread2(void *x) { - usleep(500*1000); - memcpy(data+3, data2, 4); - return NULL; -} - -int main() { - fprintf(stderr, "addr=%p\n", &data[5]); - pthread_t t[2]; - pthread_create(&t[0], NULL, Thread1, NULL); - pthread_create(&t[1], NULL, Thread2, NULL); - pthread_join(t[0], NULL); - pthread_join(t[1], NULL); - return 0; -} - -// CHECK: addr=[[ADDR:0x[0-9,a-f]+]] -// CHECK: WARNING: ThreadSanitizer: data race -// CHECK: Write of size 1 at [[ADDR]] by thread 2: -// CHECK: #0 memcpy -// CHECK: #1 Thread2 -// CHECK: Previous write of size 1 at [[ADDR]] by thread 1: -// CHECK: #0 memcpy -// CHECK: #1 Thread1 - diff --git a/compiler-rt/lib/tsan/output_tests/mop_with_offset.cc b/compiler-rt/lib/tsan/output_tests/mop_with_offset.cc deleted file mode 100644 index fc497bfb4a7..00000000000 --- a/compiler-rt/lib/tsan/output_tests/mop_with_offset.cc +++ /dev/null @@ -1,36 +0,0 @@ -#include <pthread.h> -#include <stddef.h> -#include <stdio.h> -#include <unistd.h> - -void *Thread1(void *x) { - int *p = (int*)x; - p[0] = 1; - return NULL; -} - -void *Thread2(void *x) { - usleep(500*1000); - char *p = (char*)x; - p[2] = 1; - return NULL; -} - -int main() { - int *data = new int(42); - fprintf(stderr, "ptr1=%p\n", data); - fprintf(stderr, "ptr2=%p\n", (char*)data + 2); - pthread_t t[2]; - pthread_create(&t[0], NULL, Thread1, data); - pthread_create(&t[1], NULL, Thread2, data); - pthread_join(t[0], NULL); - pthread_join(t[1], NULL); - delete data; -} - -// CHECK: ptr1=[[PTR1:0x[0-9,a-f]+]] -// CHECK: ptr2=[[PTR2:0x[0-9,a-f]+]] -// CHECK: WARNING: ThreadSanitizer: data race -// CHECK: Write of size 1 at [[PTR2]] by thread 2: -// CHECK: Previous write of size 4 at [[PTR1]] by thread 1: - diff --git a/compiler-rt/lib/tsan/output_tests/mop_with_offset2.cc b/compiler-rt/lib/tsan/output_tests/mop_with_offset2.cc deleted file mode 100644 index bbeda554929..00000000000 --- a/compiler-rt/lib/tsan/output_tests/mop_with_offset2.cc +++ /dev/null @@ -1,36 +0,0 @@ -#include <pthread.h> -#include <stddef.h> -#include <stdio.h> -#include <unistd.h> - -void *Thread1(void *x) { - usleep(500*1000); - int *p = (int*)x; - p[0] = 1; - return NULL; -} - -void *Thread2(void *x) { - char *p = (char*)x; - p[2] = 1; - return NULL; -} - -int main() { - int *data = new int(42); - fprintf(stderr, "ptr1=%p\n", data); - fprintf(stderr, "ptr2=%p\n", (char*)data + 2); - pthread_t t[2]; - pthread_create(&t[0], NULL, Thread1, data); - pthread_create(&t[1], NULL, Thread2, data); - pthread_join(t[0], NULL); - pthread_join(t[1], NULL); - delete data; -} - -// CHECK: ptr1=[[PTR1:0x[0-9,a-f]+]] -// CHECK: ptr2=[[PTR2:0x[0-9,a-f]+]] -// CHECK: WARNING: ThreadSanitizer: data race -// CHECK: Write of size 4 at [[PTR1]] by thread 1: -// CHECK: Previous write of size 1 at [[PTR2]] by thread 2: - diff --git a/compiler-rt/lib/tsan/output_tests/mutex_destroy_locked.cc b/compiler-rt/lib/tsan/output_tests/mutex_destroy_locked.cc deleted file mode 100644 index f6ab874c2a2..00000000000 --- a/compiler-rt/lib/tsan/output_tests/mutex_destroy_locked.cc +++ /dev/null @@ -1,29 +0,0 @@ -#include <pthread.h> -#include <unistd.h> - -void *Thread(void *p) { - pthread_mutex_lock((pthread_mutex_t*)p); - return 0; -} - -int main() { - pthread_mutex_t m; - pthread_mutex_init(&m, 0); - pthread_t t; - pthread_create(&t, 0, Thread, &m); - usleep(1000*1000); - pthread_mutex_destroy(&m); - pthread_join(t, 0); - return 0; -} - -// CHECK: WARNING: ThreadSanitizer: destroy of a locked mutex -// CHECK: #0 pthread_mutex_destroy -// CHECK: #1 main -// CHECK: and: -// CHECK: #0 pthread_mutex_lock -// CHECK: #1 Thread -// CHECK: Mutex {{.*}} created at: -// CHECK: #0 pthread_mutex_init -// CHECK: #1 main - diff --git a/compiler-rt/lib/tsan/output_tests/race_on_barrier.c b/compiler-rt/lib/tsan/output_tests/race_on_barrier.c deleted file mode 100644 index 98d7a1d847f..00000000000 --- a/compiler-rt/lib/tsan/output_tests/race_on_barrier.c +++ /dev/null @@ -1,31 +0,0 @@ -#include <pthread.h> -#include <stdio.h> -#include <stddef.h> -#include <unistd.h> - -pthread_barrier_t B; -int Global; - -void *Thread1(void *x) { - pthread_barrier_init(&B, 0, 2); - pthread_barrier_wait(&B); - return NULL; -} - -void *Thread2(void *x) { - usleep(1000000); - pthread_barrier_wait(&B); - return NULL; -} - -int main() { - pthread_t t; - pthread_create(&t, NULL, Thread1, NULL); - Thread2(0); - pthread_join(t, NULL); - pthread_barrier_destroy(&B); - return 0; -} - -// CHECK: WARNING: ThreadSanitizer: data race - diff --git a/compiler-rt/lib/tsan/output_tests/race_on_barrier2.c b/compiler-rt/lib/tsan/output_tests/race_on_barrier2.c deleted file mode 100644 index dbdb6b55700..00000000000 --- a/compiler-rt/lib/tsan/output_tests/race_on_barrier2.c +++ /dev/null @@ -1,30 +0,0 @@ -#include <pthread.h> -#include <stdio.h> -#include <stddef.h> -#include <unistd.h> - -pthread_barrier_t B; -int Global; - -void *Thread1(void *x) { - if (pthread_barrier_wait(&B) == PTHREAD_BARRIER_SERIAL_THREAD) - pthread_barrier_destroy(&B); - return NULL; -} - -void *Thread2(void *x) { - if (pthread_barrier_wait(&B) == PTHREAD_BARRIER_SERIAL_THREAD) - pthread_barrier_destroy(&B); - return NULL; -} - -int main() { - pthread_barrier_init(&B, 0, 2); - pthread_t t; - pthread_create(&t, NULL, Thread1, NULL); - Thread2(0); - pthread_join(t, NULL); - return 0; -} - -// CHECK: WARNING: ThreadSanitizer: data race diff --git a/compiler-rt/lib/tsan/output_tests/race_on_heap.cc b/compiler-rt/lib/tsan/output_tests/race_on_heap.cc deleted file mode 100644 index 09a461c59e4..00000000000 --- a/compiler-rt/lib/tsan/output_tests/race_on_heap.cc +++ /dev/null @@ -1,46 +0,0 @@ -#include <pthread.h> -#include <stdlib.h> -#include <stdio.h> - -void *Thread1(void *p) { - *(int*)p = 42; - return 0; -} - -void *Thread2(void *p) { - *(int*)p = 44; - return 0; -} - -void *alloc() { - return malloc(99); -} - -void *AllocThread(void* arg) { - return alloc(); -} - -int main() { - void *p = 0; - pthread_t t[2]; - pthread_create(&t[0], 0, AllocThread, 0); - pthread_join(t[0], &p); - fprintf(stderr, "addr=%p\n", p); - pthread_create(&t[0], 0, Thread1, (char*)p + 16); - pthread_create(&t[1], 0, Thread2, (char*)p + 16); - pthread_join(t[0], 0); - pthread_join(t[1], 0); - return 0; -} - -// CHECK: addr=[[ADDR:0x[0-9,a-f]+]] -// CHECK: WARNING: ThreadSanitizer: data race -// ... -// CHECK: Location is heap block of size 99 at [[ADDR]] allocated by thread 1: -// CHCEKL #0 malloc -// CHECK: #1 alloc -// CHECK: #2 AllocThread -// ... -// CHECK: Thread 1 (finished) created at: -// CHECK: #0 pthread_create -// CHECK: #1 main diff --git a/compiler-rt/lib/tsan/output_tests/race_on_mutex.c b/compiler-rt/lib/tsan/output_tests/race_on_mutex.c deleted file mode 100644 index 3ee9494dc4b..00000000000 --- a/compiler-rt/lib/tsan/output_tests/race_on_mutex.c +++ /dev/null @@ -1,41 +0,0 @@ -#include <pthread.h> -#include <stdio.h> -#include <stddef.h> -#include <unistd.h> - -pthread_mutex_t Mtx; -int Global; - -void *Thread1(void *x) { - pthread_mutex_init(&Mtx, 0); - pthread_mutex_lock(&Mtx); - Global = 42; - pthread_mutex_unlock(&Mtx); - return NULL; -} - -void *Thread2(void *x) { - usleep(1000000); - pthread_mutex_lock(&Mtx); - Global = 43; - pthread_mutex_unlock(&Mtx); - return NULL; -} - -int main() { - pthread_t t[2]; - pthread_create(&t[0], NULL, Thread1, NULL); - pthread_create(&t[1], NULL, Thread2, NULL); - pthread_join(t[0], NULL); - pthread_join(t[1], NULL); - pthread_mutex_destroy(&Mtx); - return 0; -} - -// CHECK: WARNING: ThreadSanitizer: data race -// CHECK-NEXT: Read of size 1 at {{.*}} by thread 2: -// CHECK-NEXT: #0 pthread_mutex_lock -// CHECK-NEXT: #1 Thread2{{.*}} {{.*}}race_on_mutex.c:19{{(:3)?}} ({{.*}}) -// CHECK: Previous write of size 1 at {{.*}} by thread 1: -// CHECK-NEXT: #0 pthread_mutex_init {{.*}} ({{.*}}) -// CHECK-NEXT: #1 Thread1{{.*}} {{.*}}race_on_mutex.c:10{{(:3)?}} ({{.*}}) diff --git a/compiler-rt/lib/tsan/output_tests/race_with_finished_thread.cc b/compiler-rt/lib/tsan/output_tests/race_with_finished_thread.cc deleted file mode 100644 index 1f60f4ba349..00000000000 --- a/compiler-rt/lib/tsan/output_tests/race_with_finished_thread.cc +++ /dev/null @@ -1,43 +0,0 @@ -#include <pthread.h> -#include <stddef.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> - -// Ensure that we can restore a stack of a finished thread. - -int g_data; - -void __attribute__((noinline)) foobar(int *p) { - *p = 42; -} - -void *Thread1(void *x) { - foobar(&g_data); - return NULL; -} - -void *Thread2(void *x) { - usleep(1000*1000); - g_data = 43; - return NULL; -} - -int main() { - pthread_t t[2]; - pthread_create(&t[0], NULL, Thread1, NULL); - pthread_create(&t[1], NULL, Thread2, NULL); - pthread_join(t[0], NULL); - pthread_join(t[1], NULL); - return 0; -} - -// CHECK: WARNING: ThreadSanitizer: data race -// CHECK: Write of size 4 at {{.*}} by thread 2: -// CHECK: Previous write of size 4 at {{.*}} by thread 1: -// CHECK: #0 foobar -// CHECK: #1 Thread1 -// CHECK: Thread 1 (finished) created at: -// CHECK: #0 pthread_create -// CHECK: #1 main - diff --git a/compiler-rt/lib/tsan/output_tests/simple_race.c b/compiler-rt/lib/tsan/output_tests/simple_race.c deleted file mode 100644 index ed831fd8c5a..00000000000 --- a/compiler-rt/lib/tsan/output_tests/simple_race.c +++ /dev/null @@ -1,25 +0,0 @@ -#include <pthread.h> -#include <stdio.h> - -int Global; - -void *Thread1(void *x) { - Global = 42; - return NULL; -} - -void *Thread2(void *x) { - Global = 43; - return NULL; -} - -int main() { - pthread_t t[2]; - pthread_create(&t[0], NULL, Thread1, NULL); - pthread_create(&t[1], NULL, Thread2, NULL); - pthread_join(t[0], NULL); - pthread_join(t[1], NULL); - return 0; -} - -// CHECK: WARNING: ThreadSanitizer: data race diff --git a/compiler-rt/lib/tsan/output_tests/simple_race.cc b/compiler-rt/lib/tsan/output_tests/simple_race.cc deleted file mode 100644 index 8d2cabff772..00000000000 --- a/compiler-rt/lib/tsan/output_tests/simple_race.cc +++ /dev/null @@ -1,24 +0,0 @@ -#include <pthread.h> -#include <stdio.h> - -int Global; - -void *Thread1(void *x) { - Global++; - return NULL; -} - -void *Thread2(void *x) { - Global--; - return NULL; -} - -int main() { - pthread_t t[2]; - pthread_create(&t[0], NULL, Thread1, NULL); - pthread_create(&t[1], NULL, Thread2, NULL); - pthread_join(t[0], NULL); - pthread_join(t[1], NULL); -} - -// CHECK: WARNING: ThreadSanitizer: data race diff --git a/compiler-rt/lib/tsan/output_tests/simple_stack.c b/compiler-rt/lib/tsan/output_tests/simple_stack.c deleted file mode 100644 index 12c5f5eaac5..00000000000 --- a/compiler-rt/lib/tsan/output_tests/simple_stack.c +++ /dev/null @@ -1,65 +0,0 @@ -#include <pthread.h> -#include <stdio.h> -#include <unistd.h> - -int Global; - -void __attribute__((noinline)) foo1() { - Global = 42; -} - -void __attribute__((noinline)) bar1() { - volatile int tmp = 42; (void)tmp; - foo1(); -} - -void __attribute__((noinline)) foo2() { - volatile int v = Global; (void)v; -} - -void __attribute__((noinline)) bar2() { - volatile int tmp = 42; (void)tmp; - foo2(); -} - -void *Thread1(void *x) { - usleep(1000000); - bar1(); - return NULL; -} - -void *Thread2(void *x) { - bar2(); - return NULL; -} - -void StartThread(pthread_t *t, void *(*f)(void*)) { - pthread_create(t, NULL, f, NULL); -} - -int main() { - pthread_t t[2]; - StartThread(&t[0], Thread1); - StartThread(&t[1], Thread2); - pthread_join(t[0], NULL); - pthread_join(t[1], NULL); - return 0; -} - -// CHECK: WARNING: ThreadSanitizer: data race -// CHECK-NEXT: Write of size 4 at {{.*}} by thread 1: -// CHECK-NEXT: #0 foo1{{.*}} {{.*}}simple_stack.c:8{{(:3)?}} ({{.*}}) -// CHECK-NEXT: #1 bar1{{.*}} {{.*}}simple_stack.c:13{{(:3)?}} ({{.*}}) -// CHECK-NEXT: #2 Thread1{{.*}} {{.*}}simple_stack.c:27{{(:3)?}} ({{.*}}) -// CHECK: Previous read of size 4 at {{.*}} by thread 2: -// CHECK-NEXT: #0 foo2{{.*}} {{.*}}simple_stack.c:17{{(:26)?}} ({{.*}}) -// CHECK-NEXT: #1 bar2{{.*}} {{.*}}simple_stack.c:22{{(:3)?}} ({{.*}}) -// CHECK-NEXT: #2 Thread2{{.*}} {{.*}}simple_stack.c:32{{(:3)?}} ({{.*}}) -// CHECK: Thread 1 (running) created at: -// CHECK-NEXT: #0 pthread_create {{.*}} ({{.*}}) -// CHECK-NEXT: #1 StartThread{{.*}} {{.*}}simple_stack.c:37{{(:3)?}} ({{.*}}) -// CHECK-NEXT: #2 main{{.*}} {{.*}}simple_stack.c:42{{(:3)?}} ({{.*}}) -// CHECK: Thread 2 ({{.*}}) created at: -// CHECK-NEXT: #0 pthread_create {{.*}} ({{.*}}) -// CHECK-NEXT: #1 StartThread{{.*}} {{.*}}simple_stack.c:37{{(:3)?}} ({{.*}}) -// CHECK-NEXT: #2 main{{.*}} {{.*}}simple_stack.c:43{{(:3)?}} ({{.*}}) diff --git a/compiler-rt/lib/tsan/output_tests/simple_stack2.cc b/compiler-rt/lib/tsan/output_tests/simple_stack2.cc deleted file mode 100644 index 560541589b3..00000000000 --- a/compiler-rt/lib/tsan/output_tests/simple_stack2.cc +++ /dev/null @@ -1,52 +0,0 @@ -#include <pthread.h> -#include <stdio.h> -#include <unistd.h> - -int Global; - -void __attribute__((noinline)) foo1() { - Global = 42; -} - -void __attribute__((noinline)) bar1() { - volatile int tmp = 42; - int tmp2 = tmp; - (void)tmp2; - foo1(); -} - -void __attribute__((noinline)) foo2() { - volatile int tmp = Global; - int tmp2 = tmp; - (void)tmp2; -} - -void __attribute__((noinline)) bar2() { - volatile int tmp = 42; - int tmp2 = tmp; - (void)tmp2; - foo2(); -} - -void *Thread1(void *x) { - usleep(1000000); - bar1(); - return NULL; -} - -int main() { - pthread_t t; - pthread_create(&t, NULL, Thread1, NULL); - bar2(); - pthread_join(t, NULL); -} - -// CHECK: WARNING: ThreadSanitizer: data race -// CHECK-NEXT: Write of size 4 at {{.*}} by thread 1: -// CHECK-NEXT: #0 foo1{{.*}} {{.*}}simple_stack2.cc:8{{(:3)?}} ({{.*}}) -// CHECK-NEXT: #1 bar1{{.*}} {{.*}}simple_stack2.cc:15{{(:3)?}} ({{.*}}) -// CHECK-NEXT: #2 Thread1{{.*}} {{.*}}simple_stack2.cc:33{{(:3)?}} ({{.*}}) -// CHECK: Previous read of size 4 at {{.*}} by main thread: -// CHECK-NEXT: #0 foo2{{.*}} {{.*}}simple_stack2.cc:19{{(:28)?}} ({{.*}}) -// CHECK-NEXT: #1 bar2{{.*}} {{.*}}simple_stack2.cc:28{{(:3)?}} ({{.*}}) -// CHECK-NEXT: #2 main{{.*}} {{.*}}simple_stack2.cc:40{{(:3)?}} ({{.*}}) diff --git a/compiler-rt/lib/tsan/output_tests/sleep_sync.cc b/compiler-rt/lib/tsan/output_tests/sleep_sync.cc deleted file mode 100644 index a130f1530a3..00000000000 --- a/compiler-rt/lib/tsan/output_tests/sleep_sync.cc +++ /dev/null @@ -1,30 +0,0 @@ -#include <pthread.h> -#include <unistd.h> - -int X = 0; - -void *Thread(void *p) { - X = 42; - return 0; -} - -void MySleep() { - usleep(100*1000); -} - -int main() { - pthread_t t; - pthread_create(&t, 0, Thread, 0); - MySleep(); // Assume the thread has done the write. - X = 43; - pthread_join(t, 0); - return 0; -} - -// CHECK: WARNING: ThreadSanitizer: data race -// ... -// CHECK: As if synchronized via sleep: -// CHECK-NEXT: #0 usleep -// CHECK-NEXT: #1 MySleep -// CHECK-NEXT: #2 main - diff --git a/compiler-rt/lib/tsan/output_tests/sleep_sync2.cc b/compiler-rt/lib/tsan/output_tests/sleep_sync2.cc deleted file mode 100644 index 017b9ba482d..00000000000 --- a/compiler-rt/lib/tsan/output_tests/sleep_sync2.cc +++ /dev/null @@ -1,21 +0,0 @@ -#include <pthread.h> -#include <unistd.h> - -int X = 0; - -void *Thread(void *p) { - X = 42; - return 0; -} - -int main() { - pthread_t t; - usleep(100*1000); - pthread_create(&t, 0, Thread, 0); - X = 43; - pthread_join(t, 0); - return 0; -} - -// CHECK: WARNING: ThreadSanitizer: data race -// CHECK-NOT: As if synchronized via sleep diff --git a/compiler-rt/lib/tsan/output_tests/static_init1.cc b/compiler-rt/lib/tsan/output_tests/static_init1.cc deleted file mode 100644 index 75d281954e1..00000000000 --- a/compiler-rt/lib/tsan/output_tests/static_init1.cc +++ /dev/null @@ -1,25 +0,0 @@ -#include <pthread.h> -#include <stdlib.h> -#include <stdio.h> - -struct P { - int x; - int y; -}; - -void *Thread(void *x) { - static P p = {rand(), rand()}; - if (p.x > RAND_MAX || p.y > RAND_MAX) - exit(1); - return 0; -} - -int main() { - pthread_t t[2]; - pthread_create(&t[0], 0, Thread, 0); - pthread_create(&t[1], 0, Thread, 0); - pthread_join(t[0], 0); - pthread_join(t[1], 0); -} - -// CHECK-NOT: WARNING: ThreadSanitizer: data race diff --git a/compiler-rt/lib/tsan/output_tests/static_init2.cc b/compiler-rt/lib/tsan/output_tests/static_init2.cc deleted file mode 100644 index 8d41061c1ea..00000000000 --- a/compiler-rt/lib/tsan/output_tests/static_init2.cc +++ /dev/null @@ -1,31 +0,0 @@ -#include <pthread.h> -#include <stdlib.h> -#include <stdio.h> - -struct Cache { - int x; - explicit Cache(int x) - : x(x) { - } -}; - -void foo(Cache *my) { - static Cache *c = my ? my : new Cache(rand()); - if (c->x >= RAND_MAX) - exit(1); -} - -void *Thread(void *x) { - foo(new Cache(rand())); - return 0; -} - -int main() { - pthread_t t[2]; - pthread_create(&t[0], 0, Thread, 0); - pthread_create(&t[1], 0, Thread, 0); - pthread_join(t[0], 0); - pthread_join(t[1], 0); -} - -// CHECK-NOT: WARNING: ThreadSanitizer: data race diff --git a/compiler-rt/lib/tsan/output_tests/static_init3.cc b/compiler-rt/lib/tsan/output_tests/static_init3.cc deleted file mode 100644 index 718f811d0df..00000000000 --- a/compiler-rt/lib/tsan/output_tests/static_init3.cc +++ /dev/null @@ -1,46 +0,0 @@ -#include <pthread.h> -#include <stdlib.h> -#include <stdio.h> -#include <sched.h> - -struct Cache { - int x; -}; - -Cache g_cache; - -Cache *CreateCache() { - g_cache.x = rand(); - return &g_cache; -} - -_Atomic(Cache*) queue; - -void *Thread1(void *x) { - static Cache *c = CreateCache(); - __c11_atomic_store(&queue, c, 0); - return 0; -} - -void *Thread2(void *x) { - Cache *c = 0; - for (;;) { - c = __c11_atomic_load(&queue, 0); - if (c) - break; - sched_yield(); - } - if (c->x >= RAND_MAX) - exit(1); - return 0; -} - -int main() { - pthread_t t[2]; - pthread_create(&t[0], 0, Thread1, 0); - pthread_create(&t[1], 0, Thread2, 0); - pthread_join(t[0], 0); - pthread_join(t[1], 0); -} - -// CHECK: WARNING: ThreadSanitizer: data race diff --git a/compiler-rt/lib/tsan/output_tests/static_init4.cc b/compiler-rt/lib/tsan/output_tests/static_init4.cc deleted file mode 100644 index 175d4642599..00000000000 --- a/compiler-rt/lib/tsan/output_tests/static_init4.cc +++ /dev/null @@ -1,35 +0,0 @@ -#include <pthread.h> -#include <stdlib.h> -#include <stdio.h> -#include <sched.h> - -struct Cache { - int x; - explicit Cache(int x) - : x(x) { - } -}; - -int g_other; - -Cache *CreateCache() { - g_other = rand(); - return new Cache(rand()); -} - -void *Thread1(void *x) { - static Cache *c = CreateCache(); - if (c->x == g_other) - exit(1); - return 0; -} - -int main() { - pthread_t t[2]; - pthread_create(&t[0], 0, Thread1, 0); - pthread_create(&t[1], 0, Thread1, 0); - pthread_join(t[0], 0); - pthread_join(t[1], 0); -} - -// CHECK-NOT: WARNING: ThreadSanitizer: data race diff --git a/compiler-rt/lib/tsan/output_tests/static_init5.cc b/compiler-rt/lib/tsan/output_tests/static_init5.cc deleted file mode 100644 index 89c11373c2f..00000000000 --- a/compiler-rt/lib/tsan/output_tests/static_init5.cc +++ /dev/null @@ -1,40 +0,0 @@ -#include <pthread.h> -#include <stdlib.h> -#include <stdio.h> -#include <sched.h> - -struct Cache { - int x; - explicit Cache(int x) - : x(x) { - } -}; - -void *AsyncInit(void *p) { - return new Cache((int)(long)p); -} - -Cache *CreateCache() { - pthread_t t; - pthread_create(&t, 0, AsyncInit, (void*)rand()); - void *res; - pthread_join(t, &res); - return (Cache*)res; -} - -void *Thread1(void *x) { - static Cache *c = CreateCache(); - if (c->x >= RAND_MAX) - exit(1); - return 0; -} - -int main() { - pthread_t t[2]; - pthread_create(&t[0], 0, Thread1, 0); - pthread_create(&t[1], 0, Thread1, 0); - pthread_join(t[0], 0); - pthread_join(t[1], 0); -} - -// CHECK-NOT: WARNING: ThreadSanitizer: data race diff --git a/compiler-rt/lib/tsan/output_tests/suppress_same_address.cc b/compiler-rt/lib/tsan/output_tests/suppress_same_address.cc deleted file mode 100644 index 6e98970a16e..00000000000 --- a/compiler-rt/lib/tsan/output_tests/suppress_same_address.cc +++ /dev/null @@ -1,27 +0,0 @@ -#include <pthread.h> - -int X; - -void *Thread1(void *x) { - X = 42; - X = 66; - X = 78; - return 0; -} - -void *Thread2(void *x) { - X = 11; - X = 99; - X = 73; - return 0; -} - -int main() { - pthread_t t; - pthread_create(&t, 0, Thread1, 0); - Thread2(0); - pthread_join(t, 0); -} - -// CHECK: ThreadSanitizer: reported 1 warnings - diff --git a/compiler-rt/lib/tsan/output_tests/suppress_same_stacks.cc b/compiler-rt/lib/tsan/output_tests/suppress_same_stacks.cc deleted file mode 100644 index 6046a4ea9f3..00000000000 --- a/compiler-rt/lib/tsan/output_tests/suppress_same_stacks.cc +++ /dev/null @@ -1,27 +0,0 @@ -#include <pthread.h> - -volatile int N; // Prevent loop unrolling. -int **data; - -void *Thread1(void *x) { - for (int i = 0; i < N; i++) - data[i][0] = 42; - return 0; -} - -int main() { - N = 4; - data = new int*[N]; - for (int i = 0; i < N; i++) - data[i] = new int; - pthread_t t; - pthread_create(&t, 0, Thread1, 0); - Thread1(0); - pthread_join(t, 0); - for (int i = 0; i < N; i++) - delete data[i]; - delete[] data; -} - -// CHECK: ThreadSanitizer: reported 1 warnings - diff --git a/compiler-rt/lib/tsan/output_tests/test_output.sh b/compiler-rt/lib/tsan/output_tests/test_output.sh deleted file mode 100755 index bd9cd915876..00000000000 --- a/compiler-rt/lib/tsan/output_tests/test_output.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -ulimit -s 8192 -set -e # fail on any error - -ROOTDIR=$(dirname $0)/.. - -# Assuming clang is in path. -CC=clang -CXX=clang++ - -# TODO: add testing for all of -O0...-O3 -CFLAGS="-fthread-sanitizer -fPIE -O1 -g -fno-builtin -Wall" -LDFLAGS="-pie -lpthread -ldl $ROOTDIR/rtl/libtsan.a" - -test_file() { - SRC=$1 - COMPILER=$2 - echo ----- TESTING $(basename $1) - OBJ=$SRC.o - EXE=$SRC.exe - $COMPILER $SRC $CFLAGS -c -o $OBJ - $COMPILER $OBJ $LDFLAGS -o $EXE - RES=$(TSAN_OPTIONS="atexit_sleep_ms=0" $EXE 2>&1 || true) - if [ "$3" != "" ]; then - printf "%s\n" "$RES" - fi - printf "%s\n" "$RES" | FileCheck $SRC - if [ "$3" == "" ]; then - rm -f $EXE $OBJ - fi -} - -if [ "$1" == "" ]; then - for c in $ROOTDIR/output_tests/*.{c,cc}; do - if [[ $c == */failing_* ]]; then - echo SKIPPING FAILING TEST $c - continue - fi - COMPILER=$CXX - case $c in - *.c) COMPILER=$CC - esac - test_file $c $COMPILER - done - wait -else - test_file $ROOTDIR/output_tests/$1 $CXX "DUMP" -fi diff --git a/compiler-rt/lib/tsan/output_tests/thread_leak.c b/compiler-rt/lib/tsan/output_tests/thread_leak.c deleted file mode 100644 index 88a11be4e9c..00000000000 --- a/compiler-rt/lib/tsan/output_tests/thread_leak.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <pthread.h> - -void *Thread(void *x) { - return 0; -} - -int main() { - pthread_t t; - pthread_create(&t, 0, Thread, 0); - pthread_join(t, 0); - return 0; -} - -// CHECK-NOT: WARNING: ThreadSanitizer: thread leak - diff --git a/compiler-rt/lib/tsan/output_tests/thread_leak2.c b/compiler-rt/lib/tsan/output_tests/thread_leak2.c deleted file mode 100644 index 71e9c50b8a2..00000000000 --- a/compiler-rt/lib/tsan/output_tests/thread_leak2.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <pthread.h> - -void *Thread(void *x) { - return 0; -} - -int main() { - pthread_t t; - pthread_create(&t, 0, Thread, 0); - pthread_detach(t); - return 0; -} - -// CHECK-NOT: WARNING: ThreadSanitizer: thread leak - diff --git a/compiler-rt/lib/tsan/output_tests/thread_leak3.c b/compiler-rt/lib/tsan/output_tests/thread_leak3.c deleted file mode 100644 index 058b6e54d9d..00000000000 --- a/compiler-rt/lib/tsan/output_tests/thread_leak3.c +++ /dev/null @@ -1,14 +0,0 @@ -#include <pthread.h> - -void *Thread(void *x) { - return 0; -} - -int main() { - pthread_t t; - pthread_create(&t, 0, Thread, 0); - return 0; -} - -// CHECK: WARNING: ThreadSanitizer: thread leak - diff --git a/compiler-rt/lib/tsan/output_tests/tiny_race.c b/compiler-rt/lib/tsan/output_tests/tiny_race.c deleted file mode 100644 index 3a8d192a671..00000000000 --- a/compiler-rt/lib/tsan/output_tests/tiny_race.c +++ /dev/null @@ -1,14 +0,0 @@ -#include <pthread.h> -int Global; -void *Thread1(void *x) { - Global = 42; - return x; -} -int main() { - pthread_t t; - pthread_create(&t, NULL, Thread1, NULL); - Global = 43; - pthread_join(t, NULL); - return Global; -} -// CHECK: WARNING: ThreadSanitizer: data race diff --git a/compiler-rt/lib/tsan/output_tests/virtual_inheritance_compile_bug.cc b/compiler-rt/lib/tsan/output_tests/virtual_inheritance_compile_bug.cc deleted file mode 100644 index 6198e8a870b..00000000000 --- a/compiler-rt/lib/tsan/output_tests/virtual_inheritance_compile_bug.cc +++ /dev/null @@ -1,13 +0,0 @@ -// Regression test for http://code.google.com/p/thread-sanitizer/issues/detail?id=3. -// The C++ variant is much more compact that the LLVM IR equivalent. -#include <stdio.h> -struct AAA { virtual long aaa () { return 0; } }; // NOLINT -struct BBB: virtual AAA { unsigned long bbb; }; // NOLINT -struct CCC: virtual AAA { }; -struct DDD: CCC, BBB { DDD(); }; // NOLINT -DDD::DDD() { } -int main() { - DDD d; - printf("OK\n"); -} -// CHECK: OK diff --git a/compiler-rt/lib/tsan/output_tests/vptr_benign_race.cc b/compiler-rt/lib/tsan/output_tests/vptr_benign_race.cc deleted file mode 100644 index fec4ffbb6bc..00000000000 --- a/compiler-rt/lib/tsan/output_tests/vptr_benign_race.cc +++ /dev/null @@ -1,50 +0,0 @@ -#include <pthread.h> -#include <semaphore.h> -#include <stdio.h> - -struct A { - A() { - sem_init(&sem_, 0, 0); - } - virtual void F() { - } - void Done() { - sem_post(&sem_); - } - virtual ~A() { - } - sem_t sem_; -}; - -struct B : A { - virtual void F() { - } - virtual ~B() { - sem_wait(&sem_); - sem_destroy(&sem_); - } -}; - -static A *obj = new B; - -void *Thread1(void *x) { - obj->F(); - obj->Done(); - return NULL; -} - -void *Thread2(void *x) { - delete obj; - return NULL; -} - -int main() { - pthread_t t[2]; - pthread_create(&t[0], NULL, Thread1, NULL); - pthread_create(&t[1], NULL, Thread2, NULL); - pthread_join(t[0], NULL); - pthread_join(t[1], NULL); - fprintf(stderr, "PASS\n"); -} -// CHECK: PASS -// CHECK-NOT: WARNING: ThreadSanitizer: data race diff --git a/compiler-rt/lib/tsan/output_tests/vptr_harmful_race.cc b/compiler-rt/lib/tsan/output_tests/vptr_harmful_race.cc deleted file mode 100644 index a19e6abc7bc..00000000000 --- a/compiler-rt/lib/tsan/output_tests/vptr_harmful_race.cc +++ /dev/null @@ -1,48 +0,0 @@ -#include <pthread.h> -#include <semaphore.h> -#include <stdio.h> - -struct A { - A() { - sem_init(&sem_, 0, 0); - } - virtual void F() { - } - void Done() { - sem_post(&sem_); - } - virtual ~A() { - sem_wait(&sem_); - sem_destroy(&sem_); - } - sem_t sem_; -}; - -struct B : A { - virtual void F() { - } - virtual ~B() { } -}; - -static A *obj = new B; - -void *Thread1(void *x) { - obj->F(); - obj->Done(); - return NULL; -} - -void *Thread2(void *x) { - delete obj; - return NULL; -} - -int main() { - pthread_t t[2]; - pthread_create(&t[0], NULL, Thread1, NULL); - pthread_create(&t[1], NULL, Thread2, NULL); - pthread_join(t[0], NULL); - pthread_join(t[1], NULL); -} - -// CHECK: WARNING: ThreadSanitizer: data race |

