forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===--- SanitizerMetadata.h - Metadata for sanitizers ----------*- C++ -*-===//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file is distributed under the University of Illinois Open Source
 | |
| // License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| //
 | |
| // Class which emits metadata consumed by sanitizer instrumentation passes.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| #ifndef LLVM_CLANG_LIB_CODEGEN_SANITIZERMETADATA_H
 | |
| #define LLVM_CLANG_LIB_CODEGEN_SANITIZERMETADATA_H
 | |
| 
 | |
| #include "clang/AST/Type.h"
 | |
| #include "clang/Basic/LLVM.h"
 | |
| #include "clang/Basic/SourceLocation.h"
 | |
| 
 | |
| namespace llvm {
 | |
| class GlobalVariable;
 | |
| class Instruction;
 | |
| class MDNode;
 | |
| }
 | |
| 
 | |
| namespace clang {
 | |
| class VarDecl;
 | |
| 
 | |
| namespace CodeGen {
 | |
| 
 | |
| class CodeGenModule;
 | |
| 
 | |
| class SanitizerMetadata {
 | |
|   SanitizerMetadata(const SanitizerMetadata &) = delete;
 | |
|   void operator=(const SanitizerMetadata &) = delete;
 | |
| 
 | |
|   CodeGenModule &CGM;
 | |
| public:
 | |
|   SanitizerMetadata(CodeGenModule &CGM);
 | |
|   void reportGlobalToASan(llvm::GlobalVariable *GV, const VarDecl &D,
 | |
|                           bool IsDynInit = false);
 | |
|   void reportGlobalToASan(llvm::GlobalVariable *GV, SourceLocation Loc,
 | |
|                           StringRef Name, QualType Ty, bool IsDynInit = false,
 | |
|                           bool IsBlacklisted = false);
 | |
|   void disableSanitizerForGlobal(llvm::GlobalVariable *GV);
 | |
|   void disableSanitizerForInstruction(llvm::Instruction *I);
 | |
| private:
 | |
|   llvm::MDNode *getLocationMetadata(SourceLocation Loc);
 | |
| };
 | |
| }  // end namespace CodeGen
 | |
| }  // end namespace clang
 | |
| 
 | |
| #endif
 |