[tsan] Expose __tsan_ignore_thread_begin and __tsan_ignore_thread_end in TSan interface

This patch is needed to implement the function attribute that disable TSan checking at run time.

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

llvm-svn: 286658
This commit is contained in:
Anna Zaks 2016-11-11 22:43:12 +00:00
parent 96a905f7ba
commit be15addffe
2 changed files with 11 additions and 0 deletions

View File

@ -73,6 +73,9 @@ void __tsan_vptr_update(void **vptr_p, void *new_val);
SANITIZER_INTERFACE_ATTRIBUTE void __tsan_func_entry(void *call_pc);
SANITIZER_INTERFACE_ATTRIBUTE void __tsan_func_exit();
SANITIZER_INTERFACE_ATTRIBUTE void __tsan_ignore_thread_begin();
SANITIZER_INTERFACE_ATTRIBUTE void __tsan_ignore_thread_end();
SANITIZER_INTERFACE_ATTRIBUTE
void __tsan_read_range(void *addr, unsigned long size); // NOLINT
SANITIZER_INTERFACE_ATTRIBUTE

View File

@ -108,6 +108,14 @@ void __tsan_func_exit() {
FuncExit(cur_thread());
}
void __tsan_ignore_thread_begin() {
ThreadIgnoreBegin(cur_thread(), CALLERPC);
}
void __tsan_ignore_thread_end() {
ThreadIgnoreEnd(cur_thread(), CALLERPC);
}
void __tsan_read_range(void *addr, uptr size) {
MemoryAccessRange(cur_thread(), CALLERPC, (uptr)addr, size, false);
}