Any pointers which will lead to explaining why I am getting segmentation fault
stacktraces on floating point instructions being generated through uClibc would
I found this thread involving Jeff and Jon a bit relevant to my problem. Hence
This thread started by Jon is almost exactly my problem, but I dont see any
replies to that post.
Both these posts are over an year old.
The situation here is as follows:
I have 2 boards based on a 4Kc MIPS core. One on which we have
successfully ported everything from booloader to applications. The other
is almost similar to this one (the Processor core is the same), just the
things around like RAM,Flash chip, ENET PHY are different. We are using
cross compiler gcc (version 3.3.4) along with uClibc, kernel 2.4.25. Everything
is working fine on
platform #1. The kernel as well as the userland applications are all compiled
with the same gcc
cross compiler (version 3.3.4)
a) on platform #2 when I run any program which calls any function from
uClibc which uses floating point numbers you get a kernel stack trace
saying "Reserved instruction in kernel code in traps.c::do_ri, line 663"
and a lengthy stack trace follows.
b) the same static binary which just does z = x *y, where x,y,z are floats and
prints two floating
point numbers runs fine on platform #1.
c) If I remove the "printf" and just write the floating point arithmetic
instructions ( i.e something like z = x*y ). I dont get the stack trace on
platform #2 or #1
d) If I statically link this small program with glibc instead, it works
fine on platform #2 _and_ #1.
e) If I load the platform #2 with a kernel image over tftp from a remote machine
where the rootfs is embedded inside the kernel image itself, then the
dummy program linked with uClibc or glibc works fine ..no stacktrace !!!
If "e)" was not happening i.e the embedded ramdisk rootfs was also giving same
problems then one could have said that it was something to do with
incorrect compilation of uClibc itself, which is why it was working with
glibc but not with uClibc. However programs linked with the same uClibc
are working when the embedded rootfs kernel is loaded. How ?!? Why ?!!
uClibc configuration is to have floating point support and "HAS_FPU=y". If I
then it does compile with "-msoft-float", however the printf output from the
dummy program is just
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around