mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-10 13:51:37 +00:00
[DFSAN][MIPS][LLVM] Defining ShadowPtrMask variable for MIPS64
Patch by Kumar Sukhani! corresponding compiler-rt patch: http://reviews.llvm.org/D6437 clang patch: http://reviews.llvm.org/D6147 Differential Revision: http://reviews.llvm.org/D6459 llvm-svn: 223516
This commit is contained in:
parent
4f286f5f23
commit
58b6120d03
@ -49,6 +49,7 @@
|
|||||||
#include "llvm/ADT/DenseSet.h"
|
#include "llvm/ADT/DenseSet.h"
|
||||||
#include "llvm/ADT/DepthFirstIterator.h"
|
#include "llvm/ADT/DepthFirstIterator.h"
|
||||||
#include "llvm/ADT/StringExtras.h"
|
#include "llvm/ADT/StringExtras.h"
|
||||||
|
#include "llvm/ADT/Triple.h"
|
||||||
#include "llvm/Analysis/ValueTracking.h"
|
#include "llvm/Analysis/ValueTracking.h"
|
||||||
#include "llvm/IR/Dominators.h"
|
#include "llvm/IR/Dominators.h"
|
||||||
#include "llvm/IR/DebugInfo.h"
|
#include "llvm/IR/DebugInfo.h"
|
||||||
@ -414,6 +415,11 @@ FunctionType *DataFlowSanitizer::getCustomFunctionType(FunctionType *T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool DataFlowSanitizer::doInitialization(Module &M) {
|
bool DataFlowSanitizer::doInitialization(Module &M) {
|
||||||
|
llvm::Triple TargetTriple(M.getTargetTriple());
|
||||||
|
bool IsX86_64 = TargetTriple.getArch() == llvm::Triple::x86_64;
|
||||||
|
bool IsMIPS64 = TargetTriple.getArch() == llvm::Triple::mips64 ||
|
||||||
|
TargetTriple.getArch() == llvm::Triple::mips64el;
|
||||||
|
|
||||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||||
if (!DLP)
|
if (!DLP)
|
||||||
report_fatal_error("data layout missing");
|
report_fatal_error("data layout missing");
|
||||||
@ -425,8 +431,13 @@ bool DataFlowSanitizer::doInitialization(Module &M) {
|
|||||||
ShadowPtrTy = PointerType::getUnqual(ShadowTy);
|
ShadowPtrTy = PointerType::getUnqual(ShadowTy);
|
||||||
IntptrTy = DL->getIntPtrType(*Ctx);
|
IntptrTy = DL->getIntPtrType(*Ctx);
|
||||||
ZeroShadow = ConstantInt::getSigned(ShadowTy, 0);
|
ZeroShadow = ConstantInt::getSigned(ShadowTy, 0);
|
||||||
ShadowPtrMask = ConstantInt::getSigned(IntptrTy, ~0x700000000000LL);
|
|
||||||
ShadowPtrMul = ConstantInt::getSigned(IntptrTy, ShadowWidth / 8);
|
ShadowPtrMul = ConstantInt::getSigned(IntptrTy, ShadowWidth / 8);
|
||||||
|
if (IsX86_64)
|
||||||
|
ShadowPtrMask = ConstantInt::getSigned(IntptrTy, ~0x700000000000LL);
|
||||||
|
else if (IsMIPS64)
|
||||||
|
ShadowPtrMask = ConstantInt::getSigned(IntptrTy, ~0xF000000000LL);
|
||||||
|
else
|
||||||
|
report_fatal_error("unsupported triple");
|
||||||
|
|
||||||
Type *DFSanUnionArgs[2] = { ShadowTy, ShadowTy };
|
Type *DFSanUnionArgs[2] = { ShadowTy, ShadowTy };
|
||||||
DFSanUnionFnTy =
|
DFSanUnionFnTy =
|
||||||
|
Loading…
Reference in New Issue
Block a user