Help with "function could not be resolved" error


I am trying to run toy program within the JIT as it is done in Kaleidoscope examples
and can be seen in the following code snippet.

M = parseInputIR(InputIR);; //the IR of the toy program
auto H = J.addModule(std::move(M));
auto ExprSymbol = J.findUnmangledSymbolIn(H,“main”);
double (FP)(int) = (double ()(int))(intptr_t)ExprSymbol.getAddress();
std::cerr << "Evaluated to " << FP(8) << “\n”; //run the toy program

The problem is that I keep getting “Program used external function ‘atoi’ which could not be resolved”
error when running the program because the toy program contains a call to atoi.
Looking at possible solutions on-line I’ve tried setting LD_PRELOAD to libc
via putenv and using -rdynamic when linking the Kaleidoscope program but that did not solve the error.

BTW, the ldd shows that the program is linked properly with libc which contains atoi.

ldd …/clang/bin/Kaleidoscope-Orc-fully_lazy_with_recompile_try => (0x00007fff44b0f000)
/lib64/ (0x0000003f9aa00000)

Another option I’ve read about is to link the toy program statically with the bc version of libc using llvm-link
but before trying that I wonder if I can call libc function dynamically.

I appreciate any help with that.