diff options
author | John Baldwin <jhb@FreeBSD.org> | 2018-08-01 22:51:13 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2018-08-01 22:51:13 +0000 |
commit | c5d7e040522d247e050f04d474f3bb3a1961373a (patch) | |
tree | 0521ccbc978501ad281765e89e02276fcbb8c410 | |
parent | bfea8cdc69ede81340c6aa7690fd1be0f8573ef1 (diff) | |
download | bcm5719-llvm-c5d7e040522d247e050f04d474f3bb3a1961373a.tar.gz bcm5719-llvm-c5d7e040522d247e050f04d474f3bb3a1961373a.zip |
[ASAN] Use the correct shadow offset for ASAN on FreeBSD/mips64.
Reviewed By: atanasyan
Differential Revision: https://reviews.llvm.org/D49939
llvm-svn: 338650
-rw-r--r-- | llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp | 2 | ||||
-rw-r--r-- | llvm/test/Instrumentation/AddressSanitizer/freebsd.ll | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp index 6af44354225..ec72e834059 100644 --- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp @@ -538,7 +538,7 @@ static ShadowMapping getShadowMapping(Triple &TargetTriple, int LongSize, Mapping.Offset = kPPC64_ShadowOffset64; else if (IsSystemZ) Mapping.Offset = kSystemZ_ShadowOffset64; - else if (IsFreeBSD) + else if (IsFreeBSD && !IsMIPS64) Mapping.Offset = kFreeBSD_ShadowOffset64; else if (IsNetBSD) Mapping.Offset = kNetBSD_ShadowOffset64; diff --git a/llvm/test/Instrumentation/AddressSanitizer/freebsd.ll b/llvm/test/Instrumentation/AddressSanitizer/freebsd.ll index f940b52b41f..3fbbfa3cb1e 100644 --- a/llvm/test/Instrumentation/AddressSanitizer/freebsd.ll +++ b/llvm/test/Instrumentation/AddressSanitizer/freebsd.ll @@ -8,6 +8,11 @@ ; RUN: -data-layout="e-m:e-i64:64-f80:128-n8:16:32:64-S128" | \ ; RUN: FileCheck --check-prefix=CHECK-64 %s +; RUN: opt < %s -asan -asan-module -S \ +; RUN: -mtriple=mips64-unknown-freebsd \ +; RUN: -data-layout="E-m:e-i64:64-n32:64-S128" | \ +; RUN: FileCheck --check-prefix=CHECK-MIPS64 %s + define i32 @read_4_bytes(i32* %a) sanitize_address { entry: %tmp1 = load i32, i32* %a, align 4 @@ -27,3 +32,10 @@ entry: ; CHECK-64: lshr {{.*}} 3 ; CHECK-64-NEXT: {{70368744177664}} ; CHECK-64: ret + +; CHECK-MIPS64: @read_4_bytes +; CHECK-MIPS64-NOT: ret +; Check for ASAN's Offset for 64-bit (2^37 or 0x2000000000) +; CHECK-MIPS64: lshr {{.*}} 3 +; CHECK-MIPS64-NEXT: {{137438953472}} +; CHECK-MIPS64: ret |