LLVM: llvm::jitlink::PassConfiguration Struct Reference (original) (raw)

An LinkGraph pass configuration, consisting of a list of pre-prune, post-prune, and post-fixup passes. More...

#include "[llvm/ExecutionEngine/JITLink/JITLink.h](JITLink%5F8h%5Fsource.html)"

Public Attributes
LinkGraphPassList PrePrunePasses
Pre-prune passes.
LinkGraphPassList PostPrunePasses
Post-prune passes.
LinkGraphPassList PostAllocationPasses
Post-allocation passes.
LinkGraphPassList PreFixupPasses
Pre-fixup passes.
LinkGraphPassList PostFixupPasses
Post-fixup passes.

An LinkGraph pass configuration, consisting of a list of pre-prune, post-prune, and post-fixup passes.

Definition at line 1838 of file JITLink.h.

PostAllocationPasses

Post-allocation passes.

These passes are called on the graph after memory has been allocated and defined nodes have been assigned their final addresses, but before the context has been notified of these addresses. At this point externals have not been resolved, and symbol content has not yet been copied into working memory.

Notable use cases: Setting up data structures associated with addresses of defined symbols (e.g. a mapping of __dso_handle to JITDylib* for the JIT runtime) – using a PostAllocationPass for this ensures that the data structures are in-place before any query for resolved symbols can complete.

Definition at line 1869 of file JITLink.h.

Referenced by llvm::jitlink::ELFJITLinker_ppc64< Endianness >::ELFJITLinker_ppc64(), llvm::jitlink::ELFJITLinker_riscv::ELFJITLinker_riscv(), llvm::jitlink::ELFJITLinker_x86::ELFJITLinker_x86(), llvm::jitlink::ELFJITLinker_systemz::JITLinker< ELFJITLinker_systemz >, llvm::jitlink::link_ELF_aarch64(), llvm::jitlink::link_ELF_loongarch(), llvm::jitlink::link_ELF_riscv(), llvm::jitlink::link_ELF_x86_64(), llvm::jitlink::link_MachO_arm64(), llvm::jitlink::link_MachO_x86_64(), and llvm::orc::ELFDebugObjectPlugin::modifyPassConfig().

PostFixupPasses

PostPrunePasses

Post-prune passes.

These passes are called on the graph after dead stripping, but before memory is allocated or nodes assigned their final addresses.

Notable use cases: Building GOT, stub, and TLV symbols.

Definition at line 1854 of file JITLink.h.

Referenced by llvm::jitlink::ELFJITLinker_aarch32::JITLinker< ELFJITLinker_aarch32 >, llvm::jitlink::ELFJITLinker_systemz::JITLinker< ELFJITLinker_systemz >, llvm::jitlink::ELFJITLinker_x86::JITLinker< ELFJITLinker_x86 >, llvm::jitlink::link_ELF_aarch64(), llvm::jitlink::link_ELF_loongarch(), llvm::jitlink::link_ELF_ppc64(), llvm::jitlink::link_ELF_riscv(), llvm::jitlink::link_ELF_x86_64(), llvm::jitlink::link_MachO_arm64(), and llvm::jitlink::link_MachO_x86_64().

PreFixupPasses

Pre-fixup passes.

These passes are called on the graph after memory has been allocated, content copied into working memory, and all nodes (including externals) have been assigned their final addresses, but before any fixups have been applied.

Notable use cases: Late link-time optimizations like GOT and stub elimination.

Definition at line 1880 of file JITLink.h.

Referenced by llvm::jitlink::ELFJITLinker_x86::JITLinker< ELFJITLinker_x86 >, llvm::jitlink::link_COFF_x86_64(), llvm::jitlink::link_ELF_x86_64(), llvm::jitlink::link_MachO_arm64(), llvm::jitlink::link_MachO_x86_64(), llvm::orc::ELFDebugObjectPlugin::modifyPassConfig(), llvm::orc::JITLinkReentryTrampolines::TrampolineAddrScraperPlugin::modifyPassConfig(), and llvm::orc::LinkGraphLinkingLayer::JITLinkCtx::modifyPassConfig().

PrePrunePasses

Pre-prune passes.

These passes are called on the graph after it is built, and before any symbols have been pruned. Graph nodes still have their original vmaddrs.

Notable use cases: Marking symbols live or should-discard.

Definition at line 1846 of file JITLink.h.

Referenced by llvm::jitlink::ELFJITLinker_aarch32::JITLinker< ELFJITLinker_aarch32 >, llvm::jitlink::ELFJITLinker_systemz::JITLinker< ELFJITLinker_systemz >, llvm::jitlink::ELFJITLinker_x86::JITLinker< ELFJITLinker_x86 >, llvm::jitlink::link_COFF_x86_64(), llvm::jitlink::link_ELF_aarch64(), llvm::jitlink::link_ELF_loongarch(), llvm::jitlink::link_ELF_ppc64(), llvm::jitlink::link_ELF_riscv(), llvm::jitlink::link_ELF_x86_64(), llvm::jitlink::link_MachO_arm64(), llvm::jitlink::link_MachO_x86_64(), llvm::orc::DebugInfoPreservationPlugin::modifyPassConfig(), llvm::orc::EHFrameRegistrationPlugin::modifyPassConfig(), llvm::orc::LazyObjectLinkingLayer::RenamerPlugin::modifyPassConfig(), and llvm::orc::LinkGraphLinkingLayer::JITLinkCtx::modifyPassConfig().


The documentation for this struct was generated from the following file: