summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc')
-rw-r--r--compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc b/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
index c5fcf6156d9..cd80e17fce2 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
+++ b/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
@@ -38,6 +38,7 @@
#include <sys/mman.h>
#if SANITIZER_LINUX
#include <sys/personality.h>
+#include <setjmp.h>
#endif
#include <sys/syscall.h>
#include <sys/socket.h>
@@ -67,6 +68,10 @@ extern "C" void *__libc_stack_end;
void *__libc_stack_end = 0;
#endif
+#if SANITIZER_LINUX && defined(__aarch64__)
+void InitializeGuardPtr() __attribute__((visibility("hidden")));
+#endif
+
namespace __tsan {
#ifdef TSAN_RUNTIME_VMA
@@ -264,6 +269,8 @@ void InitializePlatform() {
CHECK_NE(personality(old_personality | ADDR_NO_RANDOMIZE), -1);
reexec = true;
}
+ // Initialize the guard pointer used in {sig}{set,long}jump.
+ InitializeGuardPtr();
#endif
if (reexec)
ReExec();
OpenPOWER on IntegriCloud