<div dir="ltr">Hi Daniel, Frank,<div><br></div><div>MCJIT is an ExecutionEngine implementation. You never get a direct pointer to it, instead you create one using an EngineBuilder and access it via the ExecutionEngine interface.</div><div><br></div><div>The LLJIT class (llvm/include/llvm/ExecutionEngine/Orc/LLJIT.h) provides an alternative (non ExecutionEngine based) interface for basic JITing. You can find a usage example in llvm/examples/HowToUseLLJIT.</div><div><br></div><div>Finally, as Frank suggested, you can build your own JIT class out of ORC components by following the BuildingAJIT tutorial series. This series is (still) under development, but the initial chapters should be enough to build something with MCJIT's capabilities.</div><div><br></div><div>Cheers,</div><div>Lang.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, May 13, 2019 at 2:07 AM Frank Tetzel via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">> I am developing a small project using LLVM. The objective is to<br>
> provide dynamic loading via JIT compilation of C++ code contained in<br>
> a (TS) module. For this reason, I would like to return an explicitly<br>
> raw void pointer (resembling libdl's `void *dlsym(void *, char const<br>
> *);` as closely as possible) to the compiled result. The MCJIT class<br>
> offers the most convenient API for me, but I'm not sure it is<br>
> intended for public use as it is not in the include path in a LLVM<br>
> installation, even when built from source (I am building from the git<br>
> repo); neither is OrcMCJITReplacement. What is the way that you would<br>
> suggest to use LLVM's JIT capabilities? It would already help a lot<br>
> if I knew which function/class names to look up.<br>
<br>
<br>
I guess, the best place to start is the tutorial[1]. This one is for<br>
the ORC JIT API. I am not the right person to ask what the prefered API<br>
for new projects is as I'm still quite new to all of this as well.<br>
<br>
To get a function pointer, you have to resolve the symbol in the<br>
generated code.<br>
<br>
<br>
[1] <a href="https://llvm.org/docs/tutorial/BuildingAJIT1.html" rel="noreferrer" target="_blank">https://llvm.org/docs/tutorial/BuildingAJIT1.html</a><br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>