LLVM: llvm::jitlink Namespace Reference (original) (raw)
| Namespaces | |
|---|---|
| namespace | aarch32 |
| namespace | aarch64 |
| namespace | loongarch |
| namespace | ppc64 |
| namespace | riscv |
| namespace | systemz |
| namespace | x86 |
| namespace | x86_64 |
| Classes | |
|---|---|
| class | Addressable |
| Base class for Addressable entities (externals, absolutes, blocks). More... | |
| class | BasicLayout |
| BasicLayout simplifies the implementation of JITLinkMemoryManagers. More... | |
| class | Block |
| An Addressable with content and edges. More... | |
| class | BlockAddressMap |
| Enables easy lookup of blocks by addresses. More... | |
| class | COFFDirectiveParser |
| Parser for the MSVC specific preprocessor directives. More... | |
| class | COFFLinkGraphBuilder |
| class | CompactUnwindManager |
| Architecture specific implementation of CompactUnwindManager. More... | |
| struct | CompactUnwindTraits |
| CRTP base for compact unwind traits classes. More... | |
| struct | CompactUnwindTraits_MachO_arm64 |
| struct | CompactUnwindTraits_MachO_x86_64 |
| class | DefineExternalSectionStartAndEndSymbols |
| Pass implementation for the createDefineExternalSectionStartAndEndSymbols function. More... | |
| class | DWARFRecordSectionSplitter |
| A LinkGraph pass that splits blocks in a section that follows the DWARF Record format into sub-blocks where each header gets its own block. More... | |
| class | Edge |
| Represents fixups and constraints in the LinkGraph. More... | |
| class | EHFrameCFIBlockInspector |
| Inspect an eh-frame CFI record. More... | |
| class | EHFrameEdgeFixer |
| A LinkGraph pass that adds missing FDE-to-CIE, FDE-to-PC and FDE-to-LSDA edges. More... | |
| class | EHFrameNullTerminator |
| Add a 32-bit null-terminator to the end of the eh-frame section. More... | |
| class | ELFJITLinker_aarch32 |
| class | ELFJITLinker_ppc64 |
| class | ELFJITLinker_riscv |
| class | ELFJITLinker_systemz |
| class | ELFJITLinker_x86 |
| class | ELFJITLinker_x86_64 |
| class | ELFLinkGraphBuilder |
| LinkGraph building code that's specific to the given ELFT, but common across all architectures. More... | |
| class | ELFLinkGraphBuilder_aarch32 |
| class | ELFLinkGraphBuilder_ppc64 |
| class | ELFLinkGraphBuilder_riscv |
| class | ELFLinkGraphBuilder_systemz |
| class | ELFLinkGraphBuilder_x86 |
| class | ELFLinkGraphBuilder_x86_64 |
| class | ELFLinkGraphBuilderBase |
| Common link-graph building code shared between all ELFFiles. More... | |
| class | GetImageBaseSymbol |
| class | InProcessMemoryManager |
| A JITLinkMemoryManager that allocates in-process memory. More... | |
| class | JITLinkAsyncLookupContinuation |
| A function object to call with a resolved symbol map (See AsyncLookupResult) or an error if resolution failed. More... | |
| class | JITLinkContext |
| Holds context for a single jitLink invocation. More... | |
| class | JITLinkDylib |
| class | JITLinker |
| class | JITLinkerBase |
| Base class for a JIT linker. More... | |
| class | JITLinkError |
| Base class for errors originating in JIT linker, e.g. More... | |
| class | JITLinkMemoryManager |
| Manages allocations of JIT memory. More... | |
| class | LinkGraph |
| class | MachOJITLinker_arm64 |
| class | MachOJITLinker_x86_64 |
| class | MachOLinkGraphBuilder |
| struct | PassConfiguration |
| An LinkGraph pass configuration, consisting of a list of pre-prune, post-prune, and post-fixup passes. More... | |
| class | PerGraphGOTAndPLTStubsBuilder |
| Per-object GOT and PLT Stub builder. More... | |
| class | Section |
| Represents an object file section. More... | |
| class | SectionRange |
| Represents a section address range via a pair of Block pointers to the first and last Blocks in the section. More... | |
| struct | SectionRangeSymbolDesc |
| class | SEHFrameKeepAlivePass |
| This pass adds keep-alive edge from SEH frame sections to the parent function content block. More... | |
| class | SimpleSegmentAlloc |
| A utility class for making simple allocations using JITLinkMemoryManager. More... | |
| class | Symbol |
| Symbol representation. More... | |
| class | SymbolAddressMap |
| A map of addresses to Symbols. More... | |
| class | TableManager |
| A CRTP base for tables that are built on demand, e.g. More... | |
| class | XCOFFJITLinker_ppc64 |
| class | XCOFFLinkGraphBuilder |
| Typedefs | |
|---|---|
| using | SectionOrdinal = unsigned |
| using | TargetFlagsType = uint8_t |
| Holds target-specific properties for a symbol. | |
| using | LinkGraphPassFunction = unique_function<Error(LinkGraph &)> |
| A function for mutating LinkGraphs. | |
| using | LinkGraphPassList = std::vector<LinkGraphPassFunction> |
| A list of LinkGraph passes. | |
| using | AsyncLookupResult |
| A map of symbol names to resolved addresses. | |
| using | AnonymousPointerCreator |
| Creates a new pointer block in the given section and returns an Anonymous symbol pointing to it. | |
| using | PointerJumpStubCreator |
| Create a jump stub that jumps via the pointer at the given symbol and an anonymous symbol pointing to it. |
| Enumerations | |
|---|---|
| enum class | Linkage : uint8_t { Strong, Weak } |
| Describes symbol linkage. This can be used to resolve definition clashes. More... | |
| enum class | Scope : uint8_t { Default, Hidden, SideEffectsOnly, Local } |
| Defines the scope in which this symbol should be visible: Default – Visible in the public interface of the linkage unit. More... | |
| enum class | SymbolLookupFlags { RequiredSymbol, WeaklyReferencedSymbol } |
| Flags for symbol lookup. More... | |
| enum | { COFF_OPT_INVALID = 0 } |
| Functions | |
|---|---|
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromCOFFObject (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an COFF relocatable object. | |
| void | link_COFF (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| Link the given graph. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromCOFFObject_x86_64 (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an COFF/x86-64 relocatable object. | |
| void | link_COFF_x86_64 (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given object buffer, which must be a COFF x86-64 object file. | |
| const char * | getCOFFX86RelocationKindName (Edge::Kind R) |
| Return the string name of the given COFF x86-64 edge kind. | |
| LLVM_ABI Section * | getEHFrameSection (LinkGraph &G) |
| Returns a pointer to the DWARF eh-frame section if the graph contains a non-empty one, otherwise returns null. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromELFObject (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an ELF relocatable object. | |
| void | link_ELF (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| Link the given graph. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromELFObject_aarch32 (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an ELF/arm relocatable object. | |
| void | link_ELF_aarch32 (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given object buffer, which must be an ELF arm/thumb object file. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromELFObject_aarch64 (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an ELF/aarch64 relocatable object. | |
| void | link_ELF_aarch64 (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given object buffer, which must be a ELF aarch64 relocatable object file. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromELFObject_loongarch (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an ELF/loongarch relocatable object. | |
| void | link_ELF_loongarch (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given object buffer, which must be an ELF loongarch object file. | |
| LinkGraphPassFunction | createRelaxationPass_ELF_loongarch () |
| Returns a pass that performs linker relaxation. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromELFObject_ppc64 (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an ELF/ppc64 relocatable object. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromELFObject_ppc64le (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an ELF/ppc64le relocatable object. | |
| void | link_ELF_ppc64 (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given object buffer, which must be a ELF ppc64le object file. | |
| void | link_ELF_ppc64le (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given object buffer, which must be a ELF ppc64le object file. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromELFObject_riscv (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an ELF/riscv relocatable object. | |
| void | link_ELF_riscv (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given object buffer, which must be a ELF riscv object file. | |
| LinkGraphPassFunction | createRelaxationPass_ELF_riscv () |
| Returns a pass that performs linker relaxation. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromELFObject_systemz (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an ELF/systemz relocatable object. | |
| void | link_ELF_systemz (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given object buffer, which must be a ELF systemz relocatable object file. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromELFObject_x86 (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an ELF/x86 relocatable object. | |
| void | link_ELF_x86 (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given object buffer, which must be a ELF x86 relocatable object file. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromELFObject_x86_64 (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an ELF/x86-64 relocatable object. | |
| void | link_ELF_x86_64 (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given object buffer, which must be a ELF x86-64 object file. | |
| LLVM_ABI const char * | getGenericEdgeKindName (Edge::Kind K) |
| Returns the string name of the given generic edge kind, or "unknown" otherwise. | |
| uint64_t | alignToBlock (uint64_t Addr, const Block &B) |
| orc::ExecutorAddr | alignToBlock (orc::ExecutorAddr Addr, const Block &B) |
| LLVM_ABI bool | isCStringBlock (Block &B) |
| LLVM_ABI const char * | getLinkageName (Linkage L) |
| For errors and debugging output. | |
| LLVM_ABI const char * | getScopeName (Scope S) |
| For debugging output. | |
| LLVM_ABI raw_ostream & | operator<< (raw_ostream &OS, const Block &B) |
| LLVM_ABI raw_ostream & | operator<< (raw_ostream &OS, const Symbol &A) |
| LLVM_ABI void | printEdge (raw_ostream &OS, const Block &B, const Edge &E, StringRef EdgeKindName) |
| LLVM_ABI raw_ostream & | operator<< (raw_ostream &OS, const SymbolLookupFlags &LF) |
| template | |
| std::unique_ptr< JITLinkAsyncLookupContinuation > | createLookupContinuation (Continuation Cont) |
| Create a lookup continuation from a function object. | |
| LLVM_ABI Error | markAllSymbolsLive (LinkGraph &G) |
| Marks all symbols in a graph live. | |
| LLVM_ABI Error | makeTargetOutOfRangeError (const LinkGraph &G, const Block &B, const Edge &E) |
| Create an out of range error for the given edge in the given block. | |
| LLVM_ABI Error | makeAlignmentError (llvm::orc::ExecutorAddr Loc, uint64_t Value, int N, const Edge &E) |
| LLVM_ABI AnonymousPointerCreator | getAnonymousPointerCreator (const Triple &TT) |
| Get target-specific AnonymousPointerCreator. | |
| LLVM_ABI PointerJumpStubCreator | getPointerJumpStubCreator (const Triple &TT) |
| Get target-specific PointerJumpStubCreator. | |
| void | visitEdge (LinkGraph &G, Block *B, Edge &E) |
| Base case for edge-visitors where the visitor-list is empty. | |
| template<typename VisitorT, typename... VisitorTs> | |
| void | visitEdge (LinkGraph &G, Block *B, Edge &E, VisitorT &&V, VisitorTs &&...Vs) |
| Applies the first visitor in the list to the given edge. | |
| template<typename... VisitorTs> | |
| void | visitExistingEdges (LinkGraph &G, VisitorTs &&...Vs) |
| For each edge in the given graph, apply a list of visitors to the edge, stopping when the first visitor's visitEdge method returns true. | |
| LLVM_ABI Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromObject (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from the given object buffer. | |
| LLVM_ABI std::unique_ptr< LinkGraph > | absoluteSymbolsLinkGraph (Triple TT, std::shared_ptr< orc::SymbolStringPool > SSP, orc::SymbolMap Symbols) |
| Create a LinkGraph defining the given absolute symbols. | |
| LLVM_ABI void | link (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| Link the given graph. | |
| LLVM_ABI Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromMachOObject (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from a MachO relocatable object. | |
| LLVM_ABI void | link_MachO (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given ObjBuffer, which must be a MachO object file. | |
| Section & | getMachODefaultRWDataSection (LinkGraph &G) |
| Get a pointer to the standard MachO data section (creates an empty section with RW- permissions and standard lifetime if one does not already exist). | |
| Section & | getMachODefaultTextSection (LinkGraph &G) |
| Get a pointer to the standard MachO text section (creates an empty section with R-X permissions and standard lifetime if one does not already exist). | |
| LLVM_ABI Expected< Symbol & > | getOrCreateLocalMachOHeader (LinkGraph &G) |
| Gets or creates a MachO header for the current LinkGraph. | |
| LLVM_ABI Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromMachOObject_arm64 (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from a MachO/arm64 relocatable object. | |
| LLVM_ABI void | link_MachO_arm64 (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given object buffer, which must be a MachO arm64 object file. | |
| LLVM_ABI LinkGraphPassFunction | createEHFrameSplitterPass_MachO_arm64 () |
| Returns a pass suitable for splitting __eh_frame sections in MachO/x86-64 objects. | |
| LLVM_ABI LinkGraphPassFunction | createEHFrameEdgeFixerPass_MachO_arm64 () |
| Returns a pass suitable for fixing missing edges in an __eh_frame section in a MachO/x86-64 object. | |
| LLVM_ABI Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromMachOObject_x86_64 (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from a MachO/x86-64 relocatable object. | |
| LLVM_ABI void | link_MachO_x86_64 (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given LinkGraph. | |
| LLVM_ABI LinkGraphPassFunction | createEHFrameSplitterPass_MachO_x86_64 () |
| Returns a pass suitable for splitting __eh_frame sections in MachO/x86-64 objects. | |
| LLVM_ABI LinkGraphPassFunction | createEHFrameEdgeFixerPass_MachO_x86_64 () |
| Returns a pass suitable for fixing missing edges in an __eh_frame section in a MachO/x86-64 object. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromXCOFFObject (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an XCOFF relocatable object. | |
| void | link_XCOFF (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| Link the given graph. | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromXCOFFObject_ppc64 (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| Create a LinkGraph from an XCOFF/ppc64 relocatable object. | |
| void | link_XCOFF_ppc64 (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| jit-link the given object buffer, which must be a XCOFF ppc64 object file. | |
| static StringRef | getMachineName (uint16_t Machine) |
| static Triple | createTripleWithCOFFFormat (Triple T) |
| Error | splitCompactUnwindBlocks (LinkGraph &G, Section &CompactUnwindSection, size_t RecordSize) |
| Split blocks in an __LD,__compact_unwind section on record boundaries. | |
| template | |
| DefineExternalSectionStartAndEndSymbols< SymbolIdentifierFunction > | createDefineExternalSectionStartAndEndSymbolsPass (SymbolIdentifierFunction &&F) |
| Returns a JITLink pass (as a function class) that uses the given symbol identification function to identify external section start and end symbols (and their associated Section*s) and transform the identified externals into defined symbols pointing to the start of the first block in the section and the end of the last (start and end symbols for empty sections will be transformed into absolute symbols at address 0). | |
| SectionRangeSymbolDesc | identifyELFSectionStartAndEndSymbols (LinkGraph &G, Symbol &Sym) |
| ELF section start/end symbol detection. | |
| SectionRangeSymbolDesc | identifyMachOSectionStartAndEndSymbols (LinkGraph &G, Symbol &Sym) |
| MachO section start/end symbol detection. | |
| static Expected< size_t > | readCFIRecordLength (const Block &B, BinaryStreamReader &R) |
| Expected< uint16_t > | readTargetMachineArch (StringRef Buffer) |
| LLVM_ABI Expected< aarch32::EdgeKind_aarch32 > | getJITLinkEdgeKind (uint32_t ELFType, const aarch32::ArmConfig &ArmCfg) |
| Translate from ELF relocation type to JITLink-internal edge kind. | |
| LLVM_ABI Expected< uint32_t > | getELFRelocationType (Edge::Kind Kind) |
| Translate from JITLink-internal edge kind back to ELF relocation type. | |
| const char * | getELFAArch32EdgeKindName (Edge::Kind R) |
| Get a human-readable name for the given ELF AArch32 edge kind. | |
| template | |
| Error | buildTables_ELF_aarch32 (LinkGraph &G) |
| template<llvm::endianness Endianness> | |
| Expected< std::unique_ptr< LinkGraph > > | createLinkGraphFromELFObject_ppc64 (MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP) |
| template<llvm::endianness Endianness> | |
| void | link_ELF_ppc64 (std::unique_ptr< LinkGraph > G, std::unique_ptr< JITLinkContext > Ctx) |
| static uint32_t | extractBits (uint32_t Num, unsigned Low, unsigned Size) |
| static bool | isAlignmentCorrect (uint64_t Value, int N) |
| static bool | isInRangeForImm (int64_t Value, int N) |
| static bool | shouldRelax (const Section &S) |
| static bool | isRelaxable (const Edge &E) |
| static RelaxAux | initRelaxAux (LinkGraph &G) |
| static void | relaxAlign (orc::ExecutorAddr Loc, const Edge &E, uint32_t &Remove, Edge::Kind &NewEdgeKind) |
| static void | relaxCall (const Block &B, BlockRelaxAux &Aux, const RelaxConfig &Config, orc::ExecutorAddr Loc, const Edge &E, uint32_t &Remove, Edge::Kind &NewEdgeKind) |
| static bool | relaxBlock (LinkGraph &G, Block &Block, BlockRelaxAux &Aux, const RelaxConfig &Config) |
| static bool | relaxOnce (LinkGraph &G, RelaxAux &Aux) |
| static void | finalizeBlockRelax (LinkGraph &G, Block &Block, BlockRelaxAux &Aux) |
| static void | finalizeRelax (LinkGraph &G, RelaxAux &Aux) |
| static Error | relax (LinkGraph &G) |
| void | prune (LinkGraph &G) |
| Removes dead symbols/blocks/addressables. | |
| template | |
| static Expected< Block & > | createLocalHeaderBlock (LinkGraph &G, Section &Sec) |
| Error | buildTables_MachO_arm64 (LinkGraph &G) |
| static Error | applyPACSigningToModInitPointers (LinkGraph &G) |
| static llvm::StringRef | getStorageClassString (XCOFF::StorageClass SC) |
| static std::optional< object::XCOFFSymbolRef > | getXCOFFSymbolContainingSymbolRef (const object::XCOFFObjectFile &Obj, const object::SymbolRef &Sym) |
| static void | printSymbolEntry (raw_ostream &OS, const object::XCOFFObjectFile &Obj, const object::XCOFFSymbolRef &Sym) |
◆ AnonymousPointerCreator
Initial value:
Represents an object file section.
unique_function is a type-erasing functor similar to std::function.
Creates a new pointer block in the given section and returns an Anonymous symbol pointing to it.
The pointer block will have the following default values: alignment: PointerSize alignment-offset: 0 address: highest allowable
Definition at line 2015 of file JITLink.h.
◆ AsyncLookupResult
Initial value:
A map of symbol names to resolved addresses.
Definition at line 1901 of file JITLink.h.
◆ LinkGraphPassFunction
A function for mutating LinkGraphs.
Definition at line 1831 of file JITLink.h.
◆ LinkGraphPassList
◆ PointerJumpStubCreator
Initial value:
Create a jump stub that jumps via the pointer at the given symbol and an anonymous symbol pointing to it.
Return the anonymous symbol.
The stub block will be created by createPointerJumpStubBlock.
Definition at line 2026 of file JITLink.h.
◆ SectionOrdinal
◆ TargetFlagsType
Holds target-specific properties for a symbol.
Definition at line 402 of file JITLink.h.
◆ anonymous enum
◆ Linkage
Describes symbol linkage. This can be used to resolve definition clashes.
| Enumerator |
|---|
| Strong |
| Weak |
Definition at line 396 of file JITLink.h.
◆ Scope
Defines the scope in which this symbol should be visible: Default – Visible in the public interface of the linkage unit.
Hidden – Visible within the linkage unit, but not exported from it. SideEffectsOnly – Like hidden, but symbol can only be looked up once to trigger materialization of the containing graph. Local – Visible only within the LinkGraph.
| Enumerator |
|---|
| Default |
| Hidden |
| SideEffectsOnly |
| Local |
Definition at line 413 of file JITLink.h.
◆ SymbolLookupFlags
Flags for symbol lookup.
FIXME: These basically duplicate orc::SymbolLookupFlags – We should merge the two types once we have an OrcSupport library.
| Enumerator |
|---|
| RequiredSymbol |
| WeaklyReferencedSymbol |
Definition at line 1896 of file JITLink.h.
◆ absoluteSymbolsLinkGraph()
◆ alignToBlock() [1/2]
◆ alignToBlock() [2/2]
◆ applyPACSigningToModInitPointers()
| Error llvm::jitlink::applyPACSigningToModInitPointers ( LinkGraph & G) | static |
|---|
◆ buildTables_ELF_aarch32()
template
| Error llvm::jitlink::buildTables_ELF_aarch32 | ( | LinkGraph & | G | ) |
|---|
◆ buildTables_MachO_arm64()
◆ createDefineExternalSectionStartAndEndSymbolsPass()
template
| DefineExternalSectionStartAndEndSymbols< SymbolIdentifierFunction > llvm::jitlink::createDefineExternalSectionStartAndEndSymbolsPass | ( | SymbolIdentifierFunction && | F | ) |
|---|
◆ createEHFrameEdgeFixerPass_MachO_arm64()
| LinkGraphPassFunction llvm::jitlink::createEHFrameEdgeFixerPass_MachO_arm64 | ( | ) |
|---|
Returns a pass suitable for fixing missing edges in an __eh_frame section in a MachO/x86-64 object.
Definition at line 717 of file MachO_arm64.cpp.
Referenced by link_MachO_arm64().
◆ createEHFrameEdgeFixerPass_MachO_x86_64()
| LinkGraphPassFunction llvm::jitlink::createEHFrameEdgeFixerPass_MachO_x86_64 | ( | ) |
|---|
◆ createEHFrameSplitterPass_MachO_arm64()
| LinkGraphPassFunction llvm::jitlink::createEHFrameSplitterPass_MachO_arm64 | ( | ) |
|---|
◆ createEHFrameSplitterPass_MachO_x86_64()
| LinkGraphPassFunction llvm::jitlink::createEHFrameSplitterPass_MachO_x86_64 | ( | ) |
|---|
◆ createLinkGraphFromCOFFObject()
Create a LinkGraph from an COFF relocatable object.
Note: The graph does not take ownership of the underlying buffer, nor copy its contents. The caller is responsible for ensuring that the object buffer outlives the graph.
Definition at line 43 of file COFF.cpp.
References llvm::COFF::BigObjMagic, llvm::file_magic::coff_object, createLinkGraphFromCOFFObject_x86_64(), llvm::Data, llvm::dbgs(), llvm::MemoryBufferRef::getBuffer(), llvm::MemoryBufferRef::getBufferIdentifier(), getMachineName(), llvm::identify_magic(), llvm::COFF::IMAGE_FILE_MACHINE_AMD64, llvm::COFF::IMAGE_FILE_MACHINE_UNKNOWN, LLVM_DEBUG, llvm::object::coff_bigobj_file_header::Machine, llvm::object::coff_file_header::Machine, Machine, llvm::make_error(), memcmp, llvm::COFF::BigObjHeader::MinBigObjectVersion, llvm::object::coff_file_header::NumberOfSections, llvm::COFF::PEMagic, llvm::object::coff_bigobj_file_header::UUID, and llvm::object::coff_bigobj_file_header::Version.
Referenced by createLinkGraphFromObject().
◆ createLinkGraphFromCOFFObject_x86_64()
◆ createLinkGraphFromELFObject()
Create a LinkGraph from an ELF relocatable object.
Note: The graph does not take ownership of the underlying buffer, nor copy its contents. The caller is responsible for ensuring that the object buffer outlives the graph.
Definition at line 73 of file ELF.cpp.
References createLinkGraphFromELFObject_aarch32(), createLinkGraphFromELFObject_aarch64(), createLinkGraphFromELFObject_loongarch(), createLinkGraphFromELFObject_ppc64(), createLinkGraphFromELFObject_ppc64le(), createLinkGraphFromELFObject_riscv(), createLinkGraphFromELFObject_systemz(), createLinkGraphFromELFObject_x86(), createLinkGraphFromELFObject_x86_64(), llvm::StringRef::data(), llvm::ELF::EI_DATA, llvm::ELF::EI_NIDENT, llvm::ELF::ELFDATA2LSB, llvm::ELF::ElfMagic, llvm::ELF::EM_386, llvm::ELF::EM_AARCH64, llvm::ELF::EM_ARM, llvm::ELF::EM_LOONGARCH, llvm::ELF::EM_PPC64, llvm::ELF::EM_RISCV, llvm::ELF::EM_S390, llvm::ELF::EM_X86_64, llvm::MemoryBufferRef::getBuffer(), llvm::MemoryBufferRef::getBufferIdentifier(), llvm::make_error(), memcmp, readTargetMachineArch(), llvm::StringRef::size(), and llvm::Expected< T >::takeError().
Referenced by createLinkGraphFromObject().
◆ createLinkGraphFromELFObject_aarch32()
Create a LinkGraph from an ELF/arm relocatable object.
Note: The graph does not take ownership of the underlying buffer, nor copy its contents. The caller is responsible for ensuring that the object buffer outlives the graph.
Definition at line 245 of file ELF_aarch32.cpp.
References llvm::Triple::arm, llvm::Triple::armeb, llvm::jitlink::ELFLinkGraphBuilder< ELFT >::buildGraph(), llvm::cast(), llvm::ObjectFile::createELFObjectFile(), llvm::dbgs(), llvm::ARM::getArchAttr(), llvm::jitlink::aarch32::getArmConfigForCPUArch(), llvm::MemoryBufferRef::getBufferIdentifier(), LLVM_DEBUG, llvm::make_error(), llvm::ARM::parseArch(), llvm::Triple::thumb, and llvm::Triple::thumbeb.
Referenced by createLinkGraphFromELFObject().
◆ createLinkGraphFromELFObject_aarch64()
◆ createLinkGraphFromELFObject_loongarch()
◆ createLinkGraphFromELFObject_ppc64() [1/2]
◆ createLinkGraphFromELFObject_ppc64() [2/2]
◆ createLinkGraphFromELFObject_ppc64le()
◆ createLinkGraphFromELFObject_riscv()
◆ createLinkGraphFromELFObject_systemz()
◆ createLinkGraphFromELFObject_x86()
◆ createLinkGraphFromELFObject_x86_64()
◆ createLinkGraphFromMachOObject()
Create a LinkGraph from a MachO relocatable object.
Note: The graph does not take ownership of the underlying buffer, nor copy its contents. The caller is responsible for ensuring that the object buffer outlives the graph.
Definition at line 28 of file MachO.cpp.
References llvm::byteswap(), llvm::MachO::CPU_TYPE_ARM64, llvm::MachO::CPU_TYPE_X86_64, createLinkGraphFromMachOObject_arm64(), createLinkGraphFromMachOObject_x86_64(), llvm::Data, llvm::dbgs(), llvm::format(), llvm::MemoryBufferRef::getBuffer(), llvm::MemoryBufferRef::getBufferIdentifier(), LLVM_DEBUG, llvm::make_error(), llvm::MachO::MH_CIGAM, llvm::MachO::MH_CIGAM_64, llvm::MachO::MH_MAGIC, and llvm::MachO::MH_MAGIC_64.
Referenced by createLinkGraphFromObject().
◆ createLinkGraphFromMachOObject_arm64()
◆ createLinkGraphFromMachOObject_x86_64()
◆ createLinkGraphFromObject()
Create a LinkGraph from the given object buffer.
Note: The graph does not take ownership of the underlying buffer, nor copy its contents. The caller is responsible for ensuring that the object buffer outlives the graph.
Definition at line 509 of file JITLink.cpp.
References llvm::file_magic::coff_object, createLinkGraphFromCOFFObject(), createLinkGraphFromELFObject(), createLinkGraphFromMachOObject(), createLinkGraphFromObject(), createLinkGraphFromXCOFFObject(), llvm::file_magic::elf_relocatable, llvm::MemoryBufferRef::getBuffer(), llvm::identify_magic(), llvm::file_magic::macho_object, llvm::make_error(), and llvm::file_magic::xcoff_object_64.
Referenced by createLinkGraphFromObject(), and llvm::orc::ObjectLinkingLayer::emit().
◆ createLinkGraphFromXCOFFObject()
◆ createLinkGraphFromXCOFFObject_ppc64()
◆ createLocalHeaderBlock()
template
◆ createLookupContinuation()
◆ createRelaxationPass_ELF_loongarch()
| LinkGraphPassFunction llvm::jitlink::createRelaxationPass_ELF_loongarch | ( | ) |
|---|
Returns a pass that performs linker relaxation.
Should be added to PostAllocationPasses.
Definition at line 503 of file ELF_loongarch.cpp.
References relax().
◆ createRelaxationPass_ELF_riscv()
| LinkGraphPassFunction llvm::jitlink::createRelaxationPass_ELF_riscv | ( | ) |
|---|
Returns a pass that performs linker relaxation.
Should be added to PostAllocationPasses.
Definition at line 1034 of file ELF_riscv.cpp.
◆ createTripleWithCOFFFormat()
| Triple llvm::jitlink::createTripleWithCOFFFormat ( Triple T) | static |
|---|
◆ extractBits()
◆ finalizeBlockRelax()
| void llvm::jitlink::finalizeBlockRelax ( LinkGraph & G, Block & Block, BlockRelaxAux & Aux ) | static |
|---|
Definition at line 716 of file ELF_riscv.cpp.
References llvm::jitlink::riscv::AlignRelaxable, assert(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::MutableArrayRef< T >::data(), llvm::jitlink::Block::edges(), llvm::enumerate(), G, llvm::jitlink::Block::getAlreadyMutableContent(), I, llvm::Offset, llvm::jitlink::riscv::R_RISCV_JAL, llvm::jitlink::riscv::R_RISCV_RVC_JUMP, llvm::jitlink::Block::removeEdge(), Size, llvm::support::endian::write16le(), and llvm::support::endian::write32le().
Referenced by finalizeRelax().
◆ finalizeRelax()
| void llvm::jitlink::finalizeRelax ( LinkGraph & G, RelaxAux & Aux ) | static |
|---|
◆ getAnonymousPointerCreator()
Get target-specific AnonymousPointerCreator.
Definition at line 472 of file JITLink.cpp.
References llvm::Triple::aarch64, llvm::jitlink::aarch64::createAnonymousPointer(), llvm::jitlink::loongarch::createAnonymousPointer(), llvm::jitlink::systemz::createAnonymousPointer(), llvm::jitlink::x86::createAnonymousPointer(), llvm::jitlink::x86_64::createAnonymousPointer(), getAnonymousPointerCreator(), llvm::Triple::loongarch32, llvm::Triple::loongarch64, llvm::Triple::systemz, llvm::Triple::x86, and llvm::Triple::x86_64.
Referenced by llvm::orc::JITLinkRedirectableSymbolManager::Create(), and getAnonymousPointerCreator().
◆ getCOFFX86RelocationKindName()
| const char * llvm::jitlink::getCOFFX86RelocationKindName | ( | Edge::Kind | R | ) |
|---|
◆ getEHFrameSection()
◆ getELFAArch32EdgeKindName()
| const char * llvm::jitlink::getELFAArch32EdgeKindName | ( | Edge::Kind | R | ) |
|---|
◆ getELFRelocationType()
Translate from JITLink-internal edge kind back to ELF relocation type.
Definition at line 79 of file ELF_aarch32.cpp.
References llvm::jitlink::aarch32::Arm_Call, llvm::jitlink::aarch32::Arm_Jump24, llvm::jitlink::aarch32::Arm_MovtAbs, llvm::jitlink::aarch32::Arm_MovwAbsNC, llvm::jitlink::aarch32::Data_Delta32, llvm::jitlink::aarch32::Data_Pointer32, llvm::jitlink::aarch32::Data_PRel31, llvm::jitlink::aarch32::Data_RequestGOTAndTransformToDelta32, llvm::formatv(), LLVM_ABI, llvm::make_error(), llvm::jitlink::aarch32::None, llvm::jitlink::aarch32::Thumb_Call, llvm::jitlink::aarch32::Thumb_Jump24, llvm::jitlink::aarch32::Thumb_MovtAbs, llvm::jitlink::aarch32::Thumb_MovtPrel, llvm::jitlink::aarch32::Thumb_MovwAbsNC, and llvm::jitlink::aarch32::Thumb_MovwPrelNC.
◆ getGenericEdgeKindName()
| const char * llvm::jitlink::getGenericEdgeKindName | ( | Edge::Kind | K | ) |
|---|
Returns the string name of the given generic edge kind, or "unknown" otherwise.
Useful for debugging.
Definition at line 63 of file JITLink.cpp.
Referenced by absoluteSymbolsLinkGraph(), llvm::jitlink::SimpleSegmentAlloc::Create(), llvm::orc::JITLinkReentryTrampolines::emit(), llvm::orc::JITLinkRedirectableSymbolManager::emitRedirectableSymbols(), llvm::jitlink::aarch32::getEdgeKindName(), llvm::jitlink::aarch64::getEdgeKindName(), llvm::jitlink::loongarch::getEdgeKindName(), llvm::jitlink::ppc64::getEdgeKindName(), llvm::jitlink::riscv::getEdgeKindName(), llvm::jitlink::systemz::getEdgeKindName(), llvm::jitlink::x86::getEdgeKindName(), llvm::jitlink::x86_64::getEdgeKindName(), and llvm::orc::SectCreateMaterializationUnit::materialize().
◆ getJITLinkEdgeKind()
Translate from ELF relocation type to JITLink-internal edge kind.
Definition at line 36 of file ELF_aarch32.cpp.
References llvm::jitlink::aarch32::Arm_Call, llvm::jitlink::aarch32::Arm_Jump24, llvm::jitlink::aarch32::Arm_MovtAbs, llvm::jitlink::aarch32::Arm_MovwAbsNC, llvm::jitlink::aarch32::Data_Delta32, llvm::jitlink::aarch32::Data_Pointer32, llvm::jitlink::aarch32::Data_PRel31, llvm::jitlink::aarch32::Data_RequestGOTAndTransformToDelta32, llvm::ELF::EM_ARM, llvm::formatv(), llvm::object::getELFRelocationTypeName(), llvm::make_error(), llvm::jitlink::aarch32::None, llvm::jitlink::aarch32::ArmConfig::Target1Rel, llvm::jitlink::aarch32::Thumb_Call, llvm::jitlink::aarch32::Thumb_Jump24, llvm::jitlink::aarch32::Thumb_MovtAbs, llvm::jitlink::aarch32::Thumb_MovtPrel, llvm::jitlink::aarch32::Thumb_MovwAbsNC, and llvm::jitlink::aarch32::Thumb_MovwPrelNC.
◆ getLinkageName()
◆ getMachineName()
◆ getMachODefaultRWDataSection()
◆ getMachODefaultTextSection()
◆ getOrCreateLocalMachOHeader()
Gets or creates a MachO header for the current LinkGraph.
Definition at line 113 of file MachO.cpp.
References llvm::Triple::aarch64, assert(), B(), llvm::iterator_range< IteratorT >::begin(), llvm::jitlink::Section::blocks_size(), createLocalHeaderBlock(), G, llvm::jitlink::Section::getOrdinal(), llvm::make_error(), llvm::orc::Read, llvm::jitlink::Section::setOrdinal(), llvm::jitlink::Section::symbols(), llvm::jitlink::Section::symbols_size(), and llvm::Triple::x86_64.
◆ getPointerJumpStubCreator()
Get target-specific PointerJumpStubCreator.
Definition at line 490 of file JITLink.cpp.
References llvm::Triple::aarch64, llvm::jitlink::aarch64::createAnonymousPointerJumpStub(), llvm::jitlink::loongarch::createAnonymousPointerJumpStub(), llvm::jitlink::systemz::createAnonymousPointerJumpStub(), llvm::jitlink::x86::createAnonymousPointerJumpStub(), llvm::jitlink::x86_64::createAnonymousPointerJumpStub(), getPointerJumpStubCreator(), llvm::Triple::loongarch32, llvm::Triple::loongarch64, llvm::Triple::systemz, llvm::Triple::x86, and llvm::Triple::x86_64.
Referenced by llvm::orc::JITLinkRedirectableSymbolManager::Create(), and getPointerJumpStubCreator().
◆ getScopeName()
◆ getStorageClassString()
Definition at line 44 of file XCOFFLinkGraphBuilder.cpp.
References llvm::XCOFF::C_ALIAS, llvm::XCOFF::C_ARG, llvm::XCOFF::C_AUTO, llvm::XCOFF::C_BCOMM, llvm::XCOFF::C_BINCL, llvm::XCOFF::C_BLOCK, llvm::XCOFF::C_BSTAT, llvm::XCOFF::C_DECL, llvm::XCOFF::C_DWARF, llvm::XCOFF::C_ECOML, llvm::XCOFF::C_ECOMM, llvm::XCOFF::C_EFCN, llvm::XCOFF::C_EINCL, llvm::XCOFF::C_ENTAG, llvm::XCOFF::C_ENTRY, llvm::XCOFF::C_EOS, llvm::XCOFF::C_ESTAT, llvm::XCOFF::C_EXT, llvm::XCOFF::C_EXTDEF, llvm::XCOFF::C_FCN, llvm::XCOFF::C_FIELD, llvm::XCOFF::C_FILE, llvm::XCOFF::C_FUN, llvm::XCOFF::C_GSYM, llvm::XCOFF::C_GTLS, llvm::XCOFF::C_HIDDEN, llvm::XCOFF::C_HIDEXT, llvm::XCOFF::C_INFO, llvm::XCOFF::C_LABEL, llvm::XCOFF::C_LINE, llvm::XCOFF::C_LSYM, llvm::XCOFF::C_MOE, llvm::XCOFF::C_MOS, llvm::XCOFF::C_MOU, llvm::XCOFF::C_NULL, llvm::XCOFF::C_PSYM, llvm::XCOFF::C_REG, llvm::XCOFF::C_REGPARM, llvm::XCOFF::C_RPSYM, llvm::XCOFF::C_RSYM, llvm::XCOFF::C_STAT, llvm::XCOFF::C_STRTAG, llvm::XCOFF::C_STSYM, llvm::XCOFF::C_STTLS, llvm::XCOFF::C_TCSYM, llvm::XCOFF::C_TPDEF, llvm::XCOFF::C_ULABEL, llvm::XCOFF::C_UNTAG, llvm::XCOFF::C_USTATIC, llvm::XCOFF::C_WEAKEXT, and llvm_unreachable.
Referenced by printSymbolEntry().
◆ getXCOFFSymbolContainingSymbolRef()
◆ identifyELFSectionStartAndEndSymbols()
◆ identifyMachOSectionStartAndEndSymbols()
◆ initRelaxAux()
| RelaxAux llvm::jitlink::initRelaxAux ( LinkGraph & G) | static |
|---|
Definition at line 559 of file ELF_riscv.cpp.
References A(), assert(), B(), G, llvm::jitlink::Symbol::getBlock(), llvm::jitlink::Symbol::getOffset(), llvm::jitlink::Symbol::getSize(), llvm::is_contained(), llvm::jitlink::Symbol::isDefined(), isRelaxable(), shouldRelax(), and llvm::sort().
Referenced by relax().
◆ isAlignmentCorrect()
| bool llvm::jitlink::isAlignmentCorrect ( uint64_t Value, int N ) | inlinestatic |
|---|
◆ isCStringBlock()
| bool llvm::jitlink::isCStringBlock | ( | Block & | B | ) |
|---|
◆ isInRangeForImm()
| bool llvm::jitlink::isInRangeForImm ( int64_t Value, int N ) | inlinestatic |
|---|
◆ isRelaxable()
◆ link()
Link the given graph.
Definition at line 544 of file JITLink.cpp.
References llvm::Triple::COFF, llvm::Triple::ELF, G, link(), link_COFF(), link_ELF(), link_MachO(), link_XCOFF(), llvm::Triple::MachO, llvm::make_error(), and llvm::Triple::XCOFF.
Referenced by link().
◆ link_COFF()
◆ link_COFF_x86_64()
◆ link_ELF()
Link the given graph.
Uses conservative defaults for GOT and stub handling based on the target platform.
Definition at line 115 of file ELF.cpp.
References llvm::Triple::aarch64, llvm::Triple::arm, llvm::Triple::armeb, G, link_ELF_aarch32(), link_ELF_aarch64(), link_ELF_loongarch(), link_ELF_ppc64(), link_ELF_ppc64le(), link_ELF_riscv(), link_ELF_systemz(), link_ELF_x86(), link_ELF_x86_64(), llvm::Triple::loongarch32, llvm::Triple::loongarch64, llvm::make_error(), llvm::Triple::ppc64, llvm::Triple::ppc64le, llvm::Triple::riscv32, llvm::Triple::riscv64, llvm::Triple::systemz, llvm::Triple::thumb, llvm::Triple::thumbeb, llvm::Triple::x86, and llvm::Triple::x86_64.
Referenced by link().
◆ link_ELF_aarch32()
◆ link_ELF_aarch64()
jit-link the given object buffer, which must be a ELF aarch64 relocatable object file.
Definition at line 700 of file ELF_aarch64.cpp.
References createDefineExternalSectionStartAndEndSymbolsPass(), llvm::jitlink::aarch64::Delta32, llvm::jitlink::aarch64::Delta64, G, identifyELFSectionStartAndEndSymbols(), markAllSymbolsLive(), llvm::jitlink::aarch64::NegDelta32, llvm::jitlink::aarch64::Pointer32, llvm::jitlink::aarch64::Pointer64, llvm::jitlink::PassConfiguration::PostAllocationPasses, llvm::jitlink::PassConfiguration::PostPrunePasses, and llvm::jitlink::PassConfiguration::PrePrunePasses.
Referenced by link_ELF().
◆ link_ELF_loongarch()
jit-link the given object buffer, which must be an ELF loongarch object file.
Definition at line 472 of file ELF_loongarch.cpp.
References llvm::jitlink::loongarch::Delta32, llvm::jitlink::loongarch::Delta64, G, markAllSymbolsLive(), llvm::jitlink::loongarch::NegDelta32, llvm::jitlink::loongarch::Pointer32, llvm::jitlink::loongarch::Pointer64, llvm::jitlink::PassConfiguration::PostAllocationPasses, llvm::jitlink::PassConfiguration::PostPrunePasses, llvm::jitlink::PassConfiguration::PrePrunePasses, and relax().
Referenced by link_ELF().
◆ link_ELF_ppc64() [1/2]
◆ link_ELF_ppc64() [2/2]
◆ link_ELF_ppc64le()
◆ link_ELF_riscv()
◆ link_ELF_systemz()
jit-link the given object buffer, which must be a ELF systemz relocatable object file.
Definition at line 386 of file ELF_systemz.cpp.
Referenced by link_ELF().
◆ link_ELF_x86()
jit-link the given object buffer, which must be a ELF x86 relocatable object file.
Definition at line 268 of file ELF_x86.cpp.
Referenced by link_ELF().
◆ link_ELF_x86_64()
jit-link the given object buffer, which must be a ELF x86-64 object file.
Definition at line 359 of file ELF_x86_64.cpp.
References createDefineExternalSectionStartAndEndSymbolsPass(), llvm::jitlink::x86_64::Delta32, llvm::jitlink::x86_64::Delta64, G, identifyELFSectionStartAndEndSymbols(), llvm::jitlink::JITLinker< ELFJITLinker_x86_64 >::link(), markAllSymbolsLive(), llvm::jitlink::x86_64::NegDelta32, llvm::jitlink::x86_64::optimizeGOTAndStubAccesses(), llvm::jitlink::x86_64::Pointer32, llvm::jitlink::x86_64::Pointer64, llvm::jitlink::x86_64::PointerSize, llvm::jitlink::PassConfiguration::PostAllocationPasses, llvm::jitlink::PassConfiguration::PostPrunePasses, llvm::jitlink::PassConfiguration::PreFixupPasses, and llvm::jitlink::PassConfiguration::PrePrunePasses.
Referenced by link_ELF().
◆ link_MachO()
◆ link_MachO_arm64()
jit-link the given object buffer, which must be a MachO arm64 object file.
If PrePrunePasses is empty then a default mark-live pass will be inserted that will mark all exported atoms live. If PrePrunePasses is not empty, the caller is responsible for including a pass to mark atoms as live.
If PostPrunePasses is empty then a default GOT-and-stubs insertion pass will be inserted. If PostPrunePasses is not empty then the caller is responsible for including a pass to insert GOT and stub edges.
Definition at line 651 of file MachO_arm64.cpp.
References applyPACSigningToModInitPointers(), buildTables_MachO_arm64(), createDefineExternalSectionStartAndEndSymbolsPass(), createEHFrameEdgeFixerPass_MachO_arm64(), createEHFrameSplitterPass_MachO_arm64(), llvm::jitlink::aarch64::createEmptyPointerSigningFunction(), G, identifyMachOSectionStartAndEndSymbols(), llvm::jitlink::JITLinker< MachOJITLinker_arm64 >::link(), llvm::jitlink::aarch64::lowerPointer64AuthEdgesToSigningFunction(), llvm::orc::MachOCompactUnwindSectionName, llvm::orc::MachOEHFrameSectionName, llvm::orc::MachOUnwindInfoSectionName, markAllSymbolsLive(), llvm::jitlink::PassConfiguration::PostAllocationPasses, llvm::jitlink::PassConfiguration::PostPrunePasses, llvm::jitlink::PassConfiguration::PreFixupPasses, and llvm::jitlink::PassConfiguration::PrePrunePasses.
Referenced by link_MachO().
◆ link_MachO_x86_64()
jit-link the given LinkGraph.
If PrePrunePasses is empty then a default mark-live pass will be inserted that will mark all exported atoms live. If PrePrunePasses is not empty, the caller is responsible for including a pass to mark atoms as live.
If PostPrunePasses is empty then a default GOT-and-stubs insertion pass will be inserted. If PostPrunePasses is not empty then the caller is responsible for including a pass to insert GOT and stub edges.
Definition at line 530 of file MachO_x86_64.cpp.
References createDefineExternalSectionStartAndEndSymbolsPass(), createEHFrameEdgeFixerPass_MachO_x86_64(), createEHFrameSplitterPass_MachO_x86_64(), G, identifyMachOSectionStartAndEndSymbols(), llvm::jitlink::JITLinker< MachOJITLinker_x86_64 >::link(), llvm::orc::MachOCompactUnwindSectionName, llvm::orc::MachOEHFrameSectionName, llvm::orc::MachOUnwindInfoSectionName, markAllSymbolsLive(), llvm::jitlink::x86_64::optimizeGOTAndStubAccesses(), llvm::jitlink::PassConfiguration::PostAllocationPasses, llvm::jitlink::PassConfiguration::PostPrunePasses, llvm::jitlink::PassConfiguration::PreFixupPasses, and llvm::jitlink::PassConfiguration::PrePrunePasses.
Referenced by link_MachO().
◆ link_XCOFF()
◆ link_XCOFF_ppc64()
◆ makeAlignmentError()
◆ makeTargetOutOfRangeError()
Create an out of range error for the given edge in the given block.
Definition at line 421 of file JITLink.cpp.
References B(), llvm::formatv(), G, llvm::jitlink::Symbol::getLinkage(), llvm::jitlink::Section::getName(), llvm::jitlink::Symbol::getName(), llvm::jitlink::Symbol::getScope(), llvm::make_error(), makeTargetOutOfRangeError(), and llvm::jitlink::Section::symbols().
Referenced by llvm::jitlink::aarch64::applyFixup(), llvm::jitlink::loongarch::applyFixup(), llvm::jitlink::ppc64::applyFixup(), llvm::jitlink::systemz::applyFixup(), llvm::jitlink::x86::applyFixup(), llvm::jitlink::x86_64::applyFixup(), llvm::jitlink::aarch32::applyFixupArm(), llvm::jitlink::aarch32::applyFixupData(), llvm::jitlink::aarch32::applyFixupThumb(), and makeTargetOutOfRangeError().
◆ markAllSymbolsLive()
Marks all symbols in a graph live.
This can be used as a default, conservative mark-live implementation.
Definition at line 415 of file JITLink.cpp.
References G, markAllSymbolsLive(), and llvm::Error::success().
Referenced by llvm::jitlink::ELFJITLinker_aarch32::JITLinker< ELFJITLinker_aarch32 >, llvm::jitlink::ELFJITLinker_systemz::JITLinker< ELFJITLinker_systemz >, llvm::jitlink::ELFJITLinker_x86::JITLinker< ELFJITLinker_x86 >, link_COFF_x86_64(), link_ELF_aarch64(), link_ELF_loongarch(), link_ELF_ppc64(), link_ELF_riscv(), link_ELF_x86_64(), link_MachO_arm64(), link_MachO_x86_64(), and markAllSymbolsLive().
◆ operator<<() [1/3]
◆ operator<<() [2/3]
Definition at line 123 of file JITLink.cpp.
References llvm::formatv(), llvm::jitlink::Symbol::getAddress(), llvm::jitlink::Symbol::getLinkage(), getLinkageName(), llvm::jitlink::Symbol::getName(), llvm::jitlink::Symbol::getOffset(), llvm::jitlink::Symbol::getScope(), getScopeName(), llvm::jitlink::Symbol::getSize(), llvm::jitlink::Symbol::hasName(), llvm::jitlink::Symbol::isDefined(), and llvm::jitlink::Symbol::isLive().
◆ operator<<() [3/3]
◆ printEdge()
◆ printSymbolEntry()
Definition at line 210 of file XCOFFLinkGraphBuilder.cpp.
References llvm::cantFail(), llvm::format_hex(), llvm::object::SymbolRef::getAddress(), llvm::XCOFF::getMappingClassString(), llvm::object::XCOFFSymbolRef::getName(), llvm::object::BasicSymbolRef::getRawDataRefImpl(), llvm::object::XCOFFSymbolRef::getSectionNumber(), llvm::object::XCOFFSymbolRef::getSize(), llvm::object::XCOFFSymbolRef::getStorageClass(), getStorageClassString(), llvm::object::XCOFFSymbolRef::getXCOFFCsectAuxRef(), getXCOFFSymbolContainingSymbolRef(), llvm::object::XCOFFSymbolRef::isCsectSymbol(), llvm::left_justify(), llvm::object::DataRefImpl::p, and llvm::StringRef::str().
◆ prune()
◆ readCFIRecordLength()
◆ readTargetMachineArch()
Definition at line 34 of file ELF.cpp.
References llvm::object::ELFFile< ELF32BE >::create(), llvm::object::ELFFile< ELF32LE >::create(), llvm::object::ELFFile< ELF64BE >::create(), llvm::object::ELFFile< ELF64LE >::create(), llvm::Data, llvm::StringRef::data(), llvm::ELF::EI_CLASS, llvm::ELF::EI_DATA, llvm::ELF::ELFCLASS32, llvm::ELF::ELFCLASS64, llvm::ELF::ELFDATA2LSB, llvm::ELF::ELFDATA2MSB, and llvm::ELF::EM_NONE.
Referenced by createLinkGraphFromELFObject().
◆ relax()
◆ relaxAlign()
◆ relaxBlock()
| bool llvm::jitlink::relaxBlock ( LinkGraph & G, Block & Block, BlockRelaxAux & Aux, const RelaxConfig & Config ) | static |
|---|
Definition at line 655 of file ELF_riscv.cpp.
References A(), llvm::jitlink::riscv::AlignRelaxable, llvm::ArrayRef(), llvm::jitlink::riscv::CallRelaxable, Changed, llvm::SmallVectorImpl< T >::clear(), llvm::enumerate(), G, llvm::jitlink::Addressable::getAddress(), llvm::getOffset(), llvm::jitlink::Symbol::getOffset(), I, llvm_unreachable, llvm::Offset, relaxAlign(), relaxCall(), llvm::ArrayRef< T >::size(), and llvm::ArrayRef< T >::slice().
Referenced by relaxOnce().
◆ relaxCall()
◆ relaxOnce()
◆ shouldRelax()
◆ splitCompactUnwindBlocks()
| Error llvm::jitlink::splitCompactUnwindBlocks | ( | LinkGraph & | G, |
|---|---|---|---|
| Section & | CompactUnwindSection, | ||
| size_t | RecordSize ) |
Split blocks in an __LD,__compact_unwind section on record boundaries.
When this function returns edges within each record are guaranteed to be sorted by offset.
Definition at line 22 of file CompactUnwindSupport.cpp.
References B(), llvm::iterator_range< IteratorT >::begin(), llvm::jitlink::Section::blocks(), llvm::dbgs(), E(), llvm::iterator_range< IteratorT >::end(), llvm::formatv(), G, llvm::jitlink::Section::getName(), LLVM_DEBUG, llvm::make_error(), llvm::map_range(), llvm::seq(), and llvm::Error::success().
Referenced by llvm::jitlink::CompactUnwindManager< CURecTraits >::prepareForPrune().
◆ visitEdge() [1/2]
◆ visitEdge() [2/2]
template<typename VisitorT, typename... VisitorTs>
| void llvm::jitlink::visitEdge | ( | LinkGraph & | G, |
|---|---|---|---|
| Block * | B, | ||
| Edge & | E, | ||
| VisitorT && | V, | ||
| VisitorTs &&... | Vs ) |
Applies the first visitor in the list to the given edge.
If the visitor's visitEdge method returns true then we return immediately, otherwise we apply the next visitor.
Definition at line 2039 of file JITLink.h.
References B(), E(), G, and visitEdge().
◆ visitExistingEdges()
template<typename... VisitorTs>
| void llvm::jitlink::visitExistingEdges | ( | LinkGraph & | G, |
|---|---|---|---|
| VisitorTs &&... | Vs ) |
For each edge in the given graph, apply a list of visitors to the edge, stopping when the first visitor's visitEdge method returns true.
Only visits edges that were in the graph at call time: if any visitor adds new edges those will not be visited. Visitors are not allowed to remove edges (though they can change their kind, target, and addend).
Definition at line 2052 of file JITLink.h.
References B(), E(), G, and visitEdge().
Referenced by buildTables_ELF_aarch32(), and buildTables_MachO_arm64().