Skip to content

Commit

Permalink
[tsan] Include __tsan_external_* API from a header file instead of de…
Browse files Browse the repository at this point in the history
…claring them manually. NFC.

Differential Revision: https://reviews.llvm.org/D32384

llvm-svn: 301190
  • Loading branch information
kubamracek committed Apr 24, 2017
1 parent 264b6de commit dd13e4e
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 26 deletions.
2 changes: 0 additions & 2 deletions compiler-rt/test/tsan/Darwin/debug_external.cc
Expand Up @@ -17,8 +17,6 @@ int __tsan_get_report_loc(void *report, unsigned long idx, const char **type,
unsigned long trace_size);
int __tsan_get_report_loc_object_type(void *report, unsigned long idx,
const char **object_type);
void *__tsan_external_register_tag(const char *object_type);
void __tsan_external_assign_tag(void *addr, void *tag);
}

void *Thread(void *arg) {
Expand Down
8 changes: 0 additions & 8 deletions compiler-rt/test/tsan/Darwin/external-dups.cc
Expand Up @@ -5,14 +5,6 @@

#import "../test.h"

extern "C" {
void *__tsan_external_register_tag(const char *object_type);
void *__tsan_external_assign_tag(void *addr, void *tag);
void __tsan_external_read(void *addr, void *caller_pc, void *tag);
void __tsan_external_write(void *addr, void *caller_pc, void *tag);
void __tsan_write8(void *addr);
}

void *tag;

__attribute__((no_sanitize("thread")))
Expand Down
2 changes: 2 additions & 0 deletions compiler-rt/test/tsan/test.h
Expand Up @@ -8,6 +8,8 @@
#include <stdarg.h>
#include "sanitizer_common/print_address.h"

#include <sanitizer/tsan_interface.h>

#ifdef __APPLE__
#include <mach/mach_time.h>
#endif
Expand Down
23 changes: 7 additions & 16 deletions compiler-rt/test/tsan/unaligned_race.cc
Expand Up @@ -6,31 +6,22 @@

volatile uint64_t objs[8*2*(2 + 4 + 8)][2];

extern "C" {
uint16_t __sanitizer_unaligned_load16(volatile void *addr);
uint32_t __sanitizer_unaligned_load32(volatile void *addr);
uint64_t __sanitizer_unaligned_load64(volatile void *addr);
void __sanitizer_unaligned_store16(volatile void *addr, uint16_t v);
void __sanitizer_unaligned_store32(volatile void *addr, uint32_t v);
void __sanitizer_unaligned_store64(volatile void *addr, uint64_t v);
}

// All this mess is to generate unique stack for each race,
// otherwise tsan will suppress similar stacks.

static NOINLINE void access(volatile char *p, int sz, int rw) {
static NOINLINE void access(volatile void *p, int sz, int rw) {
if (rw) {
switch (sz) {
case 0: __sanitizer_unaligned_store16(p, 0); break;
case 1: __sanitizer_unaligned_store32(p, 0); break;
case 2: __sanitizer_unaligned_store64(p, 0); break;
case 0: __sanitizer_unaligned_store16((void *)p, 0); break;
case 1: __sanitizer_unaligned_store32((void *)p, 0); break;
case 2: __sanitizer_unaligned_store64((void *)p, 0); break;
default: exit(1);
}
} else {
switch (sz) {
case 0: __sanitizer_unaligned_load16(p); break;
case 1: __sanitizer_unaligned_load32(p); break;
case 2: __sanitizer_unaligned_load64(p); break;
case 0: __sanitizer_unaligned_load16((void *)p); break;
case 1: __sanitizer_unaligned_load32((void *)p); break;
case 2: __sanitizer_unaligned_load64((void *)p); break;
default: exit(1);
}
}
Expand Down

0 comments on commit dd13e4e

Please sign in to comment.