edA-qa mort-ora-y
2012-Nov-04 11:08 UTC
[LLVMdev] trying to understand linkage with linker
If I create a function in a module with: auto f = module->getOrInsertFunction( "eval_expr", ...) //create function Then later I link this with other modules: Linker link; link.LinkInModule( base_module ); link.LinkInModule( module ); Then I create an execution engine something like: auto ee = EngineBuilder( link.getModule() )...create(); If I attempt to run the function directly I get an error: ee->runFunction( f, args ); "LLVM ERROR: Program used external function 'eval_expr' which could not be resolved!" But if I get the same function from the linked module it works: ee->runFunction( link.getModule()->getFunction( "eval_expr" ), args ) I'm trying to understand why. Once linked, are the source modules for the linker in any way related to the result module, or is all data copied and the source modules left alone? If this is true I can see that somehow my "f" pointer simply isn't a function in the resulting module. But perhaps somebody can explain it a bit better to me? -- edA-qa mort-ora-y -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Sign: Please digitally sign your emails. Encrypt: I'm also happy to receive encrypted mail. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 259 bytes Desc: OpenPGP digital signature URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121104/bd74ab7b/attachment.sig>