summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2012-11-08 13:38:45 +0000
committerDmitry Vyukov <dvyukov@google.com>2012-11-08 13:38:45 +0000
commit1a9cd8ddea1985ab4941a8bd2f6e20822d1e9c1d (patch)
tree53725520ea8cb95e741c375d0ec0cef2e2ac6f18
parent3aa15c1ad60ae6c63973a0982662f26449f661bc (diff)
downloadcompiler-rt-1a9cd8ddea1985ab4941a8bd2f6e20822d1e9c1d.tar.gz
tsan: add range access functions for Go
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@167580 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/tsan/go/tsan_go.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/tsan/go/tsan_go.cc b/lib/tsan/go/tsan_go.cc
index 149684214..bb1ac1dd2 100644
--- a/lib/tsan/go/tsan_go.cc
+++ b/lib/tsan/go/tsan_go.cc
@@ -122,6 +122,18 @@ void __tsan_write(int goid, void *addr, void *pc) {
MemoryAccess(thr, (uptr)pc, (uptr)addr, 0, true);
}
+void __tsan_read_range(int goid, void *addr, uptr size, uptr step, void *pc) {
+ ThreadState *thr = goroutines[goid];
+ for (uptr i = 0; i < size; i += step)
+ MemoryAccess(thr, (uptr)pc, (uptr)addr + i, 0, false);
+}
+
+void __tsan_write_range(int goid, void *addr, uptr size, uptr step, void *pc) {
+ ThreadState *thr = goroutines[goid];
+ for (uptr i = 0; i < size; i += step)
+ MemoryAccess(thr, (uptr)pc, (uptr)addr + i, 0, true);
+}
+
void __tsan_func_enter(int goid, void *pc) {
ThreadState *thr = goroutines[goid];
FuncEntry(thr, (uptr)pc);