class EHFrameEdgeFixer
Declaration
class EHFrameEdgeFixer { /* full declaration omitted */ };
Description
A LinkGraph pass that adds missing FDE-to-CIE, FDE-to-PC and FDE-to-LSDA edges.
Declared at: llvm/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.h:26
Member Variables
- private llvm::StringRef EHFrameSectionName
- private unsigned int PointerSize
- private Edge::Kind Pointer32
- private Edge::Kind Pointer64
- private Edge::Kind Delta32
- private Edge::Kind Delta64
- private Edge::Kind NegDelta32
Method Overview
- public EHFrameEdgeFixer(llvm::StringRef EHFrameSectionName, unsigned int PointerSize, Edge::Kind Pointer32, Edge::Kind Pointer64, Edge::Kind Delta32, Edge::Kind Delta64, Edge::Kind NegDelta32)
- private Expected<llvm::jitlink::Symbol *> getOrCreateEncodedPointerEdge(llvm::jitlink::EHFrameEdgeFixer::ParseContext & PC, const llvm::jitlink::EHFrameEdgeFixer::BlockEdgeMap & BlockEdges, uint8_t PointerEncoding, llvm::BinaryStreamReader & RecordReader, llvm::jitlink::Block & BlockToFix, size_t PointerFieldOffset, const char * FieldName)
- private Expected<llvm::jitlink::Symbol &> getOrCreateSymbol(llvm::jitlink::EHFrameEdgeFixer::ParseContext & PC, orc::ExecutorAddr Addr)
- private Expected<llvm::jitlink::EHFrameEdgeFixer::AugmentationInfo> parseAugmentationString(llvm::BinaryStreamReader & RecordReader)
- private llvm::Error processBlock(llvm::jitlink::EHFrameEdgeFixer::ParseContext & PC, llvm::jitlink::Block & B)
- private llvm::Error processCIE(llvm::jitlink::EHFrameEdgeFixer::ParseContext & PC, llvm::jitlink::Block & B, size_t RecordOffset, size_t RecordLength, size_t CIEDeltaFieldOffset, const llvm::jitlink::EHFrameEdgeFixer::BlockEdgeMap & BlockEdges)
- private llvm::Error processFDE(llvm::jitlink::EHFrameEdgeFixer::ParseContext & PC, llvm::jitlink::Block & B, size_t RecordOffset, size_t RecordLength, size_t CIEDeltaFieldOffset, uint32_t CIEDelta, const llvm::jitlink::EHFrameEdgeFixer::BlockEdgeMap & BlockEdges)
- private Expected<uint8_t> readPointerEncoding(llvm::BinaryStreamReader & RecordReader, llvm::jitlink::Block & InBlock, const char * FieldName)
- private llvm::Error skipEncodedPointer(uint8_t PointerEncoding, llvm::BinaryStreamReader & RecordReader)
Methods
¶EHFrameEdgeFixer(
llvm::StringRef EHFrameSectionName,
unsigned int PointerSize,
Edge::Kind Pointer32,
Edge::Kind Pointer64,
Edge::Kind Delta32,
Edge::Kind Delta64,
Edge::Kind NegDelta32)
EHFrameEdgeFixer(
llvm::StringRef EHFrameSectionName,
unsigned int PointerSize,
Edge::Kind Pointer32,
Edge::Kind Pointer64,
Edge::Kind Delta32,
Edge::Kind Delta64,
Edge::Kind NegDelta32)
Description
Create an eh-frame edge fixer. If a given edge-kind is not supported on the target architecture then Edge::Invalid should be used.
Declared at: llvm/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.h:31
Parameters
- llvm::StringRef EHFrameSectionName
- unsigned int PointerSize
- Edge::Kind Pointer32
- Edge::Kind Pointer64
- Edge::Kind Delta32
- Edge::Kind Delta64
- Edge::Kind NegDelta32
¶Expected<llvm::jitlink::Symbol*>
getOrCreateEncodedPointerEdge(
llvm::jitlink::EHFrameEdgeFixer::ParseContext&
PC,
const llvm::jitlink::EHFrameEdgeFixer::
BlockEdgeMap& BlockEdges,
uint8_t PointerEncoding,
llvm::BinaryStreamReader& RecordReader,
llvm::jitlink::Block& BlockToFix,
size_t PointerFieldOffset,
const char* FieldName)
Expected<llvm::jitlink::Symbol*>
getOrCreateEncodedPointerEdge(
llvm::jitlink::EHFrameEdgeFixer::ParseContext&
PC,
const llvm::jitlink::EHFrameEdgeFixer::
BlockEdgeMap& BlockEdges,
uint8_t PointerEncoding,
llvm::BinaryStreamReader& RecordReader,
llvm::jitlink::Block& BlockToFix,
size_t PointerFieldOffset,
const char* FieldName)
Declared at: llvm/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.h:98
Parameters
- llvm::jitlink::EHFrameEdgeFixer::ParseContext& PC
- const llvm::jitlink::EHFrameEdgeFixer:: BlockEdgeMap& BlockEdges
- uint8_t PointerEncoding
- llvm::BinaryStreamReader& RecordReader
- llvm::jitlink::Block& BlockToFix
- size_t PointerFieldOffset
- const char* FieldName
¶Expected<llvm::jitlink::Symbol&>
getOrCreateSymbol(
llvm::jitlink::EHFrameEdgeFixer::ParseContext&
PC,
orc::ExecutorAddr Addr)
Expected<llvm::jitlink::Symbol&>
getOrCreateSymbol(
llvm::jitlink::EHFrameEdgeFixer::ParseContext&
PC,
orc::ExecutorAddr Addr)
Declared at: llvm/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.h:103
Parameters
¶Expected<llvm::jitlink::EHFrameEdgeFixer::
AugmentationInfo>
parseAugmentationString(
llvm::BinaryStreamReader& RecordReader)
Expected<llvm::jitlink::EHFrameEdgeFixer::
AugmentationInfo>
parseAugmentationString(
llvm::BinaryStreamReader& RecordReader)
Declared at: llvm/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.h:92
Parameters
- llvm::BinaryStreamReader& RecordReader
¶llvm::Error processBlock(
llvm::jitlink::EHFrameEdgeFixer::ParseContext&
PC,
llvm::jitlink::Block& B)
llvm::Error processBlock(
llvm::jitlink::EHFrameEdgeFixer::ParseContext&
PC,
llvm::jitlink::Block& B)
Declared at: llvm/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.h:83
Parameters
¶llvm::Error processCIE(
llvm::jitlink::EHFrameEdgeFixer::ParseContext&
PC,
llvm::jitlink::Block& B,
size_t RecordOffset,
size_t RecordLength,
size_t CIEDeltaFieldOffset,
const llvm::jitlink::EHFrameEdgeFixer::
BlockEdgeMap& BlockEdges)
llvm::Error processCIE(
llvm::jitlink::EHFrameEdgeFixer::ParseContext&
PC,
llvm::jitlink::Block& B,
size_t RecordOffset,
size_t RecordLength,
size_t CIEDeltaFieldOffset,
const llvm::jitlink::EHFrameEdgeFixer::
BlockEdgeMap& BlockEdges)
Declared at: llvm/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.h:84
Parameters
- llvm::jitlink::EHFrameEdgeFixer::ParseContext& PC
- llvm::jitlink::Block& B
- size_t RecordOffset
- size_t RecordLength
- size_t CIEDeltaFieldOffset
- const llvm::jitlink::EHFrameEdgeFixer:: BlockEdgeMap& BlockEdges
¶llvm::Error processFDE(
llvm::jitlink::EHFrameEdgeFixer::ParseContext&
PC,
llvm::jitlink::Block& B,
size_t RecordOffset,
size_t RecordLength,
size_t CIEDeltaFieldOffset,
uint32_t CIEDelta,
const llvm::jitlink::EHFrameEdgeFixer::
BlockEdgeMap& BlockEdges)
llvm::Error processFDE(
llvm::jitlink::EHFrameEdgeFixer::ParseContext&
PC,
llvm::jitlink::Block& B,
size_t RecordOffset,
size_t RecordLength,
size_t CIEDeltaFieldOffset,
uint32_t CIEDelta,
const llvm::jitlink::EHFrameEdgeFixer::
BlockEdgeMap& BlockEdges)
Declared at: llvm/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.h:87
Parameters
- llvm::jitlink::EHFrameEdgeFixer::ParseContext& PC
- llvm::jitlink::Block& B
- size_t RecordOffset
- size_t RecordLength
- size_t CIEDeltaFieldOffset
- uint32_t CIEDelta
- const llvm::jitlink::EHFrameEdgeFixer:: BlockEdgeMap& BlockEdges
¶Expected<uint8_t> readPointerEncoding(
llvm::BinaryStreamReader& RecordReader,
llvm::jitlink::Block& InBlock,
const char* FieldName)
Expected<uint8_t> readPointerEncoding(
llvm::BinaryStreamReader& RecordReader,
llvm::jitlink::Block& InBlock,
const char* FieldName)
Declared at: llvm/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.h:94
Parameters
- llvm::BinaryStreamReader& RecordReader
- llvm::jitlink::Block& InBlock
- const char* FieldName
¶llvm::Error skipEncodedPointer(
uint8_t PointerEncoding,
llvm::BinaryStreamReader& RecordReader)
llvm::Error skipEncodedPointer(
uint8_t PointerEncoding,
llvm::BinaryStreamReader& RecordReader)
Declared at: llvm/lib/ExecutionEngine/JITLink/EHFrameSupportImpl.h:96
Parameters
- uint8_t PointerEncoding
- llvm::BinaryStreamReader& RecordReader