diff options
author | 2021-01-02 17:10:07 +0000 | |
---|---|---|
committer | 2021-01-02 17:10:07 +0000 | |
commit | 1f9cb04fc6f537ca6cf5a53c28927340cba218a2 (patch) | |
tree | b7ed93e9425eb3b3592edb1eedf5dd5ca8a1b515 /gnu/llvm/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cpp | |
parent | Add missing .Cm macros to the Address Family table. (diff) | |
download | wireguard-openbsd-1f9cb04fc6f537ca6cf5a53c28927340cba218a2.tar.xz wireguard-openbsd-1f9cb04fc6f537ca6cf5a53c28927340cba218a2.zip |
Import compiler-rt 11.0.0 release.
ok kettenis@
Diffstat (limited to 'gnu/llvm/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cpp')
-rw-r--r-- | gnu/llvm/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gnu/llvm/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cpp b/gnu/llvm/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cpp index ae65dd3fd99..eea52a34e97 100644 --- a/gnu/llvm/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cpp +++ b/gnu/llvm/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cpp @@ -19,6 +19,7 @@ #include "sanitizer_common/sanitizer_libc.h" #include "sanitizer_common/sanitizer_posix.h" #include "sanitizer_common/sanitizer_procmaps.h" +#include "sanitizer_common/sanitizer_ptrauth.h" #include "sanitizer_common/sanitizer_stackdepot.h" #include "tsan_platform.h" #include "tsan_rtl.h" @@ -257,7 +258,7 @@ void InitializePlatform() { pthread_introspection_hook_install(&my_pthread_introspection_hook); #endif - if (GetMacosVersion() >= MACOS_VERSION_MOJAVE) { + if (GetMacosAlignedVersion() >= MacosVersion(10, 14)) { // Libsystem currently uses a process-global key; this might change. const unsigned kTLSLongjmpXorKeySlot = 0x7; longjmp_xor_key = (uptr)pthread_getspecific(kTLSLongjmpXorKeySlot); @@ -266,7 +267,7 @@ void InitializePlatform() { #ifdef __aarch64__ # define LONG_JMP_SP_ENV_SLOT \ - ((GetMacosVersion() >= MACOS_VERSION_MOJAVE) ? 12 : 13) + ((GetMacosAlignedVersion() >= MacosVersion(10, 14)) ? 12 : 13) #else # define LONG_JMP_SP_ENV_SLOT 2 #endif @@ -274,6 +275,8 @@ void InitializePlatform() { uptr ExtractLongJmpSp(uptr *env) { uptr mangled_sp = env[LONG_JMP_SP_ENV_SLOT]; uptr sp = mangled_sp ^ longjmp_xor_key; + sp = (uptr)ptrauth_auth_data((void *)sp, ptrauth_key_asdb, + ptrauth_string_discriminator("sp")); return sp; } |