[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.


> 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).


> 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