summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cpp
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2021-01-02 17:10:07 +0000
committerpatrick <patrick@openbsd.org>2021-01-02 17:10:07 +0000
commit1f9cb04fc6f537ca6cf5a53c28927340cba218a2 (patch)
treeb7ed93e9425eb3b3592edb1eedf5dd5ca8a1b515 /gnu/llvm/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cpp
parentAdd missing .Cm macros to the Address Family table. (diff)
downloadwireguard-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.cpp7
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;
}