From a599959a61e2a9ae313b851b2b63c0a2b97d3cb5 Mon Sep 17 00:00:00 2001 From: Johannes Stoelp Date: Tue, 19 Dec 2023 18:53:31 +0100 Subject: llvm-orc-jit: migrate to llvm17 --- content/2022-07-07-llvm-orc-jit/jit.h | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) (limited to 'content/2022-07-07-llvm-orc-jit/jit.h') diff --git a/content/2022-07-07-llvm-orc-jit/jit.h b/content/2022-07-07-llvm-orc-jit/jit.h index 10d6d4a..9ac7b0a 100644 --- a/content/2022-07-07-llvm-orc-jit/jit.h +++ b/content/2022-07-07-llvm-orc-jit/jit.h @@ -9,21 +9,25 @@ #include #include #include +#include #include #include #include namespace jit { - +using llvm::cantFail; using llvm::DataLayout; using llvm::Expected; using llvm::JITEvaluatedSymbol; +using llvm::JITSymbolFlags; using llvm::SectionMemoryManager; using llvm::StringRef; using llvm::orc::ConcurrentIRCompiler; // using llvm::orc::DynamicLibrarySearchGenerator; using llvm::orc::ExecutionSession; +using llvm::orc::ExecutorAddr; +using llvm::orc::ExecutorSymbolDef; using llvm::orc::IRCompileLayer; using llvm::orc::JITDylib; using llvm::orc::JITTargetMachineBuilder; @@ -45,23 +49,25 @@ private: RTDyldObjectLinkingLayer ObjectLayer; IRCompileLayer CompileLayer; - JITDylib &JD; + JITDylib& JD; public: Jit(std::unique_ptr ES, JITTargetMachineBuilder JTMB, - DataLayout DL) - : ES(std::move(ES)), DL(std::move(DL)), Mangle(*this->ES, this->DL), - ObjectLayer(*this->ES, - []() { return std::make_unique(); }), - CompileLayer(*this->ES, ObjectLayer, - std::make_unique(std::move(JTMB))), - JD(this->ES->createBareJITDylib("main")) { + DataLayout DL) : + ES(std::move(ES)), + DL(std::move(DL)), Mangle(*this->ES, this->DL), + ObjectLayer(*this->ES, + []() { return std::make_unique(); }), + CompileLayer(*this->ES, ObjectLayer, + std::make_unique(std::move(JTMB))), + JD(this->ES->createBareJITDylib("main")) { // https://www.llvm.org/docs/ORCv2.html#how-to-add-process-and-library-symbols-to-jitdylibs // JD.addGenerator( // cantFail(DynamicLibrarySearchGenerator::GetForCurrentProcess( // DL.getGlobalPrefix()))); - (void)JD.define(llvm::orc::absoluteSymbols( - {{Mangle("libc_puts"), llvm::JITEvaluatedSymbol::fromPointer(&puts)}})); + cantFail(JD.define(llvm::orc::absoluteSymbols( + {{Mangle("libc_puts"), + {ExecutorAddr::fromPtr(&puts), JITSymbolFlags::Exported}}}))); } ~Jit() { @@ -81,7 +87,6 @@ public: return std::make_unique(std::move(ES), std::move(JTMB), std::move(DL)); } - // Error addModule(ThreadSafeModule TSM) { Expected addModule(ThreadSafeModule TSM) { auto RT = JD.createResourceTracker(); if (auto E = CompileLayer.add(RT, std::move(TSM))) { @@ -90,11 +95,11 @@ public: return RT; } - Expected lookup(StringRef Name) { + Expected lookup(StringRef Name) { return ES->lookup({&JD}, Mangle(Name.str())); } }; -} // namespace jit +} // namespace jit #endif -- cgit v1.2.3