Enable dfsan for aarch64
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 30 Jul 2015 20:49:35 +0000 (20:49 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 30 Jul 2015 20:49:35 +0000 (20:49 +0000)
This patch enable DFSan memory transformation for aarch64 (39-bit VMA).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243684 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Instrumentation/DataFlowSanitizer.cpp

index 2de6e1afaba9e19c7bdbfbbc19d8e9b69ab10815..8344e087a9593ad4ee922d190981b935d08b6616 100644 (file)
@@ -420,6 +420,8 @@ bool DataFlowSanitizer::doInitialization(Module &M) {
   bool IsX86_64 = TargetTriple.getArch() == llvm::Triple::x86_64;
   bool IsMIPS64 = TargetTriple.getArch() == llvm::Triple::mips64 ||
                   TargetTriple.getArch() == llvm::Triple::mips64el;
   bool IsX86_64 = TargetTriple.getArch() == llvm::Triple::x86_64;
   bool IsMIPS64 = TargetTriple.getArch() == llvm::Triple::mips64 ||
                   TargetTriple.getArch() == llvm::Triple::mips64el;
+  bool IsAArch64 = TargetTriple.getArch() == llvm::Triple::aarch64 ||
+                   TargetTriple.getArch() == llvm::Triple::aarch64_be;
 
   const DataLayout &DL = M.getDataLayout();
 
 
   const DataLayout &DL = M.getDataLayout();
 
@@ -434,6 +436,8 @@ bool DataFlowSanitizer::doInitialization(Module &M) {
     ShadowPtrMask = ConstantInt::getSigned(IntptrTy, ~0x700000000000LL);
   else if (IsMIPS64)
     ShadowPtrMask = ConstantInt::getSigned(IntptrTy, ~0xF000000000LL);
     ShadowPtrMask = ConstantInt::getSigned(IntptrTy, ~0x700000000000LL);
   else if (IsMIPS64)
     ShadowPtrMask = ConstantInt::getSigned(IntptrTy, ~0xF000000000LL);
+  else if (IsAArch64)
+    ShadowPtrMask = ConstantInt::getSigned(IntptrTy, ~0x7800000000LL);
   else
     report_fatal_error("unsupported triple");
 
   else
     report_fatal_error("unsupported triple");