[LLVMdev] JIT on ARM
Martins Mozeiko
49640f8a at gmail.com
Fri Sep 25 02:04:04 PDT 2009
Hello.
My goal is to use LLVM with JIT compiler for ARM on Android device.
Currently I have successfully built and executed LLVM bitcode with
interpreter on Android. Speed is not so great, that is why I want to
use JIT.
I tried building bitcode on windows with llvm-gcc that is provided on
llvm home page. Resulting bitcode runs great in interpreter, but it
doesn't use JIT. From what I understand from LLVM that it is because
of target triple or datalayout. On PC in my case target triple is
"i386-mingw32", but LLVM JIT for ARM expects something that starts
with "armv" or "thumb". Also datalayout differs a lot. If I understand
correctly that is because bitcode actually contains some of platform
specific optimizations (like integer endianness), so I can't simply
change target triple string and everything will run.
What I am now doing, is - I am trying to build gcc from gcc-4.2-
llvm-2.5 sources with following configure line in cygwin shell:
../llvm-gcc4.2-2.4.source/configure --enable-languages=c,c++ --enable-
checking --enable-llvm=$PWD/../llvm-objects --disable-bootstrap --
disable-multilib --disable-nls --target=arm-eabi
My undertanding is that this will produce llvm-gcc compiler that will
output LLVM bitcode with target triple that starts with "arm", so LLVM
will use JIT on it.
Currently I am getting compile problems when running make (see below).
Has anyone done something similar and can explain what I am doing
wrong, or how should it be done in some other way to get JIT compiler
running on ARM?
make[2]: Entering directory `/cygdrive/r/android/llvm/llvm-gcc4.2-
objects/gcc'
gcc -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wwrite-
strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-
long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-
definition -Wmissing-format-attribute -fno-common -DHAVE_CONFIG_H -
DGENERATOR_FILE -o build/gengtype.exe \
build/gengtype.o build/gengtype-lex.o build/gengtype-
yacc.o build/errors.o ../build-i686-pc-cygwin/libiberty/libiberty.a
build/gengtype.o: In function `adjust_field_type':
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype.c:763: undefined reference to
`_lexer_line'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype.c:771: undefined reference to
`_lexer_line'
build/gengtype.o: In function `adjust_field_tree_exp':
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype.c:713: undefined reference to
`_lexer_line'
build/gengtype.o: In function `adjust_field_rtx_def':
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype.c:488: undefined reference to
`_lexer_line'
build/gengtype.o: In function `adjust_field_type':
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype.c:785: undefined reference to
`_lexer_line'
build/gengtype.o:/cygdrive/r/android/llvm/llvm-gcc4.2-objects/
gcc/../../llvm-gcc4.2-2.4.source/gcc/gengtype.c:725: more undefined
references to `_lexer_line' follow
build/gengtype.o: In function `main':
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype.c:3070: undefined reference to
`_parse_file'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype.c:3070: undefined reference to
`_parse_file'
build/gengtype-yacc.o: In function `yyparse':
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:73: undefined reference to
`_lexer_line'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:75: undefined reference to
`_lexer_line'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:76: undefined reference to
`_lexer_toplevel_done'
build/gengtype-yacc.o: In function `yyparse':
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/gengtype-yacc.c:1873:
undefined reference to `_yyerror'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/gengtype-yacc.c:1379:
undefined reference to `_yylex'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/gengtype-yacc.c:1877:
undefined reference to `_yyerror'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/gengtype-yacc.c:1995:
undefined reference to `_yyerror'
build/gengtype-yacc.o: In function `yyparse':
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:122: undefined reference to
`_lexer_line'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:110: undefined reference to
`_lexer_toplevel_done'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:102: undefined reference to
`_lexer_line'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:97: undefined reference to
`_lexer_line'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:92: undefined reference to
`_lexer_line'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:239: undefined reference to
`_lexer_line'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:235: undefined reference to
`_lexer_line'
build/gengtype-yacc.o:/cygdrive/r/android/llvm/llvm-gcc4.2-objects/
gcc/../../llvm-gcc4.2-2.4.source/gcc/gengtype-yacc.y:231: more
undefined references to `_lexer_line' follow
build/gengtype-yacc.o: In function `yyparse':
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:84: undefined reference to
`_lexer_toplevel_done'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:203: undefined reference to
`_lexer_line'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:203: undefined reference to
`_lexer_line'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:176: undefined reference to
`_lexer_line'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:176: undefined reference to
`_lexer_line'
/cygdrive/r/android/llvm/llvm-gcc4.2-objects/gcc/../../llvm-
gcc4.2-2.4.source/gcc/gengtype-yacc.y:165: undefined reference to
`_lexer_line'
build/gengtype-yacc.o:/cygdrive/r/android/llvm/llvm-gcc4.2-objects/
gcc/../../llvm-gcc4.2-2.4.source/gcc/gengtype-yacc.y:165: more
undefined references to `_lexer_line' follow
collect2: ld returned 1 exit status
make[2]: *** [build/gengtype.exe] Error 1
--
Martins Mozeiko
More information about the llvm-dev
mailing list