summaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorMitch Phillips <31459023+hctim@users.noreply.github.com>2022-06-13 12:10:40 -0700
committerMitch Phillips <31459023+hctim@users.noreply.github.com>2022-06-13 12:11:13 -0700
commit8e1f47b596b28fbc88cf32e8f46eb2fecb145fb2 (patch)
treef87bd5130adc59871316125291266df224ac0345 /clang/lib/CodeGen/CodeGenModule.cpp
parent7cb0bc8abf6efd7e25b0091a7306de23c3a0f314 (diff)
Revert "Add sanitizer metadata attributes to clang IR gen."
This reverts commit e7766972a6790e25dbb4ce3481f57e9792b49269. Broke the Windows buildbots.
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r--clang/lib/CodeGen/CodeGenModule.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 05738c03796b..95d1a4c5f1bc 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -2760,14 +2760,21 @@ bool CodeGenModule::isInNoSanitizeList(SanitizerMask Kind, llvm::Function *Fn,
return false;
}
-bool CodeGenModule::isInNoSanitizeList(SanitizerMask Kind,
- llvm::GlobalVariable *GV,
+bool CodeGenModule::isInNoSanitizeList(llvm::GlobalVariable *GV,
SourceLocation Loc, QualType Ty,
StringRef Category) const {
+ // For now globals can be ignored only in ASan and KASan.
+ const SanitizerMask EnabledAsanMask =
+ LangOpts.Sanitize.Mask &
+ (SanitizerKind::Address | SanitizerKind::KernelAddress |
+ SanitizerKind::HWAddress | SanitizerKind::KernelHWAddress |
+ SanitizerKind::MemTag);
+ if (!EnabledAsanMask)
+ return false;
const auto &NoSanitizeL = getContext().getNoSanitizeList();
- if (NoSanitizeL.containsGlobal(Kind, GV->getName(), Category))
+ if (NoSanitizeL.containsGlobal(EnabledAsanMask, GV->getName(), Category))
return true;
- if (NoSanitizeL.containsLocation(Kind, Loc, Category))
+ if (NoSanitizeL.containsLocation(EnabledAsanMask, Loc, Category))
return true;
// Check global type.
if (!Ty.isNull()) {
@@ -2779,7 +2786,7 @@ bool CodeGenModule::isInNoSanitizeList(SanitizerMask Kind,
// Only record types (classes, structs etc.) are ignored.
if (Ty->isRecordType()) {
std::string TypeStr = Ty.getAsString(getContext().getPrintingPolicy());
- if (NoSanitizeL.containsType(Kind, TypeStr, Category))
+ if (NoSanitizeL.containsType(EnabledAsanMask, TypeStr, Category))
return true;
}
}