1 //===--- SanitizerBlacklist.cpp - Blacklist for sanitizers ----------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // User-provided blacklist used to disable/alter instrumentation done in
13 //===----------------------------------------------------------------------===//
14 #include "clang/Basic/SanitizerBlacklist.h"
16 using namespace clang;
18 SanitizerBlacklist::SanitizerBlacklist(
19 const std::vector<std::string> &BlacklistPaths, SourceManager &SM)
20 : SSCL(SanitizerSpecialCaseList::createOrDie(BlacklistPaths)), SM(SM) {}
22 bool SanitizerBlacklist::isBlacklistedGlobal(SanitizerMask Mask,
24 StringRef Category) const {
25 return SSCL->inSection(Mask, "global", GlobalName, Category);
28 bool SanitizerBlacklist::isBlacklistedType(SanitizerMask Mask,
29 StringRef MangledTypeName,
30 StringRef Category) const {
31 return SSCL->inSection(Mask, "type", MangledTypeName, Category);
34 bool SanitizerBlacklist::isBlacklistedFunction(SanitizerMask Mask,
35 StringRef FunctionName) const {
36 return SSCL->inSection(Mask, "fun", FunctionName);
39 bool SanitizerBlacklist::isBlacklistedFile(SanitizerMask Mask,
41 StringRef Category) const {
42 return SSCL->inSection(Mask, "src", FileName, Category);
45 bool SanitizerBlacklist::isBlacklistedLocation(SanitizerMask Mask,
47 StringRef Category) const {
48 return Loc.isValid() &&
49 isBlacklistedFile(Mask, SM.getFilename(SM.getFileLoc(Loc)), Category);