<div dir="ltr">Hi Manoel,<div><br></div><div>The following patch works for me. What platform are you running on?</div><div><br></div><div>- Lang.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 10, 2015 at 10:54 AM, Manoel Teixeira <span dir="ltr"><<a href="mailto:mbsteixeira@gmail.com" target="_blank">mbsteixeira@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div>Hi, Lang.</div><div><br></div><div>I'm trying  to solve the problem alone, but I'm failling.</div><div><br></div><div>See this test , using your orc example:</div><div><div>ready> extern printd(x)</div><div>printd(4);</div><div>ready> Expression function:</div><div>; ModuleID = 'jit_module_1'</div><div>target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"</div><div><br></div><div>define double @__anon_expr() {</div><div>entry:</div><div>  %calltmp = call double @printd(double 4.000000e+00)</div><div>  ret double %calltmp</div><div>}</div><div><br></div><div>declare  double @printd(double)</div><div>LLVM ERROR: Unknown section in relocation</div></div><div><br></div><div>I've provided the passes you told me :</div><div>ExternalSymbols[Mangle("printd")] = (uint64_t)&printd;<br></div><div><div>  auto Resolver = createLambdaResolver(</div><div>                      [&](const std::string &Name) {</div><div><br></div><div>                        /// Try the JIT first....</div><div>                        if (auto Sym = findSymbol(Name))</div><div>                          return RuntimeDyld::SymbolInfo(Sym.getAddress(),</div><div>                                                         Sym.getFlags());</div><div><br></div><div>                        // Try the external symbols map...</div><div>                        if (auto Addr = ExternalSymbols.lookup(Name))</div><div>                          return RuntimeDyld::SymbolInfo(Addr,</div><div>                                                         JITSymbolFlags::Exported);</div><div><br></div><div>                        // Symbol not found.</div><div>                        return RuntimeDyld::SymbolInfo(nullptr);</div><div>                      },</div><div>                      [](const std::string &S) { return nullptr; }</div><div>                    );</div><div><br></div></div><div>if I use only a simple expression, it runs ok.</div><div><div>ready> 4;</div><div>Expression function:</div><div>; ModuleID = 'jit_module_1'</div><div>target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"</div><div><br></div><div>define double @__anon_expr() {</div><div>entry:</div><div>  ret double 4.000000e+00</div><div>}</div><div>Evaluated to 4.000000</div></div><div><br></div><div>The lambda function was not called any time. Is there any aditional step to make it be called?</div><div><br></div><div>Cheers,</div><div>Manoel.</div></div>
</blockquote></div><br></div>