summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorDouglas Katzman <dougk@google.com>2016-10-14 19:55:09 +0000
committerDouglas Katzman <dougk@google.com>2016-10-14 19:55:09 +0000
commit3ed0f643fc3267b7fbb319e4cb5610e5a7e1ba86 (patch)
treec78c3e1d4ce390185d4059c55d78750d01cc1365 /clang/lib/CodeGen
parentf80a27e3c6190a9aaec4454696cd4c162e3164e6 (diff)
downloadbcm5719-llvm-3ed0f643fc3267b7fbb319e4cb5610e5a7e1ba86.tar.gz
bcm5719-llvm-3ed0f643fc3267b7fbb319e4cb5610e5a7e1ba86.zip
Implement no_sanitize_address for global vars
llvm-svn: 284272
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/SanitizerMetadata.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/SanitizerMetadata.cpp b/clang/lib/CodeGen/SanitizerMetadata.cpp
index 2a338bac4b4..9848e3e452f 100644
--- a/clang/lib/CodeGen/SanitizerMetadata.cpp
+++ b/clang/lib/CodeGen/SanitizerMetadata.cpp
@@ -63,7 +63,13 @@ void SanitizerMetadata::reportGlobalToASan(llvm::GlobalVariable *GV,
std::string QualName;
llvm::raw_string_ostream OS(QualName);
D.printQualifiedName(OS);
- reportGlobalToASan(GV, D.getLocation(), OS.str(), D.getType(), IsDynInit);
+
+ bool IsBlacklisted = false;
+ for (auto Attr : D.specific_attrs<NoSanitizeAttr>())
+ if (Attr->getMask() & SanitizerKind::Address)
+ IsBlacklisted = true;
+ reportGlobalToASan(GV, D.getLocation(), OS.str(), D.getType(), IsDynInit,
+ IsBlacklisted);
}
void SanitizerMetadata::disableSanitizerForGlobal(llvm::GlobalVariable *GV) {
OpenPOWER on IntegriCloud