LLVM 22.0.0git
SanitizerBinaryMetadata.h
Go to the documentation of this file.
1//===------- Definition of the SanitizerBinaryMetadata class ----*- 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-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file declares the SanitizerBinaryMetadata pass.
10//
11//===----------------------------------------------------------------------===//
12#ifndef LLVM_TRANSFORMS_INSTRUMENTATION_SANITIZERBINARYMETADATA_H
13#define LLVM_TRANSFORMS_INSTRUMENTATION_SANITIZERBINARYMETADATA_H
14
15#include "llvm/ADT/ArrayRef.h"
16#include "llvm/IR/Function.h"
17#include "llvm/IR/Module.h"
18#include "llvm/IR/PassManager.h"
21
22namespace llvm {
23
25 bool Covered = false;
26 bool Atomics = false;
27 bool UAR = false;
29};
30
31inline constexpr int kSanitizerBinaryMetadataAtomicsBit = 0;
32inline constexpr int kSanitizerBinaryMetadataUARBit = 1;
34
41
43 "sanmd_covered";
45 "sanmd_atomics";
46
47/// Public interface to the SanitizerBinaryMetadata module pass for emitting
48/// metadata for binary analysis sanitizers.
49//
50/// The pass should be inserted after optimizations.
52 : public PassInfoMixin<SanitizerBinaryMetadataPass> {
53public:
56 ArrayRef<std::string> IgnorelistFiles = {});
58 static bool isRequired() { return true; }
59
60private:
62 const ArrayRef<std::string> IgnorelistFiles;
63};
64
65} // namespace llvm
66
67#endif
#define LLVM_ABI
Definition: Compiler.h:213
Module.h This file contains the declarations for the Module class.
This header defines various interfaces for pass management in LLVM.
A container for analyses that lazily runs them and caches their results.
Definition: PassManager.h:255
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Definition: ArrayRef.h:41
A Module instance is used to store all the information related to an LLVM module.
Definition: Module.h:67
A set of analyses that are preserved following a run of a transformation pass.
Definition: Analysis.h:112
Public interface to the SanitizerBinaryMetadata module pass for emitting metadata for binary analysis...
LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
constexpr uint64_t kSanitizerBinaryMetadataUAR
constexpr uint64_t kSanitizerBinaryMetadataUARHasSize
constexpr int kSanitizerBinaryMetadataUARHasSizeBit
constexpr uint64_t kSanitizerBinaryMetadataAtomics
constexpr int kSanitizerBinaryMetadataAtomicsBit
constexpr int kSanitizerBinaryMetadataUARBit
constexpr char kSanitizerBinaryMetadataCoveredSection[]
constexpr char kSanitizerBinaryMetadataAtomicsSection[]
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition: PassManager.h:70