[LLVMdev] Compilation error while cross compiling LLVM for ARM

Prasanth J j.prasanth.j at gmail.com
Mon Nov 9 02:55:19 PST 2009


Hi,

i am a newbie to llvm architecture. i have been trying to port llvm on ARM
target. i am using the following configuration for cross compiling llvm.

../llvm/configure --host=arm-linux --target=arm-linux --build=i686-linux
--prefix=/opt/llvm-arm/ --enable-optimized --disable-debug \
 --disable-expensive-checks --disable-doxygen \
 --disable-threads --enable-targets=cbe,cpp,arm

using this configuration i am facing the following compilation error. pls
help me how to resolve this error..

*make[1]: Entering directory
`/home/prasanth/LLVM_ARM/llvm-target/obj-new/lib/System'
llvm[1]: Compiling Alarm.cpp for Release build
llvm[1]: Compiling Atomic.cpp for Release build
llvm[1]: Compiling Disassembler.cpp for Release build
llvm[1]: Compiling DynamicLibrary.cpp for Release build
llvm[1]: Compiling Errno.cpp for Release build
llvm[1]: Compiling Host.cpp for Release build
llvm[1]: Compiling IncludeFile.cpp for Release build
llvm[1]: Compiling Memory.cpp for Release build
/home/prasanth/LLVM_ARM/llvm-target/llvm/lib/System/Memory.cpp: In static
member function ‘static void
llvm::sys::Memory::InvalidateInstructionCache(const void*, size_t)’:
/home/prasanth/LLVM_ARM/llvm-target/llvm/lib/System/Memory.cpp:67: error:
‘__clear_cache’ was not declared in this scope
make[1]: ***
[/home/prasanth/LLVM_ARM/llvm-target/obj-new/lib/System/Release/Memory.o]
Error 1
make[1]: Leaving directory
`/home/prasanth/LLVM_ARM/llvm-target/obj-new/lib/System'
make: *** [all] Error 1**

*i can able to compile by commenting the line in Memory.cpp but i am not
sure whether it will affect anything while running llvm on target.
After cross-compilation i copied the binaries to target and i tried to
compile and run a simple helloworld.c application. As clang requires a
working gcc on target i used to "-ccc-clang-archs" options to skip the need
for gcc on target. But still i am getting the following error.

*# TMPDIR=/dtv/usb/sda ../bin/clang -ccc-clang-archs arm hello.c  -v
-I/dtv/usb/sda/LLVM/include
clang version 1.0
(https://llvm.org/svn/llvm-project/cfe/branches/release_26exported)
Target: arm-unknown-linux-gnu
Thread model: posix
 "/dtv/usb/sda/LLVM/llvm-2.6-arm/bin/../libexec/clang-cc" -triple
arm-unknown-linux-gnu -S -disable-free -main-file-name hello.c
--relocation-mc
clang-cc version 1.0 based upon llvm 2.6 hosted on arm-unknown-linux-gnu
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/include"
ignoring nonexistent directory "/System/Library/Frameworks"
ignoring nonexistent directory "/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
 /dtv/usb/sda/LLVM/include
 /dtv/usb/sda/LLVM/llvm-2.6-arm/lib/clang/1.0/include
End of search list.
clang-cc:
/home/prasanth/LLVM_ARM/llvm-target/llvm-2.6/include/llvm/ADT/ilist.h:197:
typename bidirectional_iterator<NodeTy, int>::reference ll.
0   clang-cc 0x00cd314c
Stack dump:
0.      Program arguments:
/dtv/usb/sda/LLVM/llvm-2.6-arm/bin/../libexec/clang-cc -triple
arm-unknown-linux-gnu -S -disable-free -main-file-nam
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'ARM Instruction Selection' on function '@main'
clang: error: compiler command failed due to signal 6 (use -v to see
invocation)
#

*can anyone help me how to use clang for compiling applications on target.
is it possible to run llvm bytecode on target using lli? if it is so pls let
me know how to do it..

following are the target info:
*target : arm
cpu : arm1136jf-s
toolchain : armv6*

Thanks and Regards,
Prasanth J
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20091109/607514e1/attachment.html>


More information about the llvm-dev mailing list