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