LLVM: llvm::jitlink::ppc64 Namespace Reference (original) (raw)

Enumerations
enum EdgeKind_ppc64 : Edge::Kind { Pointer64 = Edge::FirstRelocation , Pointer32, Pointer16, Pointer16DS, Pointer16HA, Pointer16HI, Pointer16HIGH, Pointer16HIGHA, Pointer16HIGHER, Pointer16HIGHERA, Pointer16HIGHEST, Pointer16HIGHESTA, Pointer16LO, Pointer16LODS, Pointer14, Delta64, Delta34, Delta32, NegDelta32, Delta16, Delta16HA, Delta16HI, Delta16LO, TOC, TOCDelta16, TOCDelta16DS, TOCDelta16HA, TOCDelta16HI, TOCDelta16LO, TOCDelta16LODS, RequestGOTAndTransformToDelta34, CallBranchDelta, CallBranchDeltaRestoreTOC, RequestCall, RequestCallNoTOC, RequestTLSDescInGOTAndTransformToTOCDelta16HA, RequestTLSDescInGOTAndTransformToTOCDelta16LO, RequestTLSDescInGOTAndTransformToDelta34 }
Represents ppc64 fixups and other ppc64-specific edge kinds. More...
enum PLTCallStubKind { LongBranch, LongBranchSaveR2, LongBranchNoTOC }
Functions
template<llvm::endianness Endianness>
PLTCallStubInfo pickStub (PLTCallStubKind StubKind)
Symbol & createAnonymousPointer (LinkGraph &G, Section &PointerSection, Symbol *InitialTarget=nullptr, uint64_t InitialAddend=0)
template<llvm::endianness Endianness>
Symbol & createAnonymousPointerJumpStub (LinkGraph &G, Section &StubSection, Symbol &PointerSymbol, PLTCallStubKind StubKind)
LLVM_ABI const char * getEdgeKindName (Edge::Kind K)
Returns a string name for the given ppc64 edge.
static uint16_t ha (uint64_t x)
static uint64_t lo (uint64_t x)
static uint16_t hi (uint64_t x)
static uint64_t high (uint64_t x)
static uint64_t higha (uint64_t x)
static uint64_t higher (uint64_t x)
static uint64_t highera (uint64_t x)
static uint16_t highest (uint64_t x)
static uint16_t highesta (uint64_t x)
template<llvm::endianness Endianness>
static uint64_t readPrefixedInstruction (const char *Loc)
template<llvm::endianness Endianness>
static void writePrefixedInstruction (char *Loc, uint64_t Inst)
template<llvm::endianness Endianness>
Error relocateHalf16 (char *FixupPtr, int64_t Value, Edge::Kind K)
template<llvm::endianness Endianness>
Error applyFixup (LinkGraph &G, Block &B, const Edge &E, const Symbol *TOCSymbol)
Apply fixup expression for edge to block content.
Variables
LLVM_ABI const char NullPointerContent [8]
LLVM_ABI const char PointerJumpStubContent_big [20]
LLVM_ABI const char PointerJumpStubContent_little [20]
LLVM_ABI const char PointerJumpStubNoTOCContent_big [32]
LLVM_ABI const char PointerJumpStubNoTOCContent_little [32]

EdgeKind_ppc64

enum llvm::jitlink::ppc64::EdgeKind_ppc64 : Edge::Kind

Represents ppc64 fixups and other ppc64-specific edge kinds.

Enumerator
Pointer64
Pointer32
Pointer16
Pointer16DS
Pointer16HA
Pointer16HI
Pointer16HIGH
Pointer16HIGHA
Pointer16HIGHER
Pointer16HIGHERA
Pointer16HIGHEST
Pointer16HIGHESTA
Pointer16LO
Pointer16LODS
Pointer14
Delta64
Delta34
Delta32
NegDelta32
Delta16
Delta16HA
Delta16HI
Delta16LO
TOC
TOCDelta16
TOCDelta16DS
TOCDelta16HA
TOCDelta16HI
TOCDelta16LO
TOCDelta16LODS
RequestGOTAndTransformToDelta34
CallBranchDelta
CallBranchDeltaRestoreTOC
RequestCall
RequestCallNoTOC
RequestTLSDescInGOTAndTransformToTOCDelta16HA
RequestTLSDescInGOTAndTransformToTOCDelta16LO
RequestTLSDescInGOTAndTransformToDelta34

