diff options
Diffstat (limited to 'llvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/llvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp b/llvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp index d83787ffd59..9dbfb6556e3 100644 --- a/llvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp +++ b/llvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp @@ -26,19 +26,7 @@ namespace { class MachOLinkGraphBuilder_x86_64 : public MachOLinkGraphBuilder { public: MachOLinkGraphBuilder_x86_64(const object::MachOObjectFile &Obj) - : MachOLinkGraphBuilder(Obj) { - addCustomSectionParser( - "__eh_frame", [this](NormalizedSection &EHFrameSection) { - if (!EHFrameSection.Data) - return make_error<JITLinkError>( - "__eh_frame section is marked zero-fill"); - return MachOEHFrameBinaryParser( - *this, EHFrameSection.Address, - StringRef(EHFrameSection.Data, EHFrameSection.Size), - *EHFrameSection.GraphSection, 8, 4, NegDelta32, Delta64) - .addToGraph(); - }); - } + : MachOLinkGraphBuilder(Obj) {} private: static Expected<MachOX86RelocationKind> @@ -566,6 +554,11 @@ void jitLink_MachO_x86_64(std::unique_ptr<JITLinkContext> Ctx) { Triple TT("x86_64-apple-macosx"); if (Ctx->shouldAddDefaultTargetPasses(TT)) { + // Add eh-frame passses. + Config.PrePrunePasses.push_back(EHFrameSplitter("__eh_frame")); + Config.PrePrunePasses.push_back( + EHFrameEdgeFixer("__eh_frame", NegDelta32, Delta64, Delta64)); + // Add a mark-live pass. if (auto MarkLive = Ctx->getMarkLivePass(TT)) Config.PrePrunePasses.push_back(std::move(MarkLive)); |