[LLVMdev] Consumer ARM platform suitable for LLVM development?

Misha Brukman brukman at gmail.com
Thu Mar 12 08:30:24 PDT 2009


On Thu, Mar 12, 2009 at 6:17 AM, Dietmar Ebner
<ebner at complang.tuwien.ac.at>wrote:

> On Mar 11, 2009, at 9:44 PM, Misha Brukman wrote:
> > The problem I've had is building an LLVM cross-compiler from Linux/
> > x86 to Linux/ARM (as has another llvm-dev poster).  Someone
> > mentioned to me off-list that he managed to get it to build, but I
> > haven't been able to reproduce the build using his instructions
> > (I'll post my results in another thread).
>
> I've been successfully experimenting with an arm-softfloat-linux-gnu
> cross-compiler at the time of llvm 2.1. The easiest way to get this
> working is to use Dan Kegel's crosstool to build a regular gcc
> toolchain. This will give you binutils, libgcc, and glibc, which you
> will need anyway.


I've been trying to build for the target arm-none-linux-gnueabi, using the
appropriate pre-built CodeSourcery toolchain, hence avoiding building my own
gcc crosstool prior to starting building LLVM and LLVM-GCC.  LLVM builds
just fine, it's building llvm-gcc that gives me this error:

gcc -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -DHAVE_CONFIG_H -DGENERATOR_FILE
-I. -Ibuild -I../../../../src/llvm-gcc4.2-2.5.source/gcc
-I../../../../src/llvm-gcc4.2-2.5.source/gcc/build
-I../../../../src/llvm-gcc4.2-2.5.source/gcc/../include
-I../../../../src/llvm-gcc4.2-2.5.source/gcc/../libcpp/include
-I../../../../src/llvm-gcc4.2-2.5.source/gcc/../libdecnumber
-I../libdecnumber -I/tmp/llvm-project/install/x86_64-arm/llvm/include
-I/tmp/llvm-project/src/llvm-2.5/include -DENABLE_LLVM
-I/tmp/llvm-project/install/x86_64-arm/llvm/include  -D_DEBUG  -D_GNU_SOURCE
-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS   -o build/gencondmd.o
build/gencondmd.c

../../../../src/llvm-gcc4.2-2.5.source/gcc/config/arm/arm.md:4788: error:
‘MACHO_DYNAMIC_NO_PIC_P’ undeclared here (not in a function)

This tells me there are some Darwin-specific bits in arm.md which shouldn't
be there (MachO is Mac OS X-specific).  I'm using the attached script
llvm-arm-crosstool.sh to configure/build/install LLVM and LLVM-GCC from the
2.5 release.  If anyone wants to try it out and see if it works for them,
I'd love to hear their experiences.

If any ARM/GCC experts know how to fix arm.md to not refer to
Darwin-specific macros, that would be great, too.

Building llvm-gcc was relatively painless. The only problem I've
> encountered was that my target had no hardware floating point support
> and the endianess for the softfloat implementation (libgcc) differed
> from integer endianess, which required some patches at the llvm side.
> I have not checked if this is still necessary. If you run into the
> same problems, I would be happy to share the patch (which I have
> updated to llvm 2.4 at some point).


I would be interested in seeing your patch, if you wouldn't mind sharing
it.  Bonus points if you have a script similar to mine above to simplify the
entire process, or your notes/directions that I can convert into an
easy-to-run script.  :-)

Thanks,
Misha
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090312/c482b5cc/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm-arm-crosstool.sh
Type: application/x-sh
Size: 4874 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090312/c482b5cc/attachment.sh>


More information about the llvm-dev mailing list