diff --git a/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp b/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp index 18f287a91d589..342651dd81965 100644 --- a/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp +++ b/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp @@ -9,6 +9,7 @@ #include "llvm/ExecutionEngine/Orc/LLJIT.h" #include "llvm/ExecutionEngine/JITLink/EHFrameSupport.h" #include "llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h" +#include "llvm/ExecutionEngine/Orc/EPCEHFrameRegistrar.h" #include "llvm/ExecutionEngine/Orc/ExecutorProcessControl.h" #include "llvm/ExecutionEngine/Orc/MachOPlatform.h" #include "llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h" @@ -723,8 +724,12 @@ Error LLJITBuilderState::prepareForConstruction() { [](ExecutionSession &ES, const Triple &) -> Expected> { auto ObjLinkingLayer = std::make_unique(ES); - ObjLinkingLayer->addPlugin(std::make_unique( - ES, std::make_unique())); + if (auto EHFrameRegistrar = EPCEHFrameRegistrar::Create(ES)) + ObjLinkingLayer->addPlugin( + std::make_unique( + ES, std::move(*EHFrameRegistrar))); + else + return EHFrameRegistrar.takeError(); return std::move(ObjLinkingLayer); }; }