[llvm] r191030 - llvm-c: Add LLVMGetPointerToFunction

Jim Grosbach grosbach at apple.com
Thu Sep 19 13:30:01 PDT 2013


This isn’t going to work when the execution target isn’t local. The pointer to the function is in the executing process address space and this returns a pointer in the compiler’s address space.

That’s a fundamental problem with the old JIT, and is semi-baked into the ExecutionEngine API, unfortunately, and cleaning that up is going to be painful. We shouldn’t, however, make the problem worse.

-Jim

On Sep 19, 2013, at 12:55 PM, Anders Waldenborg <anders at 0x63.nu> wrote:

> Author: andersg
> Date: Thu Sep 19 14:55:06 2013
> New Revision: 191030
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=191030&view=rev
> Log:
> llvm-c: Add LLVMGetPointerToFunction
> 
> Differential Revision: http://llvm-reviews.chandlerc.com/D1715
> 
> 
> Modified:
>    llvm/trunk/include/llvm-c/ExecutionEngine.h
>    llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp
> 
> Modified: llvm/trunk/include/llvm-c/ExecutionEngine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/ExecutionEngine.h?rev=191030&r1=191029&r2=191030&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm-c/ExecutionEngine.h (original)
> +++ llvm/trunk/include/llvm-c/ExecutionEngine.h Thu Sep 19 14:55:06 2013
> @@ -141,6 +141,8 @@ LLVMGenericValueRef LLVMRunFunction(LLVM
>                                     unsigned NumArgs,
>                                     LLVMGenericValueRef *Args);
> 
> +void *LLVMGetPointerToFunction(LLVMExecutionEngineRef EE, LLVMValueRef F);
> +
> void LLVMFreeMachineCodeForFunction(LLVMExecutionEngineRef EE, LLVMValueRef F);
> 
> void LLVMAddModule(LLVMExecutionEngineRef EE, LLVMModuleRef M);
> 
> Modified: llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp?rev=191030&r1=191029&r2=191030&view=diff
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp (original)
> +++ llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp Thu Sep 19 14:55:06 2013
> @@ -276,6 +276,10 @@ LLVMGenericValueRef LLVMRunFunction(LLVM
>   return wrap(Result);
> }
> 
> +void *LLVMGetPointerToFunction(LLVMExecutionEngineRef EE, LLVMValueRef F) {
> +  return unwrap(EE)->getPointerToFunction(unwrap<Function>(F));
> +}
> +
> void LLVMFreeMachineCodeForFunction(LLVMExecutionEngineRef EE, LLVMValueRef F) {
>   unwrap(EE)->freeMachineCodeForFunction(unwrap<Function>(F));
> }
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list