diff options
| author | Mitch Phillips <31459023+hctim@users.noreply.github.com> | 2022-06-13 12:10:40 -0700 |
|---|---|---|
| committer | Mitch Phillips <31459023+hctim@users.noreply.github.com> | 2022-06-13 12:11:13 -0700 |
| commit | 8e1f47b596b28fbc88cf32e8f46eb2fecb145fb2 (patch) | |
| tree | f87bd5130adc59871316125291266df224ac0345 /clang/lib/CodeGen/CodeGenModule.cpp | |
| parent | 7cb0bc8abf6efd7e25b0091a7306de23c3a0f314 (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.cpp | 17 |
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; } } |
