1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | #include "clang/Basic/SanitizerBlacklist.h" |
14 | |
15 | using namespace clang; |
16 | |
17 | SanitizerBlacklist::SanitizerBlacklist( |
18 | const std::vector<std::string> &BlacklistPaths, SourceManager &SM) |
19 | : SSCL(SanitizerSpecialCaseList::createOrDie(BlacklistPaths)), SM(SM) {} |
20 | |
21 | bool SanitizerBlacklist::isBlacklistedGlobal(SanitizerMask Mask, |
22 | StringRef GlobalName, |
23 | StringRef Category) const { |
24 | return SSCL->inSection(Mask, "global", GlobalName, Category); |
25 | } |
26 | |
27 | bool SanitizerBlacklist::isBlacklistedType(SanitizerMask Mask, |
28 | StringRef MangledTypeName, |
29 | StringRef Category) const { |
30 | return SSCL->inSection(Mask, "type", MangledTypeName, Category); |
31 | } |
32 | |
33 | bool SanitizerBlacklist::isBlacklistedFunction(SanitizerMask Mask, |
34 | StringRef FunctionName) const { |
35 | return SSCL->inSection(Mask, "fun", FunctionName); |
36 | } |
37 | |
38 | bool SanitizerBlacklist::isBlacklistedFile(SanitizerMask Mask, |
39 | StringRef FileName, |
40 | StringRef Category) const { |
41 | return SSCL->inSection(Mask, "src", FileName, Category); |
42 | } |
43 | |
44 | bool 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 | |