enum EdgeKind_x86_64

Description

Represents x86-64 fixups and other x86-64-specific edge kinds.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/x86_64.h:26

Enumerators

NameValueComment
Pointer642A plain 64-bit pointer value relocation.Fixup expression: Fixup < - Target + Addend : uint64
Pointer323A plain 32-bit pointer value relocation.Fixup expression: Fixup < - Target + Addend : uint32Errors: - The target must reside in the low 32-bits of the address space, otherwise an out-of-range error will be returned.
Pointer32Signed4A signed 32-bit pointer value relocationFixup expression: Fixup < - Target + Addend : int32Errors: - The target must reside in the signed 32-bits([-2**31, 2**32 - 1]) of the address space, otherwise an out-of-range error will be returned.
Delta645A 64-bit delta.Delta from the fixup to the target.Fixup expression: Fixup < - Target - Fixup + Addend : int64
Delta326A 32-bit delta.Delta from the fixup to the target.Fixup expression: Fixup < - Target - Fixup + Addend : int64Errors: - The result of the fixup expression must fit into an int32, otherwise an out-of-range error will be returned.
NegDelta647A 64-bit negative delta.Delta from target back to the fixup.Fixup expression: Fixup < - Fixup - Target + Addend : int64
NegDelta328A 32-bit negative delta.Delta from the target back to the fixup.Fixup expression: Fixup < - Fixup - Target + Addend : int32Errors: - The result of the fixup expression must fit into an int32, otherwise an out-of-range error will be returned.
Delta64FromGOT9A 64-bit GOT delta.Delta from the global offset table to the targetFixup expression: Fixup < - Target - GOTSymbol + Addend : int64Errors: - *ASSERTION* Failure to a null pointer GOTSymbol, which the GOT section symbol was not been defined.
BranchPCRel3210A 32-bit PC-relative branch.Represents a PC-relative call or branch to a target. This can be used to identify, record, and/or patch call sites.The fixup expression for this kind includes an implicit offset to account for the PC (unlike the Delta edges) so that a Branch32PCRel with a target T and addend zero is a call/branch to the start (offset zero) of T.Fixup expression: Fixup < - Target - (Fixup + 4) + Addend : int32Errors: - The result of the fixup expression must fit into an int32, otherwise an out-of-range error will be returned.
PCRel3211A 32-bit PC-relative relocation.Represents a data/control flow instruction using PC-relative addressing to a target.The fixup expression for this kind includes an implicit offset to account for the PC (unlike the Delta edges) so that a PCRel32 with a target T and addend zero is a call/branch to the start (offset zero) of T.Fixup expression: Fixup < - Target - (Fixup + 4) + Addend : int32Errors: - The result of the fixup expression must fit into an int32, otherwise an out-of-range error will be returned.
BranchPCRel32ToPtrJumpStub12A 32-bit PC-relative branch to a pointer jump stub.The target of this relocation should be a pointer jump stub of the form:This edge kind has the same fixup expression as BranchPCRel32, but further identifies the call/branch as being to a pointer jump stub. For edges of this kind the jump stub should not be bypassed (use BranchPCRel32ToPtrJumpStubBypassable for that), but the pointer location target may be recorded to allow manipulation at runtime.Fixup expression: Fixup < - Target - Fixup + Addend - 4 : int32Errors: - The result of the fixup expression must fit into an int32, otherwise an out-of-range error will be returned.
BranchPCRel32ToPtrJumpStubBypassable13A relaxable version of BranchPCRel32ToPtrJumpStub.The edge kind has the same fixup expression as BranchPCRel32ToPtrJumpStub, but identifies the call/branch as being to a pointer jump stub that may be bypassed with a direct jump to the ultimate target if the ultimate target is within range of the fixup location.Fixup expression: Fixup < - Target - Fixup + Addend - 4: int32Errors: - The result of the fixup expression must fit into an int32, otherwise an out-of-range error will be returned.
RequestGOTAndTransformToDelta3214A GOT entry getter/constructor, transformed to Delta32 pointing at the GOT entry for the original target.Indicates that this edge should be transformed into a Delta32 targeting the GOT entry for the edge's current target, maintaining the same addend. A GOT entry for the target should be created if one does not already exist.Edges of this kind are usually handled by a GOT builder pass inserted by default.Fixup expression: NONEErrors: - *ASSERTION* Failure to handle edges of this kind prior to the fixup phase will result in an assert/unreachable during the fixup phase.
RequestGOTAndTransformToDelta6415A GOT entry getter/constructor, transformed to Delta64 pointing at the GOT entry for the original target.Indicates that this edge should be transformed into a Delta64 targeting the GOT entry for the edge's current target, maintaining the same addend. A GOT entry for the target should be created if one does not already exist.Edges of this kind are usually handled by a GOT builder pass inserted by default.Fixup expression: NONEErrors: - *ASSERTION* Failure to handle edges of this kind prior to the fixup phase will result in an assert/unreachable during the fixup phase.
RequestGOTAndTransformToDelta64FromGOT16A GOT entry offset within GOT getter/constructor, transformed to Delta64FromGOT pointing at the GOT entry for the original targetIndicates that this edge should be transformed into a Delta64FromGOT targeting the GOT entry for the edge's current target, maintaining the same addend. A GOT entry for the target should be created if one does not already exist.Edges of this kind are usually handled by a GOT builder pass inserted by defaultFixup expression: NONEErrors: - *ASSERTION* Failure to handle edges of this kind prior to the fixup phase will result in an assert/unreachable during the fixup phase
PCRel32GOTLoadRelaxable17A PC-relative load of a GOT entry, relaxable if GOT entry target is in-range of the fixupTODO: Explain the optimizationFixup expression Fixup < - Target - (Fixup + 4) + Addend : int32Errors: - The result of the fixup expression must fit into an int32, otherwise an out-of-range error will be returned.
PCRel32GOTLoadREXRelaxable18A PC-relative REX load of a GOT entry, relaxable if GOT entry target is in-range of the fixup.If the GOT entry target is in-range of the fixup then the load from the GOT may be replaced with a direct memory address calculation.Fixup expression: Fixup < - Target - (Fixup + 4) + Addend : int32Errors: - The result of the fixup expression must fit into an int32, otherwise an out-of-range error will be returned.
RequestGOTAndTransformToPCRel32GOTLoadREXRelaxable19A GOT entry getter/constructor, transformed to PCRel32ToGOTLoadREXRelaxable pointing at the GOT entry for the original target.Indicates that this edge should be lowered to a PC32ToGOTLoadREXRelaxable targeting the GOT entry for the edge's current target, maintaining the same addend. A GOT entry for the target should be created if one does not already exist.Edges of this kind are usually lowered by a GOT builder pass inserted by default.Fixup expression: NONEErrors: - *ASSERTION* Failure to handle edges of this kind prior to the fixup phase will result in an assert/unreachable during the fixup phase.
RequestGOTAndTransformToPCRel32GOTLoadRelaxable20A GOT entry getter/constructor, transformed to PCRel32ToGOTLoadRelaxable pointing at the GOT entry for the original target.Indicates that this edge should be lowered to a PC32ToGOTLoadRelaxable targeting the GOT entry for the edge's current target, maintaining the same addend. A GOT entry for the target should be created if one does not already exist.Edges of this kind are usually lowered by a GOT builder pass inserted by default.Fixup expression: NONEErrors: - *ASSERTION* Failure to handle edges of this kind prior to the fixup phase will result in an assert/unreachable during the fixup phase.
PCRel32TLVPLoadREXRelaxable21A PC-relative REX load of a Thread Local Variable Pointer (TLVP) entry, relaxable if the TLVP entry target is in-range of the fixup.If the TLVP entry target is in-range of the fixup then the load from the TLVP may be replaced with a direct memory address calculation.The target of this edge must be a thread local variable entry of the form .quad <tlv getter thunk> .quad <tlv key> .quad <tlv initializer>Fixup expression: Fixup < - Target - (Fixup + 4) + Addend : int32Errors: - The result of the fixup expression must fit into an int32, otherwise an out-of-range error will be returned. - The target must be either external, or a TLV entry of the required form, otherwise a malformed TLV entry error will be returned.
RequestTLSDescInGOTAndTransformToDelta3222TODO: Explain the generic edge kind
RequestTLVPAndTransformToPCRel32TLVPLoadREXRelaxable23A TLVP entry getter/constructor, transformed to Delta32ToTLVPLoadREXRelaxable.Indicates that this edge should be transformed into a Delta32ToTLVPLoadREXRelaxable targeting the TLVP entry for the edge's current target. A TLVP entry for the target should be created if one does not already exist.Fixup expression: NONEErrors: - *ASSERTION* Failure to handle edges of this kind prior to the fixup phase will result in an assert/unreachable during the fixup phase.
FirstPlatformRelocation24A TLVP entry getter/constructor, transformed to Delta32ToTLVPLoadREXRelaxable.Indicates that this edge should be transformed into a Delta32ToTLVPLoadREXRelaxable targeting the TLVP entry for the edge's current target. A TLVP entry for the target should be created if one does not already exist.Fixup expression: NONEErrors: - *ASSERTION* Failure to handle edges of this kind prior to the fixup phase will result in an assert/unreachable during the fixup phase.