diff options
author | Derek Bruening <bruening@google.com> | 2016-07-06 21:04:48 +0000 |
---|---|---|
committer | Derek Bruening <bruening@google.com> | 2016-07-06 21:04:48 +0000 |
commit | 3df39427e495cb2ae84b9d7fc8541d4601f7b597 (patch) | |
tree | 7f4a0a5a7f6cb3aa17e1250fb82cf2c4891f1f4e /lib/sanitizer_common/sanitizer_posix.h | |
parent | ccf627eb417a383adffda4d894a3776792bbbf4c (diff) | |
download | compiler-rt-3df39427e495cb2ae84b9d7fc8541d4601f7b597.tar.gz |
[esan|wset] Ensure SIGSEGV is not blocked
Summary:
Adds interception of sigprocmask and pthread_sigmask to esan so that the
working set tool can prevent SIGSEGV from being blocked. A blocked SIGSEGV
results in crashes due to our lazy shadow page allocation scheme.
Adds new sanitizer helper functions internal_sigemptyset and
internal_sigismember.
Adds a test to workingset-signal-posix.cpp.
Reviewers: aizatsky
Subscribers: vitalybuka, zhaoqin, kcc, eugenis, llvm-commits, kubabrecka
Differential Revision: http://reviews.llvm.org/D22063
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@274672 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/sanitizer_common/sanitizer_posix.h')
-rw-r--r-- | lib/sanitizer_common/sanitizer_posix.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/sanitizer_common/sanitizer_posix.h b/lib/sanitizer_common/sanitizer_posix.h index a46b5efab..7f862cd9e 100644 --- a/lib/sanitizer_common/sanitizer_posix.h +++ b/lib/sanitizer_common/sanitizer_posix.h @@ -82,6 +82,8 @@ int my_pthread_attr_getstack(void *attr, void **addr, uptr *size); // order for internal_sigaction() to bypass interceptors. int internal_sigaction(int signum, const void *act, void *oldact); void internal_sigfillset(__sanitizer_sigset_t *set); +void internal_sigemptyset(__sanitizer_sigset_t *set); +bool internal_sigismember(__sanitizer_sigset_t *set, int signum); uptr internal_execve(const char *filename, char *const argv[], char *const envp[]); |