LLVM 19.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"
20
21namespace llvm {
22
24 bool Covered = false;
25 bool Atomics = false;
26 bool UAR = false;
28};
29
30inline constexpr int kSanitizerBinaryMetadataAtomicsBit = 0;
31inline constexpr int kSanitizerBinaryMetadataUARBit = 1;
33
40
42 "sanmd_covered";
44 "sanmd_atomics";
45
46/// Public interface to the SanitizerBinaryMetadata module pass for emitting
47/// metadata for binary analysis sanitizers.
48//
49/// The pass should be inserted after optimizations.
51 : public PassInfoMixin<SanitizerBinaryMetadataPass> {
52public:
55 ArrayRef<std::string> IgnorelistFiles = {});
57 static bool isRequired() { return true; }
58
59private:
61 const ArrayRef<std::string> IgnorelistFiles;
62};
63
64} // namespace llvm
65
66#endif
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:321
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:65
A set of analyses that are preserved following a run of a transformation pass.
Definition: Analysis.h:109
Public interface to the SanitizerBinaryMetadata module pass for emitting metadata for binary analysis...
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:74