That is great to hear. I must be doing something wrong. When I try
to do this, I get ERROR: Program used external function
'myLinkedFunction' which could not be resolved!
Because of its brevity, I use getOrInsertFunction when I am creating
calls to the function in module A. I use new llvm::Function(type,
llvm::Function::ExternalLinkage, "myLinkedFunction", moduleB) when I
am defining the function with its body in module B. I then have an
ExecutionEngine which I constructed with an empty dummy module so that
I can use addModuleProvider and removeModuleProvider to link arbitrary
modules later. I call addModuleProvider with module A and module B
wrapped in ExistingModuleProviders, and call getPointerToFunction.
Any ideas? If there isn't anything obviously wrong here, I can boil
this down to a snippet that reproduces the problem. Thanks,
Bill Wendling wrote:
> > I am fairly new to LLVM development.
> > Currently I am trying to treat LLVM modules almost like ".o" files
> > in a "normal" development environment, and then calling functions
> > in one module from another module. Is this possible?
> Yes! In fact, that's close to what modules are in LLVM. If you want
> to call a function outside of a .o file, then you have an external
> declaration of that function in the module, and then call it like
> normal. You link the .o files like normal to create the final
> > Basically, I want self contained chunks of code with dependencies
> > on functions in other self contained chunks that get resolved at
> > JIT time. I figured since the ExecutionEngine has an
> > "addModuleProvider" function, this sort of behavior is supported.
> > If not, what is addModuleProvider's intended use?
> > When I can get LLVM to do what I want, it is truly incredible!
> > Thanks for a great project!
> > Aaron
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev