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.
linux-vdso.so.1 => (0x00007fff44b0f000)
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.