summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/hwasan
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2018-01-13 01:32:15 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2018-01-13 01:32:15 +0000
commit080e0d40b912bf2a389c5a615ed1429ab330adee (patch)
treed07bc66e72cb593c1fe20115287f8aa131bcc64e /compiler-rt/lib/hwasan
parentc2b340a5c625b495d5311b02f15cf124dc7ed835 (diff)
downloadbcm5719-llvm-080e0d40b912bf2a389c5a615ed1429ab330adee.tar.gz
bcm5719-llvm-080e0d40b912bf2a389c5a615ed1429ab330adee.zip
[hwasan] An LLVM flag to disable stack tag randomization.
Summary: Necessary to achieve consistent test results. Reviewers: kcc, alekseyshl Subscribers: kubamracek, llvm-commits, hiraditya Differential Revision: https://reviews.llvm.org/D42023 llvm-svn: 322429
Diffstat (limited to 'compiler-rt/lib/hwasan')
-rw-r--r--compiler-rt/lib/hwasan/hwasan.cc8
-rw-r--r--compiler-rt/lib/hwasan/hwasan_interface_internal.h3
2 files changed, 11 insertions, 0 deletions
diff --git a/compiler-rt/lib/hwasan/hwasan.cc b/compiler-rt/lib/hwasan/hwasan.cc
index b75e30d9eca..f565e7858af 100644
--- a/compiler-rt/lib/hwasan/hwasan.cc
+++ b/compiler-rt/lib/hwasan/hwasan.cc
@@ -363,6 +363,14 @@ void __hwasan_tag_memory(uptr p, u8 tag, uptr sz) {
TagMemoryAligned(p, sz, tag);
}
+static const u8 kFallbackTag = 0xBB;
+
+u8 __hwasan_generate_tag() {
+ HwasanThread *t = GetCurrentThread();
+ if (!t) return kFallbackTag;
+ return t->GenerateRandomTag();
+}
+
#if !SANITIZER_SUPPORTS_WEAK_HOOKS
extern "C" {
SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
diff --git a/compiler-rt/lib/hwasan/hwasan_interface_internal.h b/compiler-rt/lib/hwasan/hwasan_interface_internal.h
index 67c150a272d..b065099fba4 100644
--- a/compiler-rt/lib/hwasan/hwasan_interface_internal.h
+++ b/compiler-rt/lib/hwasan/hwasan_interface_internal.h
@@ -86,6 +86,9 @@ void __hwasan_store16_noabort(uptr);
SANITIZER_INTERFACE_ATTRIBUTE
void __hwasan_tag_memory(uptr p, u8 tag, uptr sz);
+SANITIZER_INTERFACE_ATTRIBUTE
+u8 __hwasan_generate_tag();
+
// Returns the offset of the first tag mismatch or -1 if the whole range is
// good.
SANITIZER_INTERFACE_ATTRIBUTE
OpenPOWER on IntegriCloud