blob: de78c94bc19568da433ac6f3cd01060c537d6b9c [file] [log] [blame]
Alexey Samsonovb7dd3292014-07-09 19:40:08 +00001//===--- SanitizerBlacklist.cpp - Blacklist for sanitizers ----------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// User-provided blacklist used to disable/alter instrumentation done in
11// sanitizers.
12//
13//===----------------------------------------------------------------------===//
Alexey Samsonov8d043e82014-10-15 19:57:45 +000014#include "clang/Basic/SanitizerBlacklist.h"
Alexey Samsonovb7dd3292014-07-09 19:40:08 +000015
16using namespace clang;
Alexey Samsonovb7dd3292014-07-09 19:40:08 +000017
Alexey Samsonova511cdd2015-02-04 17:40:08 +000018SanitizerBlacklist::SanitizerBlacklist(
19 const std::vector<std::string> &BlacklistPaths, SourceManager &SM)
20 : SCL(llvm::SpecialCaseList::createOrDie(BlacklistPaths)), SM(SM) {}
Alexey Samsonov0b15e342014-10-15 22:17:27 +000021
Alexey Samsonova0ac3c22014-10-17 22:37:33 +000022bool SanitizerBlacklist::isBlacklistedGlobal(StringRef GlobalName,
23 StringRef Category) const {
24 return SCL->inSection("global", GlobalName, Category);
Alexey Samsonovb7dd3292014-07-09 19:40:08 +000025}
Alexey Samsonov84856012014-07-10 22:34:19 +000026
Kostya Serebryany293dc9b2014-10-16 20:54:52 +000027bool SanitizerBlacklist::isBlacklistedType(StringRef MangledTypeName,
28 StringRef Category) const {
29 return SCL->inSection("type", MangledTypeName, Category);
Alexey Samsonov84856012014-07-10 22:34:19 +000030}
Alexey Samsonov74246aa2014-10-16 17:10:38 +000031
32bool SanitizerBlacklist::isBlacklistedFunction(StringRef FunctionName) const {
33 return SCL->inSection("fun", FunctionName);
34}
35
36bool SanitizerBlacklist::isBlacklistedFile(StringRef FileName,
37 StringRef Category) const {
38 return SCL->inSection("src", FileName, Category);
39}
Alexey Samsonov33e00e22014-10-16 23:50:26 +000040
41bool SanitizerBlacklist::isBlacklistedLocation(SourceLocation Loc,
42 StringRef Category) const {
Yaron Kerened1fe5d2015-10-03 05:15:57 +000043 return Loc.isValid() &&
Alexey Samsonov6d87ce82014-10-22 19:34:25 +000044 isBlacklistedFile(SM.getFilename(SM.getFileLoc(Loc)), Category);
Alexey Samsonov33e00e22014-10-16 23:50:26 +000045}
46