brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 000f02c Raw
52 lines · c
1//===--- SanitizerMetadata.h - Metadata for sanitizers ----------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// Class which emits metadata consumed by sanitizer instrumentation passes.10//11//===----------------------------------------------------------------------===//12#ifndef LLVM_CLANG_LIB_CODEGEN_SANITIZERMETADATA_H13#define LLVM_CLANG_LIB_CODEGEN_SANITIZERMETADATA_H14 15#include "clang/AST/Type.h"16#include "clang/Basic/LLVM.h"17#include "clang/Basic/Sanitizers.h"18#include "clang/Basic/SourceLocation.h"19 20namespace llvm {21class GlobalVariable;22class Instruction;23} // namespace llvm24 25namespace clang {26class VarDecl;27 28namespace CodeGen {29 30class CodeGenModule;31 32class SanitizerMetadata {33  SanitizerMetadata(const SanitizerMetadata &) = delete;34  void operator=(const SanitizerMetadata &) = delete;35 36  CodeGenModule &CGM;37 38public:39  SanitizerMetadata(CodeGenModule &CGM);40  void reportGlobal(llvm::GlobalVariable *GV, const VarDecl &D,41                    bool IsDynInit = false);42  void reportGlobal(llvm::GlobalVariable *GV, SourceLocation Loc,43                    StringRef Name, QualType Ty = {},44                    SanitizerMask NoSanitizeAttrMask = {},45                    bool IsDynInit = false);46  void disableSanitizerForGlobal(llvm::GlobalVariable *GV);47};48} // end namespace CodeGen49} // end namespace clang50 51#endif52