13#ifndef LLVM_EXECUTIONENGINE_JITLINK_EHFRAMESUPPORT_H
14#define LLVM_EXECUTIONENGINE_JITLINK_EHFRAMESUPPORT_H
26class EHFrameCFIBlockInspector {
43 bool isFDE()
const {
return CIEEdge !=
nullptr; }
46 bool isCIE()
const {
return CIEEdge ==
nullptr; }
79 Edge *CIEEdge =
nullptr;
80 Edge *PCBeginEdge =
nullptr;
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
An Addressable with content and edges.
Inspect an eh-frame CFI record.
Edge * getCIEEdge() const
If this is an FDE record, returns the Edge pointing to the CIE.
Edge * getPCBeginEdge() const
If this is an FDE record, returns the Edge pointing at the PC-begin symbol.
Edge * getLSDAEdge() const
If this is an FDE record, returns the Edge pointing at the LSDA, if any.
bool isCIE() const
Returns true if this frame is a CIE, false for an FDE.
Edge * getPersonalityEdge() const
If this is a CIE record, returns the Edge pointing at the personality function, if any.
bool isFDE() const
Returns true if this frame is an FDE, false for a CIE.
static LLVM_ABI EHFrameCFIBlockInspector FromEdgeScan(Block &B)
Identify CFI record type and edges based on number and order of edges in the given block only.
Represents fixups and constraints in the LinkGraph.
LLVM_ABI Section * getEHFrameSection(LinkGraph &G)
Returns a pointer to the DWARF eh-frame section if the graph contains a non-empty one,...
This is an optimization pass for GlobalISel generic memory operations.