LLVM 24.0.0git
AddressSanitizer.cpp File Reference
#include "llvm/Transforms/Instrumentation/AddressSanitizer.h"
#include "InstrumentationOptions.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Analysis/GlobalsModRef.h"
#include "llvm/Analysis/MemoryBuiltins.h"
#include "llvm/Analysis/StackSafetyAnalysis.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/BinaryFormat/MachO.h"
#include "llvm/Demangle/Demangle.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Comdat.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DIBuilder.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/EHPersonalities.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalAlias.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/InstVisitor.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Use.h"
#include "llvm/IR/Value.h"
#include "llvm/MC/MCSectionMachO.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/ModRef.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/Triple.h"
#include "llvm/Transforms/Instrumentation/AddressSanitizerCommon.h"
#include "llvm/Transforms/Instrumentation/AddressSanitizerOptions.h"
#include "llvm/Transforms/Utils/ASanStackFrameLayout.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/Instrumentation.h"
#include "llvm/Transforms/Utils/Local.h"
#include "llvm/Transforms/Utils/ModuleUtils.h"
#include "llvm/Transforms/Utils/PromoteMemToReg.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <iomanip>
#include <limits>
#include <sstream>
#include <string>
#include <tuple>
#include <utility>

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "asan"

Functions

 STATISTIC (NumInstrumentedReads, "Number of instrumented reads")
 STATISTIC (NumInstrumentedWrites, "Number of instrumented writes")
 STATISTIC (NumOptimizedAccessesToGlobalVar, "Number of optimized accesses to global vars")
 STATISTIC (NumOptimizedAccessesToStackVar, "Number of optimized accesses to stack vars")
static ShadowMapping getShadowMapping (const InstrumentationOptions &Opts, const Triple &TargetTriple, int LongSize, bool IsKasan)
static uint64_t getRedzoneSizeForScale (int MappingScale)
static uint64_t GetCtorAndDtorPriority (Triple &TargetTriple)
static Twine genName (StringRef suffix)
static size_t TypeStoreSizeToSizeIndex (uint32_t TypeSize)
static bool GlobalWasGeneratedByCompiler (GlobalVariable *G)
 Check if G has been created by a trusted compiler pass.
static bool isUnsupportedAMDGPUAddrspace (Value *Addr)
static bool isSupportedAddrspace (const InstrumentationOptions &Opts, const Triple &TargetTriple, Value *Addr)
static bool isPointerOperand (Value *V)
static bool isInterestingPointerComparison (Instruction *I)
static bool isInterestingPointerSubtraction (Instruction *I)
static bool isPointerPairOperand (Value *V, Type *IntptrTy)
static void doInstrumentAddress (AddressSanitizer *Pass, Instruction *I, Instruction *InsertBefore, Value *Addr, MaybeAlign Alignment, unsigned Granularity, TypeSize TypeStoreSize, bool IsWrite, Value *SizeArgument, bool UseCalls, uint32_t Exp, RuntimeCallInserter &RTCI)
static int StackMallocSizeClass (uint64_t LocalStackSize)
static void findStoresToUninstrumentedArgAllocas (AddressSanitizer &ASan, Instruction &InsBefore, SmallVectorImpl< Instruction * > &InitInsts)
 Collect instructions in the entry block after InsBefore which initialize permanent storage for a function argument.
static StringRef getAllocaName (AllocaInst *AI)

Variables

