summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/tsan/go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2012-10-04 13:54:49 +0000
committerDmitry Vyukov <dvyukov@google.com>2012-10-04 13:54:49 +0000
commit6d5bd599c29fc6e968dabfbbcab105f6ff7a3108 (patch)
tree2be9a01853f8c3706f04774404dbf51adf1e71eb /compiler-rt/lib/tsan/go
parenta6d20010feea96ea5265af03b764f206f6440aa6 (diff)
downloadbcm5719-llvm-6d5bd599c29fc6e968dabfbbcab105f6ff7a3108.tar.gz
bcm5719-llvm-6d5bd599c29fc6e968dabfbbcab105f6ff7a3108.zip
tsan for Go: support mallocs before __tsan_init() (required to support cgo code)
llvm-svn: 165229
Diffstat (limited to 'compiler-rt/lib/tsan/go')
-rw-r--r--compiler-rt/lib/tsan/go/tsan_go.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler-rt/lib/tsan/go/tsan_go.cc b/compiler-rt/lib/tsan/go/tsan_go.cc
index 77da9fe70dd..eca6cae4e96 100644
--- a/compiler-rt/lib/tsan/go/tsan_go.cc
+++ b/compiler-rt/lib/tsan/go/tsan_go.cc
@@ -105,7 +105,7 @@ void __tsan_fini() {
thr->in_rtl++;
int res = Finalize(thr);
thr->in_rtl--;
- exit(res);
+ exit(res);
}
void __tsan_read(int goid, void *addr, void *pc) {
@@ -130,6 +130,8 @@ void __tsan_func_exit(int goid) {
void __tsan_malloc(int goid, void *p, uptr sz, void *pc) {
ThreadState *thr = goroutines[goid];
+ if (thr == 0) // probably before __tsan_init()
+ return;
thr->in_rtl++;
MemoryResetRange(thr, (uptr)pc, (uptr)p, sz);
MemoryAccessRange(thr, (uptr)pc, (uptr)p, sz, true);
OpenPOWER on IntegriCloud