crosstool-0.28-rc7, host cygwin, target ARM
Michael Röhner
mroehner@gmx.de
Thu May 6 23:52:00 GMT 2004
Hello,
first of all (to Dan Kegel), excellent work! - I know about
many traps since I compiled a ARM toolchain (cygwin host)
one year ago, with some success (some = without the ".EXE" patch).
Now I have to use a recent gcc (gcc 3.3.x) for a CPU time critical
application. Someone said this application receive a 50% gain
with gcc 3.3.x (compared to 2.95.3). With gcc 3.3.2 it consumes
about 70% CPU time, therefore it is not usable with gcc 2.95.3,
I think (NOT TESTED).
My configuration:
crosstool-0.28-rc7
Host: cygwin (cygwin1.dll from 20040416)
Target: arm-unknown-linux-gnu
Target OS: embedded linux-2.4.18-rmk7, libc 2.1.3 installed
Target CPU: StrongARM 1110
I took crosstools's "--notest" since the target does not have
enough disk space for the mentioned chroot jail, I think
(flash ROM and little RAM only).
Very little, ugly "test program":
#include <stdio.h>
#include <float.h>
int main(void)
{
float f1,f2;
puts("Test");
f1 = 12.3;
f2 = 45.6;
printf("%f\n",f1 / f2 * 10.0);
return (0);
}
Compiled with
CFLAGS = -Wall -O2 -march=armv4 -mtune=strongarm1100
and
CFLAGS = -Wall -static -O2 -march=armv4 -mtune=strongarm1100
Results:
toolchain -static dynamic link
gcc libc compile test program test program
2.95.3 2.1.3 + + +
3.3.2 2.3.2 + 2 illegal instruction [ 1 float output error ]
3.3.3 2.1.3 3 error - -
3.3.3 2.3.2 + 2 illegal instruction [ 1 float output error ]
3.4.0 2.3.2 + + [ 1 runtime link error ]
3.4.0 2.1.3 4 error - -
(1) Ok, since tested on a system with only libc 2.1.3 .so installed
(not enough disk space to install new libc).
(2) It seems to me that there is an error in libc. Maybe false target
or maybe compiled for xscale instruction set, but has to run on
StrongARM which does not have some (dsp like) instructions
implemented or ... ? - Or missed I something and xscale compiling
is default (instruction set > armv4) for some newer compilers?
(3) and (4) see below.
Todo:
(a) I have to do the same on Linux as host, to exclude cygwin
host as reason for errors. But my Linux resources are limited
(400 MHz PC), so this take some days.
(b) There is a working Linux host toolchain, gcc 3.2.3, libc 2.3.2,
from http://handhelds.org/download/toolchain/ AND a build script.
IF (a) fails, I have to compare the patches and options.
Quick finding: "--with-cpu=strongarm1100" within this script.
(c) Some testing with gcc 3.4.0 (but I don't have confidence in
N.N.0 compilers, especially if cross compiling).
What I need is a toolchain gcc 3.3.2 or newer with libc 2.1.3.
Linux host is ok, but optimum would be cygwin host.
Another question: For example, is it possible to compile with
gcc 3.3.3 and libc 2.1.3 toolchain (assuming (3) is solved),
and run against gcc 2.95.3 compiled libc 2.1.3 .so ?
The last question: Do someone has experience using gcc 2.4.0
cross compiler for target ARM, especially StrongARM 1100?
Any hints or suggestions?
Thank you for you efforts,
regards, Mike.
(3) arm-unknown-linux-gnu-gcc
/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.3.3-glibc-2.1.3/build-glibc/csu/
crti.S -c -I../include -I.
-I/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.3.3-glibc-2.1.3/build-glibc/c
su -I.. -I../libio
-I/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.3.3-glibc-2.1.3/build-glibc
-I../sysd
eps/arm/elf -I../crypt/sysdeps/unix
-I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread
-I../linuxthreads/sy
sdeps/unix/sysv -I../linuxthreads/sysdeps/unix
-I../linuxthreads/sysdeps/arm -I../sysdeps/unix/sysv/linux/arm
-I../sysdeps/unix/sysv
/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman
-I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/u
nix/arm -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/arm/fpu
-I../sysdeps/arm -I../sysdeps/wordsize-32 -I../sysdeps/ieee754 -I.
./sysdeps/libm-ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic
-nostdinc -isystem /usr/src/crosstools/tools/arm-unknown-linux
-gnu/gcc-3.3.3-glibc-2.1.3/lib/gcc-lib/arm-unknown-linux-gnu/3.3.3/include
-isystem /usr/src/crosstools/tools/arm-unknown-linux-gnu/
gcc-3.3.3-glibc-2.1.3/arm-unknown-linux-gnu/include -D_LIBC_REENTRANT
-include ../include/libc-symbols.h -DHAVE_INITFINI -DASSEM
BLER
-I/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.3.3-glibc-2.1.3/build-glibc/csu/.
-g0 -o /usr/src
/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.3.3-glibc-2.1.3/build-glibc/csu/crti.o
/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.3.3-glibc-2.1.3/build-glibc/csu/crti.S:
Assembler messages:
/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.3.3-glibc-2.1.3/build-glibc/csu/crti.S:15:
Error: internal_relocation (type: OFFSET_IMM) not fixed up
/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.3.3-glibc-2.1.3/build-glibc/csu/crti.S:18:
Error: internal_relocation (type: OFFSET_IMM) not fixed up
make[2]: ***
[/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.3.3-glibc-2.1.3/build-glibc/csu/crti.o]
Error 1
Googling the error message does not bring results.
(4) arm-unknown-linux-gnu-gcc
/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.4.0-glibc-2.1.3/build-glibc/csu/
crti.S -c -I../include -I.
-I/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.4.0-glibc-2.1.3/build-glibc/c
su -I.. -I../libio
-I/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.4.0-glibc-2.1.3/build-glibc
-I../sysd
eps/arm/elf -I../crypt/sysdeps/unix
-I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread
-I../linuxthreads/sy
sdeps/unix/sysv -I../linuxthreads/sysdeps/unix
-I../linuxthreads/sysdeps/arm -I../sysdeps/unix/sysv/linux/arm
-I../sysdeps/unix/sysv
/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman
-I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/u
nix/arm -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/arm/fpu
-I../sysdeps/arm -I../sysdeps/wordsize-32 -I../sysdeps/ieee754 -I.
./sysdeps/libm-ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic
-nostdinc -isystem /usr/src/crosstools/tools/arm-unknown-linux
-gnu/gcc-3.4.0-glibc-2.1.3/lib/gcc/arm-unknown-linux-gnu/3.4.0/include
-isystem /usr/src/crosstools/tools/arm-unknown-linux-gnu/gcc-
3.4.0-glibc-2.1.3/arm-unknown-linux-gnu/include -D_LIBC_REENTRANT -include
../include/libc-symbols.h -DHAVE_INITFINI -DASSEMBLER
-I/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.4.0-glibc-2.1.3/build-glibc/csu/.
-g0 -o /usr/src/cro
sstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.4.0-glibc-2.1.3/build-glibc/csu/crti.o
/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.4.0-glibc-2.1.3/build-glibc/csu/crti.S:
Assembler messages:
/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.4.0-glibc-2.1.3/build-glibc/csu/crti.S:16:
Error: undefined local label `.L5'
/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.4.0-glibc-2.1.3/build-glibc/csu/crti.S:19:
Error: undefined local label `.L5'
make[2]: ***
[/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.4.0-glibc-2.1.3/build-glibc/csu/crti.o]
Error 1
make[2]: Leaving directory
`/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.4.0-glibc-2.1.3/glibc-2.1.3/csu'
make[1]: *** [csu/subdir_lib] Error 2
make[1]: Leaving directory
`/usr/src/crosstools/crosstool-0.28-rc7/build/arm-unknown-linux-gnu/gcc-3.4.0-glibc-2.1.3/glibc-2.1.3'
make: *** [all] Error 2
Googling the error message does not bring results.
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
More information about the crossgcc
mailing list