ARM and xscale toolchains update
A current project (xscale-based) has inspired me to do something useful
about updating the arm toolchains and docs available for debian.
I've been very hapily using the emdebian task-arm-cross for a couple of
years now, but it's getting rather long in the tooth and I've finally
tripped over that because it doesn't support Xscale.
The emdebian toolchain stuff should be available as part of Debian itself
so you can apt-get it without needing to add a new source. When I do an
update I'll upload it to debian too, but keep the packages available at
emdebian.org for a) RPM people and b) testing before upload.
Now to the point of this message. Various people have volunteered to help
out on this task over the last year or two but I never saw any results.
(No need to feel guilty - it is rather daunting)
Before I start from scratch did anyone get anywhere with updating the
emdebian packages, such as working out which patches are no longer needed
because they are in mainstream gcc or debian's toolchain-source package?
If so please give me the benfit of your wisdom.
Also, of the multitude of toolchain options out there what is the current
consensus on 'good versions' of gcc, glibc and binutils and relevant
Collected comments from the arm-linux mailing lists conflict to some extent:
> My unacceptable compiler list for 2.5.59 is:
> * GCC 2.95.1, 2.95.2: ignores register clobber list in asm().
> * GCC 3.0, 3.1: general bad code generation.
> * GCC 3.2.0: incorrect function argument offset calculation.
> * GCC 3.2.1: miscompiles NEW_AUX_ENT in fs/binfmt_elf.c
> * (http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=8896)
> the latest rock solid ARM compiler is gcc 2.95.4.
> Dominic Duval:
> I can confirm that gcc 3.2.1 works fine with 2.4.19, with XScale-optimized
> code. I've been using it for a few weeks here without any known problem.
> Some patches are needed to produce a working toolchain though.
> I use binutils 2.12.1 with gcc-3.2 and it works for me. There
> have been some gcc related kernel problems that rmk has noticed
> but for my arm systems this combination works well.
> gcc-2.95.3 + binutils-2.10.1 = do not support linux-2.4.18-rmk7-pxa3 (Lubbock)
> gcc-2.95.3 + binutils-2.11.2 = OK for linux-2.4.18-rmk7-pxa3 (Lubbock)
> gcc-2.95.3 + binutils-2.12.91 = get error "internal error earmelf_linux.c 160"
> Since I can build successfully only with gcc-2.95.3 + binutils-2.11.2 I am force
> Other versions should work as well, but I trust that one at the moment.
> Luc De Cock:
> I use the cross-3.2 toolchain with kernel 2.4.18-rmk4-pxa2.
> I don't know the version of the included binutils.
> The included shared libs are compatible with those of the familiar
> Cross-2.95.3 gave me the same kind of problems (internal error, ...)
So, given that lot I was going to try and build
gcc 2.95.3 + erik's patchset
gcc 3.2.1 + Dominic's patch set
both with binutils 2.12.1, and glibc 2.3.1
(and 2.4.19 kernel headers, although it shouldn't matter much)
using a combination of the build scripts from richard atterer, erik,
dominic and frank smith (in the emdebian packages), and checking that the
arm toolchain doc matches the proceedure that works.
Can anyone see anything wrong with this plan, or suggest better options?
And clues on the best compile options for widest possible applicability
would be welcome. (I'd like this toolchain to be able to produce armv3,4
and 5 code reliably if at all possible)
And advice as to whether I should start from toolchain-source for the 3.2
stuff or not would also be welcome.
Aleph One Ltd, Bottisham, CAMBRIDGE, CB5 9BA, UK Tel +44 (0) 1223 811679
work: http://www.aleph1.co.uk/ play: http://www.chaos.org.uk/~wookey/