[LLVMdev] Compilation error while cross compiling LLVM for ARM - the __clear_cache issue

Prasanth J j.prasanth.j at gmail.com
Fri Nov 13 04:35:39 PST 2009


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>


More information about the llvm-dev mailing list