[LLVMdev] Dynamically loading native code generated from LLVM IR

Armin Steinhoff as at steinhoff-automation.com
Sun Oct 14 01:28:13 PDT 2012


Amara,

yes, it's in the svn repository !

Thanks a lot !

Regards

--Armin



Amara Emerson wrote:
> It's definitely there. It was added in r165246 recently so you
> probably have an older version.
>
> Amara
>
> On 13 October 2012 23:02, Armin Steinhoff <as at steinhoff-automation.com> wrote:
>> Daniel,
>>
>> I didn't find the MCJIT directory under unitests/ExecutionEngine ... there
>> is only a directory called JIT.
>> You mean this directory ?
>>
>> Many thanks
>>
>> --Armin
>>
>>
>>
>>
>> Malea, Daniel wrote:
>>> Take a look at the MCJIT unit tests under unittests/ExecutionEngine/MCJIT
>>>
>>> The MCJITTestBase class does the majority of the interactions with the
>>> LLVM API you're referring to.
>>>
>>> Good luck,
>>> Dan
>>>
>>> On 2012-10-13, at 4:57 AM, "Armin Steinhoff" <as at steinhoff-automation.com>
>>> wrote:
>>>
>>>> Kaylor,
>>>>
>>>> do you have some good documented example code which shows the usage of
>>>> the MCJIT ?
>>>> This would help a lot ... the sematic of lots of API calls are not
>>>> intuitively understandable.
>>>>
>>>> Best Regards
>>>>
>>>> --Armin
>>>>
>>>>
>>>>
>>>> Kaylor, Andrew wrote:
>>>>> I'm not sure I understand your use case, but MCJIT (as opposed to the
>>>>> legacy JIT) does almost exactly what you're asking for.  It generates an
>>>>> in-memory object file image (using addPassesToEmitMC) and then loads and
>>>>> links it for execution.
>>>>>
>>>>> If there's some particular detail you don't like in the way this is
>>>>> happening, you might be able to generate a file as you have and then use the
>>>>> RuntimeDyld interface to load it.  The llvm-rtdyld tool does something like
>>>>> this.
>>>>>
>>>>> -Andy
>>>>>
>>>>> -----Original Message-----
>>>>> From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
>>>>> On Behalf Of Baris Aktemur
>>>>> Sent: Thursday, October 11, 2012 11:58 PM
>>>>> To: llvmdev at cs.uiuc.edu
>>>>> Subject: [LLVMdev] Dynamically loading native code generated from LLVM
>>>>> IR
>>>>>
>>>>> Hi,
>>>>>
>>>>> I'm building LLVM IR. I'd like to compile this IR to native code (I
>>>>> don't want JIT) and immediately load it to execute. So far, I've the
>>>>> following:
>>>>>
>>>>> 1) I can emit the IR to native assembly/object file doing the same thing
>>>>> llc does (using TargetMachine::addPassesToEmitFile).
>>>>> 2) I can dynamically load a precompiled .so file (using
>>>>> llvm::sys::DynamicLibrary::getPermanentLibrary), get a function pointer from
>>>>> that file, and execute.
>>>>>
>>>>> I can't dynamically load the .o file I produce in step 1 because it's a
>>>>> static library. If I could produce a .so file in step 1, my problem would be
>>>>> solved. llc has a "-relocation-model=pic" option, but the file produced with
>>>>> that did not dynamically load. I got lost in clang's options when trying to
>>>>> find where the "-shared" and "-fPIC" options are used.
>>>>>
>>>>> So, my question is: Which API should I look at to emit dynamically
>>>>> loadable native code from LLVM IR?
>>>>>
>>>>> I would also like to emit code to an in-memory stream instead of a file
>>>>> because everything happens at runtime, but that's a secondary concern.
>>>>>
>>>>> Thanks in advance.
>>>>>
>>>>> -Baris Aktemur
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> LLVM Developers mailing list
>>>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>>>
>>>>> _______________________________________________
>>>>> LLVM Developers mailing list
>>>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>>>
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list