mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
[RISCV][ASAN] instrumentation pass now uses proper shadow offset
[10/11] patch series to port ASAN for riscv64 Depends On D87580 Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D87581
This commit is contained in:
parent
09fdde59e8
commit
b8a39db2c9
@ -105,6 +105,7 @@ static const uint64_t kSystemZ_ShadowOffset64 = 1ULL << 52;
|
||||
static const uint64_t kMIPS32_ShadowOffset32 = 0x0aaa0000;
|
||||
static const uint64_t kMIPS64_ShadowOffset64 = 1ULL << 37;
|
||||
static const uint64_t kAArch64_ShadowOffset64 = 1ULL << 36;
|
||||
static const uint64_t kRISCV64_ShadowOffset64 = 0x20000000;
|
||||
static const uint64_t kFreeBSD_ShadowOffset32 = 1ULL << 30;
|
||||
static const uint64_t kFreeBSD_ShadowOffset64 = 1ULL << 46;
|
||||
static const uint64_t kNetBSD_ShadowOffset32 = 1ULL << 30;
|
||||
@ -447,6 +448,7 @@ static ShadowMapping getShadowMapping(Triple &TargetTriple, int LongSize,
|
||||
bool IsMIPS64 = TargetTriple.isMIPS64();
|
||||
bool IsArmOrThumb = TargetTriple.isARM() || TargetTriple.isThumb();
|
||||
bool IsAArch64 = TargetTriple.getArch() == Triple::aarch64;
|
||||
bool IsRISCV64 = TargetTriple.getArch() == Triple::riscv64;
|
||||
bool IsWindows = TargetTriple.isOSWindows();
|
||||
bool IsFuchsia = TargetTriple.isOSFuchsia();
|
||||
bool IsMyriad = TargetTriple.getVendor() == llvm::Triple::Myriad;
|
||||
@ -515,6 +517,8 @@ static ShadowMapping getShadowMapping(Triple &TargetTriple, int LongSize,
|
||||
Mapping.Offset = kDynamicShadowSentinel;
|
||||
else if (IsAArch64)
|
||||
Mapping.Offset = kAArch64_ShadowOffset64;
|
||||
else if (IsRISCV64)
|
||||
Mapping.Offset = kRISCV64_ShadowOffset64;
|
||||
else
|
||||
Mapping.Offset = kDefaultShadowOffset64;
|
||||
}
|
||||
@ -533,6 +537,7 @@ static ShadowMapping getShadowMapping(Triple &TargetTriple, int LongSize,
|
||||
// we could OR the constant in a single instruction, but it's more
|
||||
// efficient to load it once and use indexed addressing.
|
||||
Mapping.OrShadowOffset = !IsAArch64 && !IsPPC64 && !IsSystemZ && !IsPS4CPU &&
|
||||
!IsRISCV64 &&
|
||||
!(Mapping.Offset & (Mapping.Offset - 1)) &&
|
||||
Mapping.Offset != kDynamicShadowSentinel;
|
||||
bool IsAndroidWithIfuncSupport =
|
||||
|
Loading…
Reference in New Issue
Block a user