Coverage Report

Created: 2018-07-19 20:53

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/include/clang/Basic/SanitizerSpecialCaseList.h
Line
Count
Source
1
//===--- SanitizerSpecialCaseList.h - SCL for sanitizers --------*- C++ -*-===//
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
// An extension of SpecialCaseList to allowing querying sections by
11
// SanitizerMask.
12
//
13
//===----------------------------------------------------------------------===//
14
#ifndef LLVM_CLANG_BASIC_SANITIZERSPECIALCASELIST_H
15
#define LLVM_CLANG_BASIC_SANITIZERSPECIALCASELIST_H
16
17
#include "clang/Basic/LLVM.h"
18
#include "clang/Basic/Sanitizers.h"
19
#include "llvm/ADT/StringRef.h"
20
#include "llvm/Support/SpecialCaseList.h"
21
#include <memory>
22
23
namespace clang {
24
25
class SanitizerSpecialCaseList : public llvm::SpecialCaseList {
26
public:
27
  static std::unique_ptr<SanitizerSpecialCaseList>
28
  create(const std::vector<std::string> &Paths, std::string &Error);
29
30
  static std::unique_ptr<SanitizerSpecialCaseList>
31
  createOrDie(const std::vector<std::string> &Paths);
32
33
  // Query blacklisted entries if any bit in Mask matches the entry's section.
34
  bool inSection(SanitizerMask Mask, StringRef Prefix, StringRef Query,
35
                 StringRef Category = StringRef()) const;
36
37
protected:
38
  // Initialize SanitizerSections.
39
  void createSanitizerSections();
40
41
  struct SanitizerSection {
42
    SanitizerSection(SanitizerMask SM, SectionEntries &E)
43
33
        : Mask(SM), Entries(E){};
44
45
    SanitizerMask Mask;
46
    SectionEntries &Entries;
47
  };
48
49
  std::vector<SanitizerSection> SanitizerSections;
50
};
51
52
} // end namespace clang
53
54
#endif