static const uint64_t kDefaultShadowScale = 3
static const uint64_t kDefaultShadowOffset32 = 1ULL << 29
static const uint64_t kDefaultShadowOffset64 = 1ULL << 44
static const uint64_t kDynamicShadowSentinel
static const uint64_t kSmallX86_64ShadowOffsetBase = 0x7FFFFFFF
static const uint64_t kSmallX86_64ShadowOffsetAlignMask = ~0xFFFULL
static const uint64_t kLinuxKasan_ShadowOffset64 = 0xdffffc0000000000
static const uint64_t kPPC64_ShadowOffset64 = 1ULL << 44
static const uint64_t kSystemZ_ShadowOffset64 = 1ULL << 52
static const uint64_t kMIPS_ShadowOffsetN32 = 1ULL << 29
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 kLoongArch64_ShadowOffset64 = 1ULL << 46
static const uint64_t kRISCV64_ShadowOffset64 = kDynamicShadowSentinel
static const uint64_t kFreeBSD_ShadowOffset32 = 1ULL << 30
static const uint64_t kFreeBSD_ShadowOffset64 = 1ULL << 46
static const uint64_t kFreeBSDAArch64_ShadowOffset64 = 1ULL << 47
static const uint64_t kFreeBSDKasan_ShadowOffset64 = 0xdffff7c000000000
static const uint64_t kNetBSD_ShadowOffset32 = 1ULL << 30
static const uint64_t kNetBSD_ShadowOffset64 = 1ULL << 46
static const uint64_t kNetBSDKasan_ShadowOffset64 = 0xdfff900000000000
static const uint64_t kPS_ShadowOffset64 = 1ULL << 40
static const uint64_t kWindowsShadowOffset32 = 3ULL << 28
static const uint64_t kWebAssemblyShadowOffset = 0
static const uint64_t kWindowsShadowOffset64 = kDynamicShadowSentinel
static const size_t kMinStackMallocSize = 1 << 6
static const size_t kMaxStackMallocSize = 1 << 16
static const uintptr_t kCurrentStackFrameMagic = 0x41B58AB3
static const uintptr_t kRetiredStackFrameMagic = 0x45E0360E
const char kAsanModuleCtorName [] = "asan.module_ctor"
const char kAsanModuleDtorName [] = "asan.module_dtor"
static const uint64_t kAsanCtorAndDtorPriority = 1
static const uint64_t kAsanEmscriptenCtorAndDtorPriority = 50
const char kAsanReportErrorTemplate [] = "__asan_report_"
const char kAsanRegisterGlobalsName [] = "__asan_register_globals"
const char kAsanUnregisterGlobalsName [] = "__asan_unregister_globals"
const char kAsanRegisterImageGlobalsName [] = "__asan_register_image_globals"
const char kAsanUnregisterImageGlobalsName []
const char kAsanRegisterElfGlobalsName [] = "__asan_register_elf_globals"
const char kAsanUnregisterElfGlobalsName [] = "__asan_unregister_elf_globals"
const char kAsanPoisonGlobalsName [] = "__asan_before_dynamic_init"
const char kAsanUnpoisonGlobalsName [] = "__asan_after_dynamic_init"
const char kAsanInitName [] = "__asan_init"
const char kAsanVersionCheckNamePrefix [] = "__asan_version_mismatch_check_v"
const char kAsanPtrCmp [] = "__sanitizer_ptr_cmp"
const char kAsanPtrSub [] = "__sanitizer_ptr_sub"
const char kAsanHandleNoReturnName [] = "__asan_handle_no_return"
static const int kMaxAsanStackMallocSizeClass = 10
const char kAsanStackMallocNameTemplate [] = "__asan_stack_malloc_"
const char kAsanStackMallocAlwaysNameTemplate []
const char kAsanStackFreeNameTemplate [] = "__asan_stack_free_"
const char kAsanGenPrefix [] = "___asan_gen_"
const char kODRGenPrefix [] = "__odr_asan_gen_"
const char kSanCovGenPrefix [] = "__sancov_gen_"
const char kAsanSetShadowPrefix [] = "__asan_set_shadow_"
const char kAsanPoisonStackMemoryName [] = "__asan_poison_stack_memory"
const char kAsanUnpoisonStackMemoryName [] = "__asan_unpoison_stack_memory"
const char kAsanGlobalsRegisteredFlagName [] = "___asan_globals_registered"
const char kAsanOptionDetectUseAfterReturn []
const char kAsanShadowMemoryDynamicAddress []
const char kAsanAllocaPoison [] = "__asan_alloca_poison"
const char kAsanAllocasUnpoison [] = "__asan_allocas_unpoison"
const char kAMDGPUAddressSharedName [] = "llvm.amdgcn.is.shared"
const char kAMDGPUAddressPrivateName [] = "llvm.amdgcn.is.private"
const char kAMDGPUBallotName [] = "llvm.amdgcn.ballot.i64"
const char kAMDGPUUnreachableName [] = "llvm.amdgcn.unreachable"
static const size_t kNumberOfAccessSizes = 5
static const uint64_t kAllocaRzSize = 32
constexpr size_t kCompileKernelShift = 0
constexpr size_t kCompileKernelMask = 0x1
constexpr size_t kAccessSizeIndexShift = 1
constexpr size_t kAccessSizeIndexMask = 0xf
constexpr size_t kIsWriteShift = 5
constexpr size_t kIsWriteMask = 0x1

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "asan"

