[LLVMdev] A question about calling external function in JIT

Jeff Fifield fifield at colorado.edu
Mon Oct 10 09:13:51 PDT 2011


On Sun, Oct 9, 2011 at 6:51 PM, Wei-Fan <wfchiang at cs.utah.edu> wrote:
> Hello Jeff,
>
> Many thanks for your help!!
> I successfully load a function in a dynamic library by using
> sys::DynamicLibrary routines.

great.

> But I still have another question:
> How if 'foo' is defined in a static library ??
> Is it possible not compiling the static libraries by llvm and natively call
> functions in them?

I'm not sure I understand the question.  I understand that you want to
call 'foo' from JIT, and that you have figured out how to do this if
'foo' is in a dynamic library.  You now want to use a static library
instead?  I'm not sure if that's possible, unless by static library
you mean a bitcode file.  In that case, you can link the bitcode
library to your code before JIT (e.g. using llvm-link or llvm-ld), or
you can essentially do the same thing manually in your code.  This was
discussed in a previous thread (http://bit.ly/oYbbsD).

-Jeff

>
> Thanks a lots.
>
> Regards,
> Wei-Fan
>
> 於 10/6/2011 1:45 PM, Jeff Fifield 提到:
>>
>> Hi Wei-Fan,
>>
>> It is possible to reference an external function from JITed code.  You
>> can use the llvm::sys::DynamicLibrary routines to load your dynamic
>> library.  After loading the library, the JIT engine should be able to
>> locate 'foo'.
>>
>> Jeff
>>
>> On Thu, Oct 6, 2011 at 1:28 PM, Wei-Fan<wfchiang at cs.utah.edu>  wrote:
>>>
>>> Hello Sir,
>>>
>>> My name is Wei-Fan Chiang.
>>> I am now a graduated student of U. of Utah.
>>> I have a question about call external function in JIT.
>>>
>>> Suppose I have a simple program:
>>>
>>> int main (int argc,  char *argv[]) {
>>>     int i = 2, j = 3, k;
>>>     k = foo(2, 3);
>>>     return 0;
>>> }
>>>
>>> "foo" is an external function (non-native function define in dynamic
>>> library) made by us.
>>> In JIT, we just need to natively execute foo and pass the result back.
>>> That means, we want to treat "foo(2, 3)" as a constant while doing JIT.
>>>
>>> Is it possible?
>>>
>>> Thanks.
>>>
>>> Regards,
>>> Wei-Fan
>>> _______________________________________________
>>> 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