diff --git a/compiler-rt/test/tsan/fiber_cleanup.cpp b/compiler-rt/test/tsan/fiber_cleanup.cpp --- a/compiler-rt/test/tsan/fiber_cleanup.cpp +++ b/compiler-rt/test/tsan/fiber_cleanup.cpp @@ -9,7 +9,7 @@ long count_memory_mappings() { pid_t my_pid = getpid(); char proc_file_name[128]; - snprintf(proc_file_name, sizeof(proc_file_name), "/proc/%ld/maps", my_pid); + snprintf(proc_file_name, sizeof(proc_file_name), "/proc/%d/maps", my_pid); FILE *proc_file = fopen(proc_file_name, "r"); long line_count = 0; diff --git a/compiler-rt/test/tsan/free_race.c b/compiler-rt/test/tsan/free_race.c --- a/compiler-rt/test/tsan/free_race.c +++ b/compiler-rt/test/tsan/free_race.c @@ -15,7 +15,7 @@ return NULL; } -void *Thread2(void *x) __attribute__((noinline)) { +__attribute__((noinline)) void *Thread2(void *x) { barrier_wait(&barrier); pthread_mutex_lock(&mtx); mem[0] = 42; diff --git a/compiler-rt/test/tsan/free_race2.c b/compiler-rt/test/tsan/free_race2.c --- a/compiler-rt/test/tsan/free_race2.c +++ b/compiler-rt/test/tsan/free_race2.c @@ -1,23 +1,34 @@ // RUN: %clang_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s +// RUN: %clang_tsan -O1 -DACCESS_OFFSET=4 %s -o %t && %deflake %run %t | FileCheck %s #include -void __attribute__((noinline)) foo(int *mem) { +#ifndef ACCESS_OFFSET +#define ACCESS_OFFSET 0 +#endif + +__attribute__((noinline)) void foo(void *mem) { + free(mem); +} + +__attribute__((noinline)) void baz(void *mem) { free(mem); } -void __attribute__((noinline)) bar(int *mem) { - mem[0] = 42; +__attribute__((noinline)) void bar(void *mem) { + *(long*)((char*)mem + ACCESS_OFFSET) = 42; } int main() { - int *mem = (int*)malloc(100); + void *mem = malloc(100); + baz(mem); + mem = 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: Write of size 8 at {{.*}} by main thread: // CHECK: #0 bar // CHECK: #1 main // CHECK: Previous write of size 8 at {{.*}} by main thread: diff --git a/compiler-rt/test/tsan/sleep_sync.cpp b/compiler-rt/test/tsan/sleep_sync.cpp --- a/compiler-rt/test/tsan/sleep_sync.cpp +++ b/compiler-rt/test/tsan/sleep_sync.cpp @@ -3,7 +3,7 @@ int X = 0; -void MySleep() __attribute__((noinline)) { +__attribute__((noinline)) void MySleep() { sleep(1); // the sleep that must appear in the report }