diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2012-08-18 11:49:00 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2012-08-18 11:49:00 +0000 |
commit | 55e711ed818d7553d62eba4b3a2fad3e2723f697 (patch) | |
tree | 198ecf28db95c10bab243415975b3f4fc6e1ac07 /lib/tsan/rtl/tsan_sync.cc | |
parent | a911c6f1d0c6f8b7e175bd36e7044d79cdcf5153 (diff) |
tsan: proper handling of linker initialized mutexes
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@162169 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/rtl/tsan_sync.cc')
-rw-r--r-- | lib/tsan/rtl/tsan_sync.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/tsan/rtl/tsan_sync.cc b/lib/tsan/rtl/tsan_sync.cc index 1f798b297..86265bb81 100644 --- a/lib/tsan/rtl/tsan_sync.cc +++ b/lib/tsan/rtl/tsan_sync.cc @@ -123,6 +123,8 @@ SyncVar* SyncTab::GetAndRemove(ThreadState *thr, uptr pc, uptr addr) { res = *prev; while (res) { if (res->addr == addr) { + if (res->is_linker_init) + return 0; *prev = res->next; break; } @@ -147,6 +149,8 @@ SyncVar* SyncTab::GetAndRemove(ThreadState *thr, uptr pc, uptr addr) { res = *prev; while (res) { if (res->addr == addr) { + if (res->is_linker_init) + return 0; *prev = res->next; break; } |