[LLVMdev] MCJIT/interpreter and iostream

Jaymie Strecker jstrecker at kosada.com
Sat Jan 26 11:03:07 PST 2013


As of LLVM 3.2, is it possible to use iostream with the MCJIT or interpreter execution engines? I'm getting some errors... 


Each of these commands correctly prints "hello": 

	echo -e '#include <stdio.h>\nint main(){ printf("hello"); }' | clang -cc1 -emit-llvm-bc -x c++ | lli -use-mcjit

	echo -e '#include <iostream>\nint main(){ std::cout << "hello" << std::endl; }' | clang -cc1 -emit-llvm-bc -x c++ | lli


Each of these commands results in "LLVM ERROR: Could not resolve external global address: __dso_handle": 

	echo -e '#include <iostream>\nint main(){ std::cout << "hello" << std::endl; }' | clang -cc1 -emit-llvm-bc -x c++ | lli -force-interpreter=true

	echo -e '#include <iostream>\nint main(){ std::cout << "hello" << std::endl; }' | clang -cc1 -emit-llvm-bc -x c++ | lli -use-mcjit


This command correctly prints "hello": 

	echo -e '#include <iostream>\nextern "C" {void *__dso_handle = NULL;} int main(){ std::cout << "hello" << std::endl; }' | clang -cc1 -emit-llvm-bc -x c++ | lli


This command results in "LLVM ERROR: Tried to execute an unknown external function: _ZNSt8ios_base4InitC1Ev"

	echo -e '#include <iostream>\nextern "C" {void *__dso_handle = NULL;} int main(){ std::cout << "hello" << std::endl; }' | clang -cc1 -emit-llvm-bc -x c++ | lli -force-interpreter=true


This command results in "Assertion failed: (FPtr && "Pointer to fn's code was null after getPointerToFunction"), function runFunction, file MCJIT.cpp, line 180."

	echo -e '#include <iostream>\nextern "C" {void *__dso_handle = NULL;} int main(){ std::cout << "hello" << std::endl; }' | clang -cc1 -emit-llvm-bc -x c++ | lli -use-mcjit


---
Jaymie Strecker
jstrecker at kosada.com







More information about the llvm-dev mailing list