From f7dfd67770bc8dda32997241fa0e18063db28407 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Sat, 15 Jun 2024 15:14:22 -0400 Subject: [PATCH] xo-jit: + lookup_symbol method on dynamic library --- include/xo/jit/Jit.hpp | 2 ++ src/jit/Jit.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/xo/jit/Jit.hpp b/include/xo/jit/Jit.hpp index 43a289d4..cf3f3a0f 100644 --- a/include/xo/jit/Jit.hpp +++ b/include/xo/jit/Jit.hpp @@ -95,6 +95,8 @@ namespace xo { llvm::Value * codegen(ref::brw expr); + llvm::orc::ExecutorAddr lookup_symbol(const std::string & x); + virtual void display(std::ostream & os) const; virtual std::string display_string() const; diff --git a/src/jit/Jit.cpp b/src/jit/Jit.cpp index 20d3a7cd..eef5c197 100644 --- a/src/jit/Jit.cpp +++ b/src/jit/Jit.cpp @@ -442,6 +442,20 @@ namespace xo { return nullptr; } /*codegen*/ + llvm::orc::ExecutorAddr + Jit::lookup_symbol(const std::string & sym) + { + static llvm::ExitOnError llvm_exit_on_err; + + /* llvm_sym: ExecutorSymbolDef */ + auto llvm_sym = llvm_exit_on_err(kal_jit_->lookup(sym)); + + /* llvm_addr: ExecutorAddr */ + auto llvm_addr = llvm_sym.getAddress(); + + return llvm_addr; + } /*lookup_symbol*/ + void Jit::display(std::ostream & os) const { os << "";