[sanitizers] read/write page fault detection on mac.
authorMike Aizatsky <aizatsky@chromium.org>
Mon, 25 Apr 2016 21:44:43 +0000 (21:44 +0000)
committerMike Aizatsky <aizatsky@chromium.org>
Mon, 25 Apr 2016 21:44:43 +0000 (21:44 +0000)
Subscribers: kubabrecka

Differential Revision: http://reviews.llvm.org/D19495

llvm-svn: 267477

compiler-rt/lib/sanitizer_common/sanitizer_mac.cc
compiler-rt/test/asan/TestCases/Posix/segv_read_write.c [moved from compiler-rt/test/asan/TestCases/Linux/segv_read_write.c with 100% similarity]

index 5fbb147..c2e3d7f 100644 (file)
@@ -500,7 +500,8 @@ void LogFullErrorReport(const char *buffer) {
 }
 
 SignalContext::WriteFlag SignalContext::GetWriteFlag(void *context) {
-  return UNKNOWN;  // FIXME: implement this.
+  ucontext_t *ucontext = static_cast<ucontext_t*>(context);
+  return ucontext->uc_mcontext->__es.__err & 2 /*T_PF_WRITE*/ ? WRITE : READ;
 }
 
 void GetPcSpBp(void *context, uptr *pc, uptr *sp, uptr *bp) {