[PATCH] D32384: [tsan] Include __tsan_external_* API from a header file instead of declaring them manually

Kuba (Brecka) Mracek via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 21 15:48:15 PDT 2017


kubamracek created this revision.
kubamracek added a project: Sanitizers.

NFC.


Repository:
  rL LLVM

https://reviews.llvm.org/D32384

Files:
  test/tsan/Darwin/debug_external.cc
  test/tsan/Darwin/external-dups.cc
  test/tsan/test.h
  test/tsan/unaligned_race.cc


Index: test/tsan/unaligned_race.cc
===================================================================
--- test/tsan/unaligned_race.cc
+++ test/tsan/unaligned_race.cc
@@ -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);
     }
   }
Index: test/tsan/test.h
===================================================================
--- test/tsan/test.h
+++ test/tsan/test.h
@@ -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
Index: test/tsan/Darwin/external-dups.cc
===================================================================
--- test/tsan/Darwin/external-dups.cc
+++ test/tsan/Darwin/external-dups.cc
@@ -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")))
Index: test/tsan/Darwin/debug_external.cc
===================================================================
--- test/tsan/Darwin/debug_external.cc
+++ test/tsan/Darwin/debug_external.cc
@@ -17,8 +17,6 @@
                           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) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32384.96257.patch
Type: text/x-patch
Size: 3177 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170421/d6a86baf/attachment.bin>


More information about the llvm-commits mailing list