Illegal instruction error in t-constants test
tg at gmplib.org
Thu Mar 10 16:56:19 CET 2011
Russ Kuhn <russ.kuhn at thermyos.com> writes:
In building gmp-5.0.1, the make check reported an illegal instruction
failure. The build is on a Technologic TS-7553 SBC that uses a Cavium
CNS2132 with a Faraday FA-526 core as described in
http://wiki.openembedded.net/index.php/TS-7500. I'm actually in the
process of building gcj, which requires building a new gcc, which
requires GMP and MPFR. (The MPFR check also reported 108 of 156 tests
failed with an illegal instruction error.) Can I just plow ahead with
building gcc, or am I out of luck because the gcc that came with the
TS-7553 is emitting bad code?
I don't know anything about Faraday or Cavium.
I think that either GMP uses an arm instruction that is not implemented
on your cpu, or gcc generates such an instruction. It is also possible
that the error reporting in your environment is non-standard, and that
"Illegal instruction" means something else.
You may want to try using 'configure none'; this will disable all
assembly code. If you still get "Illegal instruction", we have excluded
Then you need to run t-constants in a debugger. Note that t-constants
(if you build GMP as a shared lib) is a script, and that the real code
is in tests/.libs/t-constants. It might be easier to try to reproduce
with 'configure --disable-shared none' to avoid this litte obstacle. If
you need to run tests/.libs/t-constants, you may need to set some
environment variable (perhaps LD_LIBRARY_PATH) pointing to the directory
.libs in the build dir top-level.
Once you have plain binary that reproduces the error, fire it up inside
a debugger. This should show the offending instruction.
More information about the gmp-bugs