diff options
Diffstat (limited to 'llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.h')
-rw-r--r-- | llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.h | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.h b/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.h index e1123cd110487..91b1d5a223877 100644 --- a/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.h +++ b/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.h @@ -30,74 +30,6 @@ public: Expected<std::unique_ptr<LinkGraph>> buildGraph(); protected: - class MachOEHFrameBinaryParser : public EHFrameBinaryParser { - public: - MachOEHFrameBinaryParser(MachOLinkGraphBuilder &Builder, - JITTargetAddress EHFrameAddress, - StringRef EHFrameContent, Section &EHFrameSection, - uint64_t CIEAlignment, uint64_t FDEAlignment, - Edge::Kind FDEToCIERelocKind, - Edge::Kind FDEToTargetRelocKind) - : EHFrameBinaryParser(EHFrameAddress, EHFrameContent, - Builder.getGraph().getPointerSize(), - Builder.getGraph().getEndianness()), - Builder(Builder), EHFrameSection(EHFrameSection), - CIEAlignment(CIEAlignment), FDEAlignment(FDEAlignment), - FDEToCIERelocKind(FDEToCIERelocKind), - FDEToTargetRelocKind(FDEToTargetRelocKind) {} - - Symbol *getSymbolAtAddress(JITTargetAddress Address) override { - if (auto *Sym = Builder.getSymbolByAddress(Address)) - if (Sym->getAddress() == Address) - return Sym; - return nullptr; - } - - Symbol &createCIERecord(JITTargetAddress RecordAddr, - StringRef RecordContent) override { - auto &G = Builder.getGraph(); - auto &B = G.createContentBlock(EHFrameSection, RecordContent, RecordAddr, - CIEAlignment, 0); - auto &CIESymbol = - G.addAnonymousSymbol(B, 0, RecordContent.size(), false, false); - Builder.setCanonicalSymbol(CIESymbol); - return CIESymbol; - } - - Expected<Symbol &> createFDERecord(JITTargetAddress RecordAddr, - StringRef RecordContent, Symbol &CIE, - size_t CIEOffset, Symbol &Func, - size_t FuncOffset, Symbol *LSDA, - size_t LSDAOffset) override { - auto &G = Builder.getGraph(); - auto &B = G.createContentBlock(EHFrameSection, RecordContent, RecordAddr, - FDEAlignment, 0); - - // Add edges to CIE, Func, and (conditionally) LSDA. - B.addEdge(FDEToCIERelocKind, CIEOffset, CIE, 0); - B.addEdge(FDEToTargetRelocKind, FuncOffset, Func, 0); - - if (LSDA) - B.addEdge(FDEToTargetRelocKind, LSDAOffset, *LSDA, 0); - - auto &FDESymbol = - G.addAnonymousSymbol(B, 0, RecordContent.size(), false, false); - - // Add a keep-alive relocation from the function to the FDE to ensure it - // is not dead stripped. - Func.getBlock().addEdge(Edge::KeepAlive, 0, FDESymbol, 0); - - return FDESymbol; - } - - private: - MachOLinkGraphBuilder &Builder; - Section &EHFrameSection; - uint64_t CIEAlignment; - uint64_t FDEAlignment; - Edge::Kind FDEToCIERelocKind; - Edge::Kind FDEToTargetRelocKind; - }; struct NormalizedSymbol { friend class MachOLinkGraphBuilder; |