Binutils 2.17 fails `make check` on mipsel-linux-gnu

Nick Clifton nickc@redhat.com
Tue Feb 27 10:49:00 GMT 2007


Hi Stuart,

: Under both Debian/MIPS Etch and Gentoo/MIPS, with vanilla binutils
: sources

Do you mean the vanilla 2.17 release sources ?  If so, then have you 
tried the current mainline development sources ?

> I have a sneaking suspicion, that the tests in question, are not run
> when binutils is cross-compiled.

Some of the tests are specific to native toolchains and will not be run 
when testing a cross-toolchain.  Grep for "isnative" in the testsuite 
control scripts (all ending in ".exp") to find such tests.

Also I noticed that the original test failures that you reported were 
with the binutils testsuite, whereas the ones you reported in your 
follow-up email were from the linker testsuite.  Have you resolved the 
binutils testsuite problems ?

>> gcc -LBUILDDIR/./ld -BBUILDDIR/ld/tmpdir/ld/ -L/usr/mipsel-unknown-linux-gnu/lib -L/usr/local/lib -L/lib -L/usr/lib  -o tmpdir/vnp -Wl,-rpath,tmpdir tmpdir/mainnp.o tmpdir/vnp.so
>> tmpdir/vnp >tmpdir/vnp.out
>> child killed: illegal instruction

This looks worrying.  It also looks like a compiler problem.  If an 
illegal instruction is encountered then either the program being 
executed has been compiled for the wrong type of processor, or else 
execution has jumped off into a random piece of memory.  So my first 
suggestion would be check the compiler that you are using to build the 
binutils, and if possible try a different compiler.  (Or a newer version 
of the compiler, or even an older version).

> 	These above snippets were taken from the Cobalt build log... i.e.
> running on a proper MIPS4 CPU.  I've tried running the test cases by
> hand, but haven't had much luck (largely because I'm unsure which
> commands belong to which testcase... the output is a little confusing to
> me).

It should just be a case of cutting the relevant command lines out of 
the log and running them by hand.  Often you can leave out the command 
lines to build the object files because they will be left in the 
testsuite's temporary build directory.  For example the log line shown 
above can probably be repeated by running:

   % cd <ld-build-directory>
   % gcc -L<builddir>/ld -B<builddir>/ld/tmpdir/ld \
     -L/usr/mipsel-unknown-linux-gnu -L/usr/local/lib \
     -L/lib -o tmpdir/vpn.so -Wl,-rpath,tmpdir \
     tmpdir/mainnp.o tmpdir/vnp.so

I would recommend adding "-v" to the gcc command line in order to see 
the exact way that it invokes the linker.

If you are able to reproduce the problem, it would really help if you 
could investigate some more and maybe find out where this "illegal 
instruction" error is coming from.

Cheers
   Nick





More information about the Binutils mailing list