[Sanitizers][Darwin] Add READ/WRITE detection on arm64 for darwin.
authorBlue Gaston <bgaston2@apple.com>
Wed, 11 May 2022 19:52:32 +0000 (12:52 -0700)
committerBlue Gaston <bgaston2@apple.com>
Thu, 12 May 2022 17:51:49 +0000 (10:51 -0700)
commit9145cb8b7c9acd6e7980047e048007bc58b7fab9
tree9e9cb83266212449dcd479005c50ec488ab7d850
parent2fa8fc3d0afa00a96c11bdf655fa3e8d6707942c
[Sanitizers][Darwin] Add READ/WRITE detection on arm64 for darwin.

On arm64 the read/write flag is set on the esr register.
Adding this flag check for arm64 enables a more accurate
print out for sanitizer signal reports and matches the
behavior on x86.

Fixes bug: https://bugs.llvm.org/show_bug.cgi?id=27543 https://github.com/google/sanitizers/issues/653

These tests are now passing:
SanitizerCommon-asan-arm64-Darwin :: Posix/illegal_read_test.cpp
SanitizerCommon-asan-arm64-Darwin :: Posix/illegal_write_test.cpp
SanitizerCommon-asan-arm64e-Darwin :: Posix/illegal_read_test.cpp
   SanitizerCommon-asan-arm64e-Darwin :: Posix/illegal_write_test.cpp
   SanitizerCommon-tsan-arm64-Darwin :: Posix/illegal_read_test.cpp
   SanitizerCommon-tsan-arm64-Darwin :: Posix/illegal_write_test.cpp
   SanitizerCommon-tsan-arm64e-Darwin :: Posix/illegal_read_test.cpp
   SanitizerCommon-tsan-arm64e-Darwin :: Posix/illegal_write_test.cpp
   SanitizerCommon-ubsan-arm64-Darwin :: Posix/illegal_read_test.cpp
   SanitizerCommon-ubsan-arm64-Darwin :: Posix/illegal_write_test.cpp
   SanitizerCommon-ubsan-arm64e-Darwin :: Posix/illegal_read_test.cpp
   SanitizerCommon-ubsan-arm64e-Darwin :: Posix/illegal_write_test.cpp

rdar://92104440

Differential Revision: https://reviews.llvm.org/D125416
compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp