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(StringRef BlacklistPath,
20 : SCL(llvm::SpecialCaseList::createOrDie(BlacklistPath)), SM(SM) {}
22 bool SanitizerBlacklist::isBlacklistedGlobal(StringRef GlobalName,
23 StringRef Category) const {
24 return SCL->inSection("global", GlobalName, Category);
27 bool SanitizerBlacklist::isBlacklistedType(StringRef MangledTypeName,
28 StringRef Category) const {
29 return SCL->inSection("type", MangledTypeName, Category);
32 bool SanitizerBlacklist::isBlacklistedFunction(StringRef FunctionName) const {
33 return SCL->inSection("fun", FunctionName);
36 bool SanitizerBlacklist::isBlacklistedFile(StringRef FileName,
37 StringRef Category) const {
38 return SCL->inSection("src", FileName, Category);
41 bool SanitizerBlacklist::isBlacklistedLocation(SourceLocation Loc,
42 StringRef Category) const {
43 return !Loc.isInvalid() &&
44 isBlacklistedFile(SM.getFilename(SM.getFileLoc(Loc)), Category);