Changeset View
Changeset View
Standalone View
Standalone View
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
Show First 20 Lines • Show All 2,233 Lines • ▼ Show 20 Lines | bool CodeGenModule::isInSanitizerBlacklist(SanitizerMask Kind, | ||||
} | } | ||||
return false; | return false; | ||||
} | } | ||||
bool CodeGenModule::isInSanitizerBlacklist(llvm::GlobalVariable *GV, | bool CodeGenModule::isInSanitizerBlacklist(llvm::GlobalVariable *GV, | ||||
SourceLocation Loc, QualType Ty, | SourceLocation Loc, QualType Ty, | ||||
StringRef Category) const { | StringRef Category) const { | ||||
// For now globals can be blacklisted only in ASan and KASan. | // For now globals can be blacklisted only in ASan and KASan. | ||||
const SanitizerMask EnabledAsanMask = LangOpts.Sanitize.Mask & | const SanitizerMask EnabledAsanMask = | ||||
LangOpts.Sanitize.Mask & | |||||
(SanitizerKind::Address | SanitizerKind::KernelAddress | | (SanitizerKind::Address | SanitizerKind::KernelAddress | | ||||
SanitizerKind::HWAddress | SanitizerKind::KernelHWAddress); | SanitizerKind::HWAddress | SanitizerKind::KernelHWAddress | | ||||
SanitizerKind::MemTag); | |||||
if (!EnabledAsanMask) | if (!EnabledAsanMask) | ||||
return false; | return false; | ||||
const auto &SanitizerBL = getContext().getSanitizerBlacklist(); | const auto &SanitizerBL = getContext().getSanitizerBlacklist(); | ||||
if (SanitizerBL.isBlacklistedGlobal(EnabledAsanMask, GV->getName(), Category)) | if (SanitizerBL.isBlacklistedGlobal(EnabledAsanMask, GV->getName(), Category)) | ||||
return true; | return true; | ||||
if (SanitizerBL.isBlacklistedLocation(EnabledAsanMask, Loc, Category)) | if (SanitizerBL.isBlacklistedLocation(EnabledAsanMask, Loc, Category)) | ||||
return true; | return true; | ||||
// Check global type. | // Check global type. | ||||
▲ Show 20 Lines • Show All 3,566 Lines • Show Last 20 Lines |