I've been building tools targeting the Marvell Xscale processor a lot
lately. A set of tools I build a few months ago seem to generate much
faster code on our target hardware than tools I built more recently.
There were some significant differences in the way the tools were
built, but it doesn't seem like that's enough to explain the
difference. Unfortunately, I don't remember exactly how I built the
older toolchain, so I'm hoping someone can help me determine what it
was by looking at the build result.
Old tools:
$ arm-elf-gcc -v
Using built-in specs.
Target: arm-elf
Configured with: ../configure --prefix=/usr/local/arm3 --target=arm-
elf --with-newlib --with-cpu=xscale --enable-languages=c,c++
Thread model: single
gcc version 4.2.1
$ arm-elf-ld --version
GNU ld (GNU Binutils) 2.18
How do I tell what version of newlib is installed (I think it's 1.15)?
Built using a multistep process, where I first built binutils, then
gcc, then newlib (I don't recall if I did a stage 1 GCC build first,
but somehow I got it all working).
The latest tools are slightly different, and built with a combined
tree build:
gcc-4.2.2
binutils-2.17
newlib-1.15
$ xscale-elf-gcc -v
Using built-in specs.
Target: xscale-elf
Configured with: ../combined/configure --target=xscale-elf --disable-
nls --with-newlib --prefix=/usr/local/gcc-xscale-elf --disable-newlib-
supplied-syscalls
Thread model: single
gcc version 4.2.2
I'm sorry I can't provide better information, but I'd really like to
figure this out. The code doesn't call into the standard C library,
but does make use of a lot of floating point code. Is it possible that
this code is better with the other tools (either built more optimized,
or generally different)? I don't know I'm just speculating. It is C++
code (bouncing balls on a screen, the balls are object instances).
Thanks for any help!
--
Rick