Hi,<br><br>As you said i downloaded arm toolchain from codesourcery(2009q3 with gcc 4.4.1 version).. if i use this toolchain i am getting the following error..<br><br><span style="color: rgb(204, 0, 0);">make[2]: Entering directory `/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib/Analysis'</span><br style="color: rgb(204, 0, 0);">

<span style="color: rgb(204, 0, 0);">llvm[2]: Compiling LoopPass.cpp for Release build</span><br style="color: rgb(204, 0, 0);"><span style="color: rgb(204, 0, 0);">if arm-none-linux-gnueabi-g++ -I/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm/include -I/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm/lib/Analysis -I/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/include -I/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib/Analysis  -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -O2 -fomit-frame-pointer -fno-exceptions -fPIC -Woverloaded-virtual    -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings  -c -MMD -MP -MF "/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib/Analysis/Release/LoopPass.d.tmp" -MT "/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib/Analysis/Release/LoopPass.o" -MT "/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib/Analysis/Release/LoopPass.d" /home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm/lib/Analysis/LoopPass.cpp -o /home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib/Analysis/Release/LoopPass.o ; \</span><br style="color: rgb(204, 0, 0);">

<span style="color: rgb(204, 0, 0);">            then /bin/mv -f "/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib/Analysis/Release/LoopPass.d.tmp" "/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib/Analysis/Release/LoopPass.d"; else /bin/rm "/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib/Analysis/Release/LoopPass.d.tmp"; exit 1; fi</span><br style="color: rgb(204, 0, 0);">

<span style="color: rgb(204, 0, 0);">/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm/lib/Analysis/LoopPass.cpp: In member function 'void llvm::LPPassManager::deleteLoopFromQueue(llvm::Loop*)':</span><br style="color: rgb(204, 0, 0);">

<span style="color: rgb(204, 0, 0);">/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm/lib/Analysis/LoopPass.cpp:100: internal compiler error: Segmentation fault</span><br style="color: rgb(204, 0, 0);"><span style="color: rgb(204, 0, 0);">Please submit a full bug report,</span><br style="color: rgb(204, 0, 0);">

<span style="color: rgb(204, 0, 0);">with preprocessed source if appropriate.</span><br style="color: rgb(204, 0, 0);"><span style="color: rgb(204, 0, 0);">See <<a href="https://support.codesourcery.com/GNUToolchain/">https://support.codesourcery.com/GNUToolchain/</a>> for instructions.</span><br style="color: rgb(204, 0, 0);">

<span style="color: rgb(204, 0, 0);">/bin/rm: cannot remove `/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib/Analysis/Release/LoopPass.d.tmp': No such file or directory</span><br style="color: rgb(204, 0, 0);">

<span style="color: rgb(204, 0, 0);">make[2]: *** [/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib/Analysis/Release/LoopPass.o] Error 1</span><br style="color: rgb(204, 0, 0);"><span style="color: rgb(204, 0, 0);">make[2]: Leaving directory `/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib/Analysis'</span><br style="color: rgb(204, 0, 0);">

<span style="color: rgb(204, 0, 0);">make[1]: *** [Analysis/.makeall] Error 2</span><br style="color: rgb(204, 0, 0);"><span style="color: rgb(204, 0, 0);">make[1]: Leaving directory `/home/prasanth/LLVM_ARM/llvm-with-armgcc441/llvm-obj/lib'</span><br style="color: rgb(204, 0, 0);">

<span style="color: rgb(204, 0, 0);">make: *** [all] Error 1</span><br style="color: rgb(204, 0, 0);"><br style="color: rgb(204, 0, 0);">please let me know how should i resolve this error...<br><br>Thanks and Regards,<br clear="all">

Prasanth J<br><br><br>
<br><br><div class="gmail_quote">On Fri, Nov 13, 2009 at 7:39 PM, Xerxes Rånby <span dir="ltr"><<a href="mailto:xerxes@zafena.se">xerxes@zafena.se</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Prasanth J wrote:<br>
><br>
> Hi all,<br>
> with reference to the reply below, I downloaded toolchain from<br>
> codesourcery (arm-2009q1-203-arm-none-linux-gnueabi) with gcc 4.3.3...<br>
> when i compile llvm+clang with this toolchain i am getting the<br>
> following error<br>
><br>
> make[4]: Entering directory<br>
> `/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/tools/clang/tools/c-index-test'<br>
> llvm[4]: Linking Release executable c-index-test (without symbols)<br>
> /home/prasanth/arm-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld:<br>
> /home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/Release/bin/c-index-test:<br>
> hidden symbol `__sync_val_compare_and_swap_4' in<br>
> /home/prasanth/arm-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(linux-atomic.o)<br>
> is referenced by DSO<br>
> /home/prasanth/arm-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld:<br>
> final link failed: Nonrepresentable section on output<br>
> collect2: ld returned 1 exit status<br>
> make[4]: ***<br>
> [/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/Release/bin/c-index-test]<br>
> Error 1<br>
> make[4]: Leaving directory<br>
> `/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/tools/clang/tools/c-index-test'<br>
> make[3]: *** [all] Error 1<br>
> make[3]: Leaving directory<br>
> `/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/tools/clang/tools'<br>
> make[2]: *** [all] Error 1<br>
> make[2]: Leaving directory<br>
> `/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/tools/clang'<br>
> make[1]: *** [clang/.makeall] Error 2<br>
> make[1]: Leaving directory<br>
> `/home/prasanth/LLVM_ARM/llvm-with-armgcc433/llvm-obj/tools'<br>
> make: *** [all] Error 1<br>
><br>
> can anyone please tell me why am i getting this error and how can i<br>
> resolve this?<br>
><br>
> Thanks and Regards,<br>
> Prasanth J<br>
><br>
><br>
You get this linking error because the code contains a gcc atomic<br>
intrinsic calls using __sync_val_compare_and_swap . These are GCC<br>
built-ins and have only been implemented on ARM using GCC 4.4.<br>
<a href="http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Atomic-Builtins.html" target="_blank">http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Atomic-Builtins.html</a><br>
If you want to use GCC 4.3.3 then you have to implement the<br>
__sync_val_compare_and_swap_4 function yourself.<br>
<br>
Ubuntu Jaunty ARM toolchains have been patched to contains the atomic<br>
intrinsics support in GCC 4.3.3<br>
<br>
So to solve this issue do one of the following:<br>
a) update your code sourcery cross compiler to arm-2009q3 that are using<br>
GCC 4.4<br>
b) use the Ubuntu gcc 4.3.3 provided toolchain (i use this when<br>
compiling llvm natively on a arm machine without cross compilation)<br>
c) implement the __sync_val_compare_and_swap_4 function and patch llvm<br>
to enable compilation using older toolchains.<br>
<br>
Cheers<br>
<font color="#888888">Xerxes<br>
</font></blockquote></div><br>