diff options
author | Kuba Brecka <kuba.brecka@gmail.com> | 2015-12-18 13:52:08 +0000 |
---|---|---|
committer | Kuba Brecka <kuba.brecka@gmail.com> | 2015-12-18 13:52:08 +0000 |
commit | e6ed4c6aee321ee99a3f77dbfe830ab0590c6d10 (patch) | |
tree | a377e076ee8e52b4ad0889865fbda81185f9d63f /lib/tsan/rtl/tsan_interface_inl.h | |
parent | 34e0b39fdf0cb45eeb0144be2a238223af3cd787 (diff) |
Revert r255996 ("[tsan] Add a DCHECK to verify __tsan_read* and __tsan_write function aren't called from ScopedInterceptor").
There are some test failures on the Linux buildbots.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@255997 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/rtl/tsan_interface_inl.h')
-rw-r--r-- | lib/tsan/rtl/tsan_interface_inl.h | 89 |
1 files changed, 61 insertions, 28 deletions
diff --git a/lib/tsan/rtl/tsan_interface_inl.h b/lib/tsan/rtl/tsan_interface_inl.h index 3a677703e..8852aa348 100644 --- a/lib/tsan/rtl/tsan_interface_inl.h +++ b/lib/tsan/rtl/tsan_interface_inl.h @@ -18,36 +18,69 @@ using namespace __tsan; // NOLINT -#define TSAN_MEM_ACCESS_FUNC(type, func, size) \ - void __tsan_##type(void *addr) { \ - ThreadState *thr = cur_thread(); \ - DCHECK_EQ(thr->in_interceptor_count, 0); \ - func(thr, CALLERPC, (uptr)addr, size); \ - } +void __tsan_read1(void *addr) { + MemoryRead(cur_thread(), CALLERPC, (uptr)addr, kSizeLog1); +} -#define TSAN_MEM_ACCESS_FUNC_PC(type, func, size) \ - void __tsan_##type(void *addr, void *pc) { \ - ThreadState *thr = cur_thread(); \ - DCHECK_EQ(thr->in_interceptor_count, 0); \ - func(thr, (uptr)pc, (uptr)addr, size); \ - } +void __tsan_read2(void *addr) { + MemoryRead(cur_thread(), CALLERPC, (uptr)addr, kSizeLog2); +} + +void __tsan_read4(void *addr) { + MemoryRead(cur_thread(), CALLERPC, (uptr)addr, kSizeLog4); +} + +void __tsan_read8(void *addr) { + MemoryRead(cur_thread(), CALLERPC, (uptr)addr, kSizeLog8); +} + +void __tsan_write1(void *addr) { + MemoryWrite(cur_thread(), CALLERPC, (uptr)addr, kSizeLog1); +} + +void __tsan_write2(void *addr) { + MemoryWrite(cur_thread(), CALLERPC, (uptr)addr, kSizeLog2); +} + +void __tsan_write4(void *addr) { + MemoryWrite(cur_thread(), CALLERPC, (uptr)addr, kSizeLog4); +} + +void __tsan_write8(void *addr) { + MemoryWrite(cur_thread(), CALLERPC, (uptr)addr, kSizeLog8); +} -TSAN_MEM_ACCESS_FUNC(read1, MemoryRead, kSizeLog1) -TSAN_MEM_ACCESS_FUNC(read2, MemoryRead, kSizeLog2) -TSAN_MEM_ACCESS_FUNC(read4, MemoryRead, kSizeLog4) -TSAN_MEM_ACCESS_FUNC(read8, MemoryRead, kSizeLog8) -TSAN_MEM_ACCESS_FUNC(write1, MemoryWrite, kSizeLog1) -TSAN_MEM_ACCESS_FUNC(write2, MemoryWrite, kSizeLog2) -TSAN_MEM_ACCESS_FUNC(write4, MemoryWrite, kSizeLog4) -TSAN_MEM_ACCESS_FUNC(write8, MemoryWrite, kSizeLog8) -TSAN_MEM_ACCESS_FUNC_PC(read1_pc, MemoryRead, kSizeLog1) -TSAN_MEM_ACCESS_FUNC_PC(read2_pc, MemoryRead, kSizeLog2) -TSAN_MEM_ACCESS_FUNC_PC(read4_pc, MemoryRead, kSizeLog4) -TSAN_MEM_ACCESS_FUNC_PC(read8_pc, MemoryRead, kSizeLog8) -TSAN_MEM_ACCESS_FUNC_PC(write1_pc, MemoryWrite, kSizeLog1) -TSAN_MEM_ACCESS_FUNC_PC(write2_pc, MemoryWrite, kSizeLog2) -TSAN_MEM_ACCESS_FUNC_PC(write4_pc, MemoryWrite, kSizeLog4) -TSAN_MEM_ACCESS_FUNC_PC(write8_pc, MemoryWrite, kSizeLog8) +void __tsan_read1_pc(void *addr, void *pc) { + MemoryRead(cur_thread(), (uptr)pc, (uptr)addr, kSizeLog1); +} + +void __tsan_read2_pc(void *addr, void *pc) { + MemoryRead(cur_thread(), (uptr)pc, (uptr)addr, kSizeLog2); +} + +void __tsan_read4_pc(void *addr, void *pc) { + MemoryRead(cur_thread(), (uptr)pc, (uptr)addr, kSizeLog4); +} + +void __tsan_read8_pc(void *addr, void *pc) { + MemoryRead(cur_thread(), (uptr)pc, (uptr)addr, kSizeLog8); +} + +void __tsan_write1_pc(void *addr, void *pc) { + MemoryWrite(cur_thread(), (uptr)pc, (uptr)addr, kSizeLog1); +} + +void __tsan_write2_pc(void *addr, void *pc) { + MemoryWrite(cur_thread(), (uptr)pc, (uptr)addr, kSizeLog2); +} + +void __tsan_write4_pc(void *addr, void *pc) { + MemoryWrite(cur_thread(), (uptr)pc, (uptr)addr, kSizeLog4); +} + +void __tsan_write8_pc(void *addr, void *pc) { + MemoryWrite(cur_thread(), (uptr)pc, (uptr)addr, kSizeLog8); +} void __tsan_vptr_update(void **vptr_p, void *new_val) { CHECK_EQ(sizeof(vptr_p), 8); |