Prasanth J
2009-Nov-09 10:55 UTC
[LLVMdev] Compilation error while cross compiling LLVM for ARM
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>
Xerxes Rånby
2009-Nov-09 11:50 UTC
[LLVMdev] Compilation error while cross compiling LLVM for ARM - the __clear_cache issue
Prasanth J skrev:> 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.By commenting out that line will make your llvm version crash sporadically since you would recreate llvm PR4960 if using the llvm JIT. http://llvm.org/bugs/show_bug.cgi?id=4960 __clear_cache are needed to clear the instructioncache after jitting a function and this gcc builtin are found in gcc 4.3.3 and later or CodeSourcery's 2007Q3/2008Q1 compiler releases and later. Try updating you cross compiler! Cheers Xerxes
Prasanth J
2009-Nov-13 12:35 UTC
[LLVMdev] Compilation error while cross compiling LLVM for ARM - the __clear_cache issue
Hi all, with reference to the reply below, I downloaded toolchain from codesourcery (arm-2009q1-203-arm-none-linux-gnueabi) with gcc 4.3.3... when i compile llvm+clang with this toolchain i am getting the following error make[4]: Entering directory `/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/tools/clang/tools/c-index-test' llvm[4]: Linking Release executable c-index-test (without symbols) /home/prasanth/arm-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: /home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/Release/bin/c-index-test: hidden symbol `__sync_val_compare_and_swap_4' in /home/prasanth/arm-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(linux-atomic.o) is referenced by DSO /home/prasanth/arm-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: final link failed: Nonrepresentable section on output collect2: ld returned 1 exit status make[4]: *** [/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/Release/bin/c-index-test] Error 1 make[4]: Leaving directory `/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/tools/clang/tools/c-index-test' make[3]: *** [all] Error 1 make[3]: Leaving directory `/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/tools/clang/tools' make[2]: *** [all] Error 1 make[2]: Leaving directory `/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/tools/clang' make[1]: *** [clang/.makeall] Error 2 make[1]: Leaving directory `/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/tools' make: *** [all] Error 1 can anyone please tell me why am i getting this error and how can i resolve this? Thanks and Regards, Prasanth J On Mon, Nov 9, 2009 at 5:20 PM, Xerxes Rånby <xerxes at zafena.se> wrote:> Prasanth J skrev: > > 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. > > By commenting out that line will make your llvm version crash > sporadically since you would recreate llvm PR4960 if using the llvm JIT. > http://llvm.org/bugs/show_bug.cgi?id=4960 > > __clear_cache are needed to clear the instructioncache after jitting a > function and this gcc builtin are found in gcc 4.3.3 and later or > CodeSourcery's 2007Q3/2008Q1 compiler releases and later. > > Try updating you cross compiler! >> Cheers > Xerxes >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20091113/3e3c4945/attachment.html>
Reasonably Related Threads
- [LLVMdev] Compilation error while cross compiling LLVM for ARM - the __clear_cache issue
- [LLVMdev] Compilation error while cross compiling LLVM for ARM - the __clear_cache issue
- [LLVMdev] Compilation error while cross compiling LLVM for ARM - the __clear_cache issue - now the __sync_val_compare_and_swap issue
- [LLVMdev] Compilation error while cross compiling LLVM for ARM - the __clear_cache issue - now the __sync_val_compare_and_swap issue - now the internal compiler error issue.
- [LLVMdev] Compilation error while cross compiling LLVM for ARM - the __clear_cache issue - now the __sync_val_compare_and_swap issue