mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-23 04:28:40 +00:00
[sanitizers] Add DFSan support for AArch64 42-bit VMA
This patch adds support for dfsan on aarch64-linux with 42-bit VMA (current default config for 64K pagesize kernels). The support is enabled by defining the SANITIZER_AARCH64_VMA to 42 at build time for both clang/llvm and compiler-rt. The default VMA is 39 bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245840 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
59dfeede45
commit
9708c4754d
@ -72,6 +72,16 @@
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
// VMA size definition for architecture that support multiple sizes.
|
||||
// AArch64 has 3 VMA sizes: 39, 42 and 48.
|
||||
#ifndef SANITIZER_AARCH64_VMA
|
||||
# define SANITIZER_AARCH64_VMA 39
|
||||
#else
|
||||
# if SANITIZER_AARCH64_VMA != 39 && SANITIZER_AARCH64_VMA != 42
|
||||
# error "invalid SANITIZER_AARCH64_VMA size"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
// The -dfsan-preserve-alignment flag controls whether this pass assumes that
|
||||
// alignment requirements provided by the input IR are correct. For example,
|
||||
// if the input IR contains a load with alignment 8, this flag will cause
|
||||
@ -437,7 +447,11 @@ bool DataFlowSanitizer::doInitialization(Module &M) {
|
||||
else if (IsMIPS64)
|
||||
ShadowPtrMask = ConstantInt::getSigned(IntptrTy, ~0xF000000000LL);
|
||||
else if (IsAArch64)
|
||||
#if SANITIZER_AARCH64_VMA == 39
|
||||
ShadowPtrMask = ConstantInt::getSigned(IntptrTy, ~0x7800000000LL);
|
||||
#else
|
||||
ShadowPtrMask = ConstantInt::getSigned(IntptrTy, ~0x3c000000000LL);
|
||||
#endif
|
||||
else
|
||||
report_fatal_error("unsupported triple");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user