SanitizerBlacklist.cpp revision 360660
1//===--- SanitizerBlacklist.cpp - Blacklist for sanitizers ----------------===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// User-provided blacklist used to disable/alter instrumentation done in 10// sanitizers. 11// 12//===----------------------------------------------------------------------===// 13#include "clang/Basic/SanitizerBlacklist.h" 14 15using namespace clang; 16 17SanitizerBlacklist::SanitizerBlacklist( 18 const std::vector<std::string> &BlacklistPaths, SourceManager &SM) 19 : SSCL(SanitizerSpecialCaseList::createOrDie(BlacklistPaths)), SM(SM) {} 20 21bool SanitizerBlacklist::isBlacklistedGlobal(SanitizerMask Mask, 22 StringRef GlobalName, 23 StringRef Category) const { 24 return SSCL->inSection(Mask, "global", GlobalName, Category); 25} 26 27bool SanitizerBlacklist::isBlacklistedType(SanitizerMask Mask, 28 StringRef MangledTypeName, 29 StringRef Category) const { 30 return SSCL->inSection(Mask, "type", MangledTypeName, Category); 31} 32 33bool SanitizerBlacklist::isBlacklistedFunction(SanitizerMask Mask, 34 StringRef FunctionName) const { 35 return SSCL->inSection(Mask, "fun", FunctionName); 36} 37 38bool SanitizerBlacklist::isBlacklistedFile(SanitizerMask Mask, 39 StringRef FileName, 40 StringRef Category) const { 41 return SSCL->inSection(Mask, "src", FileName, Category); 42} 43 44bool SanitizerBlacklist::isBlacklistedLocation(SanitizerMask Mask, 45 SourceLocation Loc, 46 StringRef Category) const { 47 return Loc.isValid() && 48 isBlacklistedFile(Mask, SM.getFilename(SM.getFileLoc(Loc)), Category); 49} 50 51