summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/include/clang/Basic/SanitizerBlacklist.h6
-rw-r--r--clang/lib/Basic/SanitizerBlacklist.cpp20
2 files changed, 15 insertions, 11 deletions
diff --git a/clang/include/clang/Basic/SanitizerBlacklist.h b/clang/include/clang/Basic/SanitizerBlacklist.h
index b9a5dcbe60b..7ea778e02c0 100644
--- a/clang/include/clang/Basic/SanitizerBlacklist.h
+++ b/clang/include/clang/Basic/SanitizerBlacklist.h
@@ -23,7 +23,6 @@
namespace llvm {
class GlobalVariable;
class Function;
-class Module;
}
namespace clang {
@@ -33,12 +32,13 @@ class SanitizerBlacklist {
public:
SanitizerBlacklist(const std::string &BlacklistPath);
- bool isIn(const llvm::Module &M,
- StringRef Category = StringRef()) const;
bool isIn(const llvm::Function &F) const;
bool isIn(const llvm::GlobalVariable &G,
StringRef Category = StringRef()) const;
bool isBlacklistedType(StringRef MangledTypeName) const;
+ bool isBlacklistedFunction(StringRef FunctionName) const;
+ bool isBlacklistedFile(StringRef FileName,
+ StringRef Category = StringRef()) const;
};
} // end namespace clang
diff --git a/clang/lib/Basic/SanitizerBlacklist.cpp b/clang/lib/Basic/SanitizerBlacklist.cpp
index 05dec8b5b83..7627bd02996 100644
--- a/clang/lib/Basic/SanitizerBlacklist.cpp
+++ b/clang/lib/Basic/SanitizerBlacklist.cpp
@@ -32,19 +32,14 @@ static StringRef GetGlobalTypeString(const llvm::GlobalValue &G) {
SanitizerBlacklist::SanitizerBlacklist(const std::string &BlacklistPath)
: SCL(llvm::SpecialCaseList::createOrDie(BlacklistPath)) {}
-bool SanitizerBlacklist::isIn(const llvm::Module &M,
- StringRef Category) const {
- return SCL->inSection("src", M.getModuleIdentifier(), Category);
-}
-
bool SanitizerBlacklist::isIn(const llvm::Function &F) const {
- return isIn(*F.getParent()) ||
- SCL->inSection("fun", F.getName(), "");
+ return isBlacklistedFile(F.getParent()->getModuleIdentifier()) ||
+ isBlacklistedFunction(F.getName());
}
bool SanitizerBlacklist::isIn(const llvm::GlobalVariable &G,
StringRef Category) const {
- return isIn(*G.getParent(), Category) ||
+ return isBlacklistedFile(G.getParent()->getModuleIdentifier(), Category) ||
SCL->inSection("global", G.getName(), Category) ||
SCL->inSection("type", GetGlobalTypeString(G), Category);
}
@@ -52,3 +47,12 @@ bool SanitizerBlacklist::isIn(const llvm::GlobalVariable &G,
bool SanitizerBlacklist::isBlacklistedType(StringRef MangledTypeName) const {
return SCL->inSection("type", MangledTypeName);
}
+
+bool SanitizerBlacklist::isBlacklistedFunction(StringRef FunctionName) const {
+ return SCL->inSection("fun", FunctionName);
+}
+
+bool SanitizerBlacklist::isBlacklistedFile(StringRef FileName,
+ StringRef Category) const {
+ return SCL->inSection("src", FileName, Category);
+}
OpenPOWER on IntegriCloud