This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

crosstool-0.28-rc7, host cygwin, target ARM


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]