[top-posting fixed] 

Patrick Olinet writes:
> On 5/8/07, Andrew Haley <[EMAIL PROTECTED]> wrote:
 > > Patrick Olinet writes:
 > >  > Hi there,
 > >  >
 > >  > I'm running an embedded platform based on a powerpc 405EP CPU and a
 > >  > gcc 4.1.0 cross-toolchain. My initial problem was that gcj compiled
 > >  > binaries crash at runtime when interpreting java bytecode ("Illegal
 > >  > instruction" message).
 > >  >
 > >  > After many investigations, it looks like the problem comes from the
 > >  > libffi library : I've run the libffi testsuite on my embedded paltform
 > >  > and many of the tests show the same "Illegal instruction" message. For
 > >  > instance, the "cls_uint" test crashes at the following line (from the
 > >  > cls_uint.c file) :
 > >  >
 > >  > res = (*((cls_ret_uint)pcl))(2147483647);

...

 > >  > Any ideas or thoughts about this problem ?
 > >
 > > Run it in gdb.  When gdb stops with SIGILL, do
 > >
 > > x/i $pc
 > >
 > Running with gdb, it looks like the problem comes from the
 > ppc_closure.S file of the libffi/src/powerpc directory, at line 32 :
 > 
 > stfd %f1, 48(%r1)
 > 
 > I don't understand anything to powerpc assembly, but after a google
 > search, "stfd" means "store floating-point double". But the PPC405
 > doesn't have any FPU, so I guess that's why it throws an "illegal
 > instruction".

I agree.

 > I've compiled again my cross toolchain with the "--with-float=soft"
 > option, hoping that it would emulate FPU instruction, but this
 > unfortunately doesn't help... I'm nevertheless not sure that this
 > option is the right one...
 > 
 > Any thoughts ? Is there a bug in libffi in that it doesn't support
 > powerpc CPU without FPU ?

Yes.  Still, it should be easy enough to fix.  Perhaps a few days'
work for a person with some expertise in this area.

The issue is this: how are soft-fp floating-point arguments passed?
Without knowing that we have no way to proceed.  It might be as simple
as setting NUM_FPR_ARG_REGISTERS (in powerpc/ffi.c) to zero, or it
might be more difficult than that.

If you don't understand ppc assembly, this would be the time to learn.

Andrew.

Reply via email to