summaryrefslogtreecommitdiff
path: root/lib/msan/msan.cc
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2013-08-27 12:59:39 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2013-08-27 12:59:39 +0000
commit91659d56bab07fb82ac0edad18c04b333680fd62 (patch)
tree8cbbbade597f514b0e4efa904b8e783e883ca298 /lib/msan/msan.cc
parente0a871284c7496b91add2956531d1a9e65b7bc88 (diff)
downloadcompiler-rt-91659d56bab07fb82ac0edad18c04b333680fd62.tar.gz
compiler-rt-91659d56bab07fb82ac0edad18c04b333680fd62.tar.bz2
compiler-rt-91659d56bab07fb82ac0edad18c04b333680fd62.tar.xz
[msan] Unpoison all TLS shadow when leaving a signal handler.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@189343 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/msan/msan.cc')
-rw-r--r--lib/msan/msan.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/msan/msan.cc b/lib/msan/msan.cc
index 24912b7b..d7912fa8 100644
--- a/lib/msan/msan.cc
+++ b/lib/msan/msan.cc
@@ -230,6 +230,13 @@ void UnpoisonParam(uptr n) {
internal_memset(__msan_param_tls, 0, n * sizeof(*__msan_param_tls));
}
+void UnpoisonThreadLocalState() {
+ internal_memset(__msan_param_tls, 0, sizeof(__msan_param_tls));
+ internal_memset(__msan_retval_tls, 0, sizeof(__msan_retval_tls));
+ internal_memset(__msan_va_arg_tls, 0, sizeof(__msan_va_arg_tls));
+ __msan_va_arg_overflow_size_tls = 0;
+}
+
} // namespace __msan
// Interface.