diff options
Diffstat (limited to 'lib/sanitizer_common/sanitizer_mac.cpp')
-rw-r--r-- | lib/sanitizer_common/sanitizer_mac.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/sanitizer_common/sanitizer_mac.cpp b/lib/sanitizer_common/sanitizer_mac.cpp index 8eb1dfbde..ea4bd02aa 100644 --- a/lib/sanitizer_common/sanitizer_mac.cpp +++ b/lib/sanitizer_common/sanitizer_mac.cpp @@ -754,6 +754,12 @@ SignalContext::WriteFlag SignalContext::GetWriteFlag() const { #endif } +bool SignalContext::IsTrueFaultingAddress() const { + auto si = static_cast<const siginfo_t *>(siginfo); + // "Real" SIGSEGV codes (e.g., SEGV_MAPERR, SEGV_MAPERR) are non-zero. + return si->si_signo == SIGSEGV && si->si_code != 0; +} + static void GetPcSpBp(void *context, uptr *pc, uptr *sp, uptr *bp) { ucontext_t *ucontext = (ucontext_t*)context; # if defined(__aarch64__) |