1ef8225444452a1486bd721f3285301fe84643b00Stephen Hines//===--- SanitizerBlacklist.h - Blacklist for sanitizers --------*- C++ -*-===// 2ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// 3ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// The LLVM Compiler Infrastructure 4ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// 5ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// This file is distributed under the University of Illinois Open Source 6ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// License. See LICENSE.TXT for details. 7ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// 8ef8225444452a1486bd721f3285301fe84643b00Stephen Hines//===----------------------------------------------------------------------===// 9ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// 10ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// User-provided blacklist used to disable/alter instrumentation done in 11ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// sanitizers. 12ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// 13ef8225444452a1486bd721f3285301fe84643b00Stephen Hines//===----------------------------------------------------------------------===// 14ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#ifndef CLANG_CODEGEN_SANITIZERBLACKLIST_H 15ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#define CLANG_CODEGEN_SANITIZERBLACKLIST_H 16ef8225444452a1486bd721f3285301fe84643b00Stephen Hines 17ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#include "clang/Basic/LLVM.h" 18ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#include "llvm/ADT/StringRef.h" 19ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#include "llvm/Support/SpecialCaseList.h" 20ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#include <memory> 21ef8225444452a1486bd721f3285301fe84643b00Stephen Hines 22ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesnamespace llvm { 23ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesclass GlobalVariable; 24ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesclass Function; 25ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesclass Module; 26ef8225444452a1486bd721f3285301fe84643b00Stephen Hines} 27ef8225444452a1486bd721f3285301fe84643b00Stephen Hines 28ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesnamespace clang { 29ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesnamespace CodeGen { 30ef8225444452a1486bd721f3285301fe84643b00Stephen Hines 31ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesclass SanitizerBlacklist { 32ef8225444452a1486bd721f3285301fe84643b00Stephen Hines std::unique_ptr<llvm::SpecialCaseList> SCL; 33ef8225444452a1486bd721f3285301fe84643b00Stephen Hines 34ef8225444452a1486bd721f3285301fe84643b00Stephen Hinespublic: 35ef8225444452a1486bd721f3285301fe84643b00Stephen Hines SanitizerBlacklist(llvm::SpecialCaseList *SCL) : SCL(SCL) {} 36ef8225444452a1486bd721f3285301fe84643b00Stephen Hines bool isIn(const llvm::Module &M, 37ef8225444452a1486bd721f3285301fe84643b00Stephen Hines const StringRef Category = StringRef()) const; 38ef8225444452a1486bd721f3285301fe84643b00Stephen Hines bool isIn(const llvm::Function &F) const; 39ef8225444452a1486bd721f3285301fe84643b00Stephen Hines bool isIn(const llvm::GlobalVariable &G, 40ef8225444452a1486bd721f3285301fe84643b00Stephen Hines const StringRef Category = StringRef()) const; 41ef8225444452a1486bd721f3285301fe84643b00Stephen Hines}; 42ef8225444452a1486bd721f3285301fe84643b00Stephen Hines} // end namespace CodeGen 43ef8225444452a1486bd721f3285301fe84643b00Stephen Hines} // end namespace clang 44ef8225444452a1486bd721f3285301fe84643b00Stephen Hines 45ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#endif 46