Definition at line 97 of file AddressSanitizer.cpp.

Function Documentation

◆ doInstrumentAddress()

void doInstrumentAddress ( AddressSanitizer * Pass,
Instruction * I,
Instruction * InsertBefore,
Value * Addr,
MaybeAlign Alignment,
unsigned Granularity,
TypeSize TypeStoreSize,
bool IsWrite,
Value * SizeArgument,
bool UseCalls,
uint32_t Exp,
RuntimeCallInserter & RTCI )
static

◆ findStoresToUninstrumentedArgAllocas()

void findStoresToUninstrumentedArgAllocas ( AddressSanitizer & ASan,
Instruction & InsBefore,
SmallVectorImpl< Instruction * > & InitInsts )
static

Collect instructions in the entry block after InsBefore which initialize permanent storage for a function argument.

These instructions must remain in the entry block so that uninitialized values do not appear in backtraces. An added benefit is that this conserves spill slots. This does not move stores before instrumented / "interesting" allocas.

Definition at line 3256 of file AddressSanitizer.cpp.

References llvm::cast(), llvm::dyn_cast(), llvm::ilist_node_with_parent< NodeTy, ParentTy, Options >::getNextNode(), llvm::isa(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::Store.

◆ genName()

Twine genName ( StringRef suffix)
static

Definition at line 438 of file AddressSanitizer.cpp.

References kAsanGenPrefix.

◆ getAllocaName()

◆ GetCtorAndDtorPriority()

uint64_t GetCtorAndDtorPriority ( Triple & TargetTriple)
static

◆ getRedzoneSizeForScale()

uint64_t getRedzoneSizeForScale ( int MappingScale)
static

Definition at line 425 of file AddressSanitizer.cpp.

References uint64_t.

◆ getShadowMapping()

ShadowMapping getShadowMapping ( const InstrumentationOptions & Opts,
const Triple & TargetTriple,
int LongSize,
bool IsKasan )
static

Definition at line 220 of file AddressSanitizer.cpp.

References llvm::Triple::aarch64, llvm::Triple::aarch64_be, llvm::Triple::getArch(), llvm::Triple::isABIN32(), llvm::Triple::isAMDGPU(), llvm::Triple::isAndroid(), llvm::Triple::isARM(), llvm::Triple::isBPF(), llvm::Triple::isDriverKit(), llvm::Triple::isiOS(), llvm::Triple::isLoongArch64(), llvm::Triple::isMacOSX(), llvm::Triple::isMIPS32(), llvm::Triple::isMIPS64(), llvm::Triple::isOSFreeBSD(), llvm::Triple::isOSFuchsia(), llvm::Triple::isOSHaiku(), llvm::Triple::isOSLinux(), llvm::Triple::isOSNetBSD(), llvm::Triple::isOSWindows(), llvm::Triple::isPS(), llvm::Triple::isThumb(), llvm::Triple::isWasm(), llvm::Triple::isWatchOS(), kAArch64_ShadowOffset64, kDefaultShadowOffset32, kDefaultShadowOffset64, kDefaultShadowScale, kDynamicShadowSentinel, kFreeBSD_ShadowOffset32, kFreeBSD_ShadowOffset64, kFreeBSDAArch64_ShadowOffset64, kFreeBSDKasan_ShadowOffset64, kLinuxKasan_ShadowOffset64, kLoongArch64_ShadowOffset64, kMIPS32_ShadowOffset32, kMIPS64_ShadowOffset64, kMIPS_ShadowOffsetN32, kNetBSD_ShadowOffset32, kNetBSD_ShadowOffset64, kNetBSDKasan_ShadowOffset64, kPPC64_ShadowOffset64, kPS_ShadowOffset64, kRISCV64_ShadowOffset64, kSmallX86_64ShadowOffsetAlignMask, kSmallX86_64ShadowOffsetBase, kSystemZ_ShadowOffset64, kWebAssemblyShadowOffset, kWindowsShadowOffset32, kWindowsShadowOffset64, llvm::Triple::ppc64, llvm::Triple::ppc64le, llvm::Triple::riscv64, llvm::Triple::systemz, and llvm::Triple::x86_64.

Referenced by llvm::getAddressSanitizerParams().

◆ GlobalWasGeneratedByCompiler()

bool GlobalWasGeneratedByCompiler ( GlobalVariable * G)
static

Check if G has been created by a trusted compiler pass.

Definition at line 1107 of file AddressSanitizer.cpp.

References G, kAsanGenPrefix, kODRGenPrefix, and kSanCovGenPrefix.

◆ isInterestingPointerComparison()

bool isInterestingPointerComparison ( Instruction * I)
static

Definition at line 1385 of file AddressSanitizer.cpp.

References llvm::dyn_cast(), I, and isPointerOperand().

◆ isInterestingPointerSubtraction()

bool isInterestingPointerSubtraction ( Instruction * I)
static

Definition at line 1399 of file AddressSanitizer.cpp.

References llvm::dyn_cast(), I, and isPointerOperand().

◆ isPointerOperand()

bool isPointerOperand ( Value * V)
static

Definition at line 1378 of file AddressSanitizer.cpp.

References llvm::isa().

◆ isPointerPairOperand()

bool isPointerPairOperand ( Value * V,
Type * IntptrTy )
static

◆ isSupportedAddrspace()

bool isSupportedAddrspace ( const InstrumentationOptions & Opts,
const Triple & TargetTriple,
Value * Addr )
static

◆ isUnsupportedAMDGPUAddrspace()

bool isUnsupportedAMDGPUAddrspace ( Value * Addr)
static

◆ StackMallocSizeClass()

int StackMallocSizeClass ( uint64_t LocalStackSize)
static

◆ STATISTIC() [1/4]

STATISTIC ( NumInstrumentedReads ,
"Number of instrumented reads"  )

◆ STATISTIC() [2/4]

STATISTIC ( NumInstrumentedWrites ,
"Number of instrumented writes"  )

◆ STATISTIC() [3/4]

STATISTIC ( NumOptimizedAccessesToGlobalVar ,
"Number of optimized accesses to global vars"  )

◆ STATISTIC() [4/4]

STATISTIC ( NumOptimizedAccessesToStackVar ,
"Number of optimized accesses to stack vars"  )

References llvm::Offset, and uint64_t.

◆ TypeStoreSizeToSizeIndex()

size_t TypeStoreSizeToSizeIndex ( uint32_t TypeSize)
static

Definition at line 1100 of file AddressSanitizer.cpp.

References assert(), llvm::countr_zero(), and kNumberOfAccessSizes.

Variable Documentation

◆ kAArch64_ShadowOffset64

const uint64_t kAArch64_ShadowOffset64 = 1ULL << 36
static

Definition at line 112 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kAccessSizeIndexMask

size_t kAccessSizeIndexMask = 0xf
constexpr

Definition at line 193 of file AddressSanitizer.cpp.

Referenced by llvm::ASanAccessInfo::ASanAccessInfo().

◆ kAccessSizeIndexShift

size_t kAccessSizeIndexShift = 1
constexpr

◆ kAllocaRzSize

const uint64_t kAllocaRzSize = 32
static

Definition at line 187 of file AddressSanitizer.cpp.

◆ kAMDGPUAddressPrivateName

const char kAMDGPUAddressPrivateName[] = "llvm.amdgcn.is.private"

Definition at line 180 of file AddressSanitizer.cpp.

◆ kAMDGPUAddressSharedName

const char kAMDGPUAddressSharedName[] = "llvm.amdgcn.is.shared"

Definition at line 179 of file AddressSanitizer.cpp.

◆ kAMDGPUBallotName

const char kAMDGPUBallotName[] = "llvm.amdgcn.ballot.i64"

Definition at line 181 of file AddressSanitizer.cpp.

◆ kAMDGPUUnreachableName

const char kAMDGPUUnreachableName[] = "llvm.amdgcn.unreachable"

Definition at line 182 of file AddressSanitizer.cpp.

◆ kAsanAllocaPoison

const char kAsanAllocaPoison[] = "__asan_alloca_poison"

Definition at line 176 of file AddressSanitizer.cpp.

◆ kAsanAllocasUnpoison

const char kAsanAllocasUnpoison[] = "__asan_allocas_unpoison"

Definition at line 177 of file AddressSanitizer.cpp.

◆ kAsanCtorAndDtorPriority

const uint64_t kAsanCtorAndDtorPriority = 1
static

Definition at line 136 of file AddressSanitizer.cpp.

Referenced by GetCtorAndDtorPriority().

◆ kAsanEmscriptenCtorAndDtorPriority

const uint64_t kAsanEmscriptenCtorAndDtorPriority = 50
static

Definition at line 138 of file AddressSanitizer.cpp.

Referenced by GetCtorAndDtorPriority().

◆ kAsanGenPrefix

const char kAsanGenPrefix[] = "___asan_gen_"

Definition at line 159 of file AddressSanitizer.cpp.

Referenced by genName(), and GlobalWasGeneratedByCompiler().

◆ kAsanGlobalsRegisteredFlagName

const char kAsanGlobalsRegisteredFlagName[] = "___asan_globals_registered"

Definition at line 168 of file AddressSanitizer.cpp.

◆ kAsanHandleNoReturnName

const char kAsanHandleNoReturnName[] = "__asan_handle_no_return"

Definition at line 153 of file AddressSanitizer.cpp.

◆ kAsanInitName

const char kAsanInitName[] = "__asan_init"

Definition at line 149 of file AddressSanitizer.cpp.

◆ kAsanModuleCtorName

const char kAsanModuleCtorName[] = "asan.module_ctor"

Definition at line 134 of file AddressSanitizer.cpp.

◆ kAsanModuleDtorName

const char kAsanModuleDtorName[] = "asan.module_dtor"

Definition at line 135 of file AddressSanitizer.cpp.

◆ kAsanOptionDetectUseAfterReturn

const char kAsanOptionDetectUseAfterReturn[]
Initial value:
=
"__asan_option_detect_stack_use_after_return"

Definition at line 170 of file AddressSanitizer.cpp.

◆ kAsanPoisonGlobalsName

const char kAsanPoisonGlobalsName[] = "__asan_before_dynamic_init"

Definition at line 147 of file AddressSanitizer.cpp.

◆ kAsanPoisonStackMemoryName

const char kAsanPoisonStackMemoryName[] = "__asan_poison_stack_memory"

Definition at line 163 of file AddressSanitizer.cpp.

◆ kAsanPtrCmp

const char kAsanPtrCmp[] = "__sanitizer_ptr_cmp"

Definition at line 151 of file AddressSanitizer.cpp.

◆ kAsanPtrSub

const char kAsanPtrSub[] = "__sanitizer_ptr_sub"

Definition at line 152 of file AddressSanitizer.cpp.

◆ kAsanRegisterElfGlobalsName

const char kAsanRegisterElfGlobalsName[] = "__asan_register_elf_globals"

Definition at line 145 of file AddressSanitizer.cpp.

◆ kAsanRegisterGlobalsName

const char kAsanRegisterGlobalsName[] = "__asan_register_globals"

Definition at line 140 of file AddressSanitizer.cpp.

◆ kAsanRegisterImageGlobalsName

const char kAsanRegisterImageGlobalsName[] = "__asan_register_image_globals"

Definition at line 142 of file AddressSanitizer.cpp.

◆ kAsanReportErrorTemplate

const char kAsanReportErrorTemplate[] = "__asan_report_"

Definition at line 139 of file AddressSanitizer.cpp.

Referenced by llvm::AMDGPU::generateCrashCode().

◆ kAsanSetShadowPrefix

const char kAsanSetShadowPrefix[] = "__asan_set_shadow_"

Definition at line 162 of file AddressSanitizer.cpp.

◆ kAsanShadowMemoryDynamicAddress

const char kAsanShadowMemoryDynamicAddress[]
Initial value:
=
"__asan_shadow_memory_dynamic_address"

Definition at line 173 of file AddressSanitizer.cpp.

◆ kAsanStackFreeNameTemplate

const char kAsanStackFreeNameTemplate[] = "__asan_stack_free_"

Definition at line 158 of file AddressSanitizer.cpp.

◆ kAsanStackMallocAlwaysNameTemplate

const char kAsanStackMallocAlwaysNameTemplate[]
Initial value:
=
"__asan_stack_malloc_always_"

Definition at line 156 of file AddressSanitizer.cpp.

◆ kAsanStackMallocNameTemplate

const char kAsanStackMallocNameTemplate[] = "__asan_stack_malloc_"

Definition at line 155 of file AddressSanitizer.cpp.

◆ kAsanUnpoisonGlobalsName

const char kAsanUnpoisonGlobalsName[] = "__asan_after_dynamic_init"

Definition at line 148 of file AddressSanitizer.cpp.

◆ kAsanUnpoisonStackMemoryName

const char kAsanUnpoisonStackMemoryName[] = "__asan_unpoison_stack_memory"

Definition at line 164 of file AddressSanitizer.cpp.

◆ kAsanUnregisterElfGlobalsName

const char kAsanUnregisterElfGlobalsName[] = "__asan_unregister_elf_globals"

Definition at line 146 of file AddressSanitizer.cpp.

◆ kAsanUnregisterGlobalsName

const char kAsanUnregisterGlobalsName[] = "__asan_unregister_globals"

Definition at line 141 of file AddressSanitizer.cpp.

◆ kAsanUnregisterImageGlobalsName

const char kAsanUnregisterImageGlobalsName[]
Initial value:
=
"__asan_unregister_image_globals"

Definition at line 143 of file AddressSanitizer.cpp.

◆ kAsanVersionCheckNamePrefix

const char kAsanVersionCheckNamePrefix[] = "__asan_version_mismatch_check_v"

Definition at line 150 of file AddressSanitizer.cpp.

◆ kCompileKernelMask

size_t kCompileKernelMask = 0x1
constexpr

Definition at line 191 of file AddressSanitizer.cpp.

Referenced by llvm::ASanAccessInfo::ASanAccessInfo().

◆ kCompileKernelShift

size_t kCompileKernelShift = 0
constexpr

◆ kCurrentStackFrameMagic

const uintptr_t kCurrentStackFrameMagic = 0x41B58AB3
static

Definition at line 131 of file AddressSanitizer.cpp.

◆ kDefaultShadowOffset32

const uint64_t kDefaultShadowOffset32 = 1ULL << 29
static

Definition at line 100 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kDefaultShadowOffset64

const uint64_t kDefaultShadowOffset64 = 1ULL << 44
static

Definition at line 101 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kDefaultShadowScale

const uint64_t kDefaultShadowScale = 3
static

Definition at line 99 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kDynamicShadowSentinel

const uint64_t kDynamicShadowSentinel
static
Initial value:
=
std::numeric_limits<uint64_t>::max()

Definition at line 102 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kFreeBSD_ShadowOffset32

const uint64_t kFreeBSD_ShadowOffset32 = 1ULL << 30
static

Definition at line 115 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kFreeBSD_ShadowOffset64

const uint64_t kFreeBSD_ShadowOffset64 = 1ULL << 46
static

Definition at line 116 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kFreeBSDAArch64_ShadowOffset64

const uint64_t kFreeBSDAArch64_ShadowOffset64 = 1ULL << 47
static

Definition at line 117 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kFreeBSDKasan_ShadowOffset64

const uint64_t kFreeBSDKasan_ShadowOffset64 = 0xdffff7c000000000
static

Definition at line 118 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kIsWriteMask

size_t kIsWriteMask = 0x1
constexpr

Definition at line 195 of file AddressSanitizer.cpp.

Referenced by llvm::ASanAccessInfo::ASanAccessInfo().

◆ kIsWriteShift

size_t kIsWriteShift = 5
constexpr

◆ kLinuxKasan_ShadowOffset64

const uint64_t kLinuxKasan_ShadowOffset64 = 0xdffffc0000000000
static

Definition at line 106 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kLoongArch64_ShadowOffset64

const uint64_t kLoongArch64_ShadowOffset64 = 1ULL << 46
static

Definition at line 113 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kMaxAsanStackMallocSizeClass

const int kMaxAsanStackMallocSizeClass = 10
static

Definition at line 154 of file AddressSanitizer.cpp.

◆ kMaxStackMallocSize

const size_t kMaxStackMallocSize = 1 << 16
static

Definition at line 130 of file AddressSanitizer.cpp.

Referenced by StackMallocSizeClass().

◆ kMinStackMallocSize

const size_t kMinStackMallocSize = 1 << 6
static

Definition at line 129 of file AddressSanitizer.cpp.

Referenced by StackMallocSizeClass().

◆ kMIPS32_ShadowOffset32

const uint64_t kMIPS32_ShadowOffset32 = 0x0aaa0000
static

Definition at line 110 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kMIPS64_ShadowOffset64

const uint64_t kMIPS64_ShadowOffset64 = 1ULL << 37
static

Definition at line 111 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kMIPS_ShadowOffsetN32

const uint64_t kMIPS_ShadowOffsetN32 = 1ULL << 29
static

Definition at line 109 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kNetBSD_ShadowOffset32

const uint64_t kNetBSD_ShadowOffset32 = 1ULL << 30
static

Definition at line 119 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kNetBSD_ShadowOffset64

const uint64_t kNetBSD_ShadowOffset64 = 1ULL << 46
static

Definition at line 120 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kNetBSDKasan_ShadowOffset64

const uint64_t kNetBSDKasan_ShadowOffset64 = 0xdfff900000000000
static

Definition at line 121 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kNumberOfAccessSizes

const size_t kNumberOfAccessSizes = 5
static

◆ kODRGenPrefix

const char kODRGenPrefix[] = "__odr_asan_gen_"

Definition at line 160 of file AddressSanitizer.cpp.

Referenced by GlobalWasGeneratedByCompiler().

◆ kPPC64_ShadowOffset64

const uint64_t kPPC64_ShadowOffset64 = 1ULL << 44
static

Definition at line 107 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kPS_ShadowOffset64

const uint64_t kPS_ShadowOffset64 = 1ULL << 40
static

Definition at line 122 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kRetiredStackFrameMagic

const uintptr_t kRetiredStackFrameMagic = 0x45E0360E
static

Definition at line 132 of file AddressSanitizer.cpp.

◆ kRISCV64_ShadowOffset64

const uint64_t kRISCV64_ShadowOffset64 = kDynamicShadowSentinel
static

Definition at line 114 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kSanCovGenPrefix

const char kSanCovGenPrefix[] = "__sancov_gen_"

Definition at line 161 of file AddressSanitizer.cpp.

Referenced by GlobalWasGeneratedByCompiler().

◆ kSmallX86_64ShadowOffsetAlignMask

const uint64_t kSmallX86_64ShadowOffsetAlignMask = ~0xFFFULL
static

Definition at line 105 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kSmallX86_64ShadowOffsetBase

const uint64_t kSmallX86_64ShadowOffsetBase = 0x7FFFFFFF
static

Definition at line 104 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kSystemZ_ShadowOffset64

const uint64_t kSystemZ_ShadowOffset64 = 1ULL << 52
static

Definition at line 108 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kWebAssemblyShadowOffset

const uint64_t kWebAssemblyShadowOffset = 0
static

Definition at line 124 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kWindowsShadowOffset32

const uint64_t kWindowsShadowOffset32 = 3ULL << 28
static

Definition at line 123 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().

◆ kWindowsShadowOffset64

const uint64_t kWindowsShadowOffset64 = kDynamicShadowSentinel
static

Definition at line 127 of file AddressSanitizer.cpp.

Referenced by getShadowMapping().