[llvm-dev] Eager compilation and relocatable dynamic linkable code-generation

Stefan Gränitz via llvm-dev llvm-dev at lists.llvm.org
Thu Jul 18 09:59:13 PDT 2019


Hi Rajesh

On 1.: ORC defers compilation of the module and on first request,
compiles the entire module. This will trigger recursive lookups for
external symbols. Eager compilation means that the modules which provide
these symbols will now be compiled too, while lazy compilation should
instead insert stubs that will trigger compilation once they are reached
by execution.

On 2.: I am maybe not perfectly up-to-date, but what I would expect to
happen is this. First, your remote process allocates memory for the
executable code and sends the base address to the compiler process. Then
the compiler process compiles and links with this base address and sends
the (position-dependent) code back. You may also manage to go with
position-independent code, but then your remote needs a dynamic linker.
Not sure if there's an example for it.

Best
Stefan

On 18/07/2019 03:08, Rajesh S R via llvm-dev wrote:
> Hi all,
> I am following the LLVM JIT tutorial API based
> on: https://llvm.org/docs/tutorial/BuildingAJIT1.html
>
> I have 2 independent questions:
> 1. The tutorial mentions that "*will defer compilation of the module
> until any of its definitions is looked up*". 
>
> Does that mean to force eager compilation, i have to keep track of all
> functions added to the Module and do a lookup? I want the module to be
> compiled fully after I do add module to compile_layer. What is the
> best way to achieve this? Or should I not use ORC API at all?
>
> 2. I want to compile on one process and want to ship the machine code
> to another process and load it for execution (with no lazy compilation
> where an uncompiled function will trigger compilation to remote
> process which as I understand is what the tutorial talks about). This
> means we need to generate position-independent code and may need
> dynamic linking to resolve any unknown function call based on symbol
> name. What is the best way to achieve this? Is there some code pointers?
>
> Thanks!
>
> Rajesh S R
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-- 
https://flowcrypt.com/pub/stefan.graenitz@gmail.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190718/fd8ac037/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190718/fd8ac037/attachment.sig>


More information about the llvm-dev mailing list