xref: /netbsd-src/external/gpl3/gcc.old/dist/libsanitizer/tsan/tsan_interface.cc (revision 212397c69a103ae7e5eafa8731ddfae671d2dee7)
1 //===-- tsan_interface.cc -------------------------------------------------===//
2 //
3 // This file is distributed under the University of Illinois Open Source
4 // License. See LICENSE.TXT for details.
5 //
6 //===----------------------------------------------------------------------===//
7 //
8 // This file is a part of ThreadSanitizer (TSan), a race detector.
9 //
10 //===----------------------------------------------------------------------===//
11 
12 #include "tsan_interface.h"
13 #include "tsan_interface_ann.h"
14 #include "tsan_rtl.h"
15 
16 #define CALLERPC ((uptr)__builtin_return_address(0))
17 
18 using namespace __tsan;  // NOLINT
19 
20 void __tsan_init() {
21   Initialize(cur_thread());
22 }
23 
24 void __tsan_read16(void *addr) {
25   MemoryRead(cur_thread(), CALLERPC, (uptr)addr, kSizeLog8);
26   MemoryRead(cur_thread(), CALLERPC, (uptr)addr + 8, kSizeLog8);
27 }
28 
29 void __tsan_write16(void *addr) {
30   MemoryWrite(cur_thread(), CALLERPC, (uptr)addr, kSizeLog8);
31   MemoryWrite(cur_thread(), CALLERPC, (uptr)addr + 8, kSizeLog8);
32 }
33 
34 void __tsan_acquire(void *addr) {
35   Acquire(cur_thread(), CALLERPC, (uptr)addr);
36 }
37 
38 void __tsan_release(void *addr) {
39   Release(cur_thread(), CALLERPC, (uptr)addr);
40 }
41