Definition at line 24 of file ppc64.h.

PLTCallStubKind

Enumerator
LongBranch
LongBranchSaveR2
LongBranchNoTOC

Definition at line 68 of file ppc64.h.

applyFixup()

Apply fixup expression for edge to block content.

Definition at line 358 of file ppc64.h.

References A(), assert(), B(), CallBranchDelta, CallBranchDeltaRestoreTOC, llvm::dbgs(), DEBUG_WITH_TYPE, Delta16, Delta16HA, Delta16HI, Delta16LO, Delta32, Delta34, Delta64, E(), llvm::formatv(), G, llvm::jitlink::Symbol::getAddress(), getEdgeKindName(), llvm::orc::ExecutorAddr::getValue(), llvm::isInt(), LLVM_UNLIKELY, llvm::make_error(), llvm::jitlink::makeTargetOutOfRangeError(), NegDelta32, P, Pointer14, Pointer16, Pointer16DS, Pointer16HA, Pointer16HI, Pointer16HIGH, Pointer16HIGHA, Pointer16HIGHER, Pointer16HIGHERA, Pointer16HIGHEST, Pointer16HIGHESTA, Pointer16LO, Pointer16LODS, Pointer64, llvm::support::endian::read32(), readPrefixedInstruction(), relocateHalf16(), llvm::Error::success(), TOC, TOCDelta16, TOCDelta16DS, TOCDelta16HA, TOCDelta16HI, TOCDelta16LO, TOCDelta16LODS, llvm::support::endian::write32(), llvm::support::endian::write64(), and writePrefixedInstruction().

Referenced by llvm::jitlink::XCOFFJITLinker_ppc64::applyFixup().

createAnonymousPointer()

createAnonymousPointerJumpStub()

getEdgeKindName()

const char * llvm::jitlink::ppc64::getEdgeKindName ( Edge::Kind K )

Returns a string name for the given ppc64 edge.

For debugging purposes only.

Definition at line 61 of file ppc64.cpp.

References CallBranchDelta, CallBranchDeltaRestoreTOC, Delta16, Delta16HA, Delta16HI, Delta16LO, Delta32, Delta34, Delta64, llvm::jitlink::getGenericEdgeKindName(), NegDelta32, Pointer14, Pointer16, Pointer16DS, Pointer16HA, Pointer16HI, Pointer16HIGH, Pointer16HIGHA, Pointer16HIGHER, Pointer16HIGHERA, Pointer16HIGHEST, Pointer16HIGHESTA, Pointer16LO, Pointer16LODS, Pointer32, Pointer64, RequestCall, RequestCallNoTOC, RequestGOTAndTransformToDelta34, RequestTLSDescInGOTAndTransformToDelta34, RequestTLSDescInGOTAndTransformToTOCDelta16HA, RequestTLSDescInGOTAndTransformToTOCDelta16LO, TOC, TOCDelta16, TOCDelta16DS, TOCDelta16HA, TOCDelta16HI, TOCDelta16LO, and TOCDelta16LODS.

Referenced by applyFixup(), llvm::jitlink::XCOFFJITLinker_ppc64::applyFixup(), llvm::jitlink::createLinkGraphFromXCOFFObject_ppc64(), and relocateHalf16().

ha()

hi()

high()

higha()

higher()

highera()

highest()

highesta()

lo()

pickStub()

Definition at line 95 of file ppc64.h.

References Delta16HA, Delta16LO, llvm::little, llvm_unreachable, LongBranch, LongBranchNoTOC, LongBranchSaveR2, llvm::Offset, PointerJumpStubContent_big, PointerJumpStubContent_little, PointerJumpStubNoTOCContent_big, PointerJumpStubNoTOCContent_little, llvm::ArrayRef< T >::slice(), TOCDelta16HA, and TOCDelta16LO.

Referenced by createAnonymousPointerJumpStub().

readPrefixedInstruction()

uint64_t llvm::jitlink::ppc64::readPrefixedInstruction ( const char * Loc) inlinestatic

relocateHalf16()

Error llvm::jitlink::ppc64::relocateHalf16 ( char * FixupPtr, int64_t Value, Edge::Kind K ) inline

Definition at line 300 of file ppc64.h.

References Delta16, Delta16HA, Delta16HI, Delta16LO, getEdgeKindName(), ha(), hi(), high(), higha(), higher(), highera(), highest(), highesta(), lo(), llvm::make_error(), Pointer16, Pointer16DS, Pointer16HA, Pointer16HI, Pointer16HIGH, Pointer16HIGHA, Pointer16HIGHER, Pointer16HIGHERA, Pointer16HIGHEST, Pointer16HIGHESTA, Pointer16LO, Pointer16LODS, llvm::Error::success(), TOCDelta16, TOCDelta16DS, TOCDelta16HA, TOCDelta16HI, TOCDelta16LO, TOCDelta16LODS, and llvm::support::endian::write16().

Referenced by applyFixup().

writePrefixedInstruction()

void llvm::jitlink::ppc64::writePrefixedInstruction ( char * Loc, uint64_t Inst ) inlinestatic

NullPointerContent

const char llvm::jitlink::ppc64::NullPointerContent

PointerJumpStubContent_big

const char llvm::jitlink::ppc64::PointerJumpStubContent_big

Initial value:

= {

(char)0xf8, 0x41, 0x00, 0x18,

0x3d, (char)0x82, 0x00, 0x00,

(char)0xe9, (char)0x8c, 0x00, 0x00,

0x7d, (char)0x89, 0x03, (char)0xa6,

0x4e, (char)0x80, 0x04, 0x20,

}

Definition at line 30 of file ppc64.cpp.

Referenced by pickStub().

PointerJumpStubContent_little

const char llvm::jitlink::ppc64::PointerJumpStubContent_little

Initial value:

= {

0x18, 0x00, 0x41, (char)0xf8,

0x00, 0x00, (char)0x82, 0x3d,

0x00, 0x00, (char)0x8c, (char)0xe9,

(char)0xa6, 0x03, (char)0x89, 0x7d,

0x20, 0x04, (char)0x80, 0x4e,

}

Definition at line 22 of file ppc64.cpp.

Referenced by pickStub().

PointerJumpStubNoTOCContent_big

const char llvm::jitlink::ppc64::PointerJumpStubNoTOCContent_big

Initial value:

= {

0x7d, (char)0x88, 0x02, (char)0xa6,

0x42, (char)0x9f, 0x00, 0x05,

0x7d, 0x68, 0x02, (char)0xa6,

0x7d, (char)0x88, 0x03, (char)0xa6,

0x3d, (char)0x8b, 0x00, 0x00,

(char)0xe9, (char)0x8c, 0x00, 0x00,

0x7d, (char)0x89, 0x03, (char)0xa6,

0x4e, (char)0x80, 0x04, 0x20,

}

Definition at line 50 of file ppc64.cpp.

Referenced by pickStub().

PointerJumpStubNoTOCContent_little

const char llvm::jitlink::ppc64::PointerJumpStubNoTOCContent_little

Initial value:

= {

(char)0xa6, 0x02, (char)0x88, 0x7d,

0x05, (char)0x00, (char)0x9f, 0x42,

(char)0xa6, 0x02, 0x68, 0x7d,

(char)0xa6, 0x03, (char)0x88, 0x7d,

0x00, 0x00, (char)0x8b, 0x3d,

0x00, 0x00, (char)0x8c, (char)0xe9,

(char)0xa6, 0x03, (char)0x89, 0x7d,

0x20, 0x04, (char)0x80, 0x4e,

}

Definition at line 39 of file ppc64.cpp.

Referenced by pickStub().