mips-elf with newlib

Michael N. Moran mike@mnmoran.org
Mon Oct 30 16:30:00 GMT 2006


Hi folks,

For the last couple of days, I have struggled in vain
to produce a "working" mips-elf toolchain with newlib.

Over the years I have managed to build GCC/binutil/newlib
toolchains for several targets including ARM, PowerPC,
68K, H8, AVR and their variants. However, I am now in
search of a big endian MIPS toolchain. No problem ...
right? ;-)

At this point I have tried various combinations of
binutils, GCC and newlib versions.

One constant that I have noticed is that I get errors
that look like this as the xgcc cross compiler
attempts to build libgcc and others:

/tmp/ccZrU2HW.s:5713: Warning: size (177) out of range, ignored

This warning comes from mips-elf-as as executed by GCC.
Apparently, it does not like the ".size" directives
produced by GCC?

The GCC build finally dies with the following error
while attempting to link libgcc.a :

mips-elf-ranlib: ./libgcc.a: Malformed archive
make[2]: *** [libgcc.a] Error 1

After some investigation it seems that the following
libgcc objects cause some object "code" to be produced
that results in the "Malformed archive".

_m16fix_truncdfsi.o
_m16fix_truncsfsi.o
_enable_execute_stack.o

Using "_enable_execute_stack.o" as an example (from libgcc2.c),
I can create and compile a C file with the "identical" function
and the result produced no warning or Malformed archive error.


I compare the actual "text" sections of these object
files and they look identical, so I *assume* the difference lies
in one of the other sections of the object file (e.g. debug info).

I must be doing something wrong, but exactly what alludes me.

*My binutils config looks like this:*

../binutils-2.17/configure \
       --target=mips-elf \
       --prefix=/tools/gnu/gcc/4.0.2/mips-elf

nice -n 19 make CFLAGS="-O2 -fomit-frame-pointer" 2>&1 | tee make.temp

*My GCC config looks like this:*

ln -s
     ../../../newlib/1.14.0/newlib-1.14.0/newlib ../gcc-4.0.2/newlib

BINUTILS_PATH=/tools/gnu/gcc/4.0.2/mips-elf/bin

export PATH=$PATH:$BINUTILS_PATH

../gcc-4.0.2/configure \
       --target=mips-elf \
       --prefix=/tools/gnu/gcc/4.0.2/mips-elf \
       --with-newlib \
       --disable-newlib-supplied-syscalls \
       --enable-languages=c,c++

nice -n 19 make CFLAGS="-O2 -fomit-frame-pointer" 2>&1 | tee make.temp

Any clues appreciated.


-- 
Michael N. Moran           (h) 770 516 7918
5009 Old Field Ct.         (c) 678 521 5460
Kennesaw, GA, USA 30144    http://mnmoran.org

"So often times it happens, that we live our lives in chains
     and we never even know we have the key."
The Eagles, "Already Gone"

The Beatles were wrong: 1 & 1 & 1 is 1






--
For unsubscribe information see http://sourceware.org/lists.html#faq



More information about the crossgcc mailing list