diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-08-27 12:59:39 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-08-27 12:59:39 +0000 |
commit | 91659d56bab07fb82ac0edad18c04b333680fd62 (patch) | |
tree | 8cbbbade597f514b0e4efa904b8e783e883ca298 /lib/msan/msan.cc | |
parent | e0a871284c7496b91add2956531d1a9e65b7bc88 (diff) | |
download | compiler-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.cc | 7 |
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. |