[Patch,libffi] Add MIPS64 soft-float support to libffi.
Anthony Green
green@redhat.com
Fri Aug 28 21:24:00 GMT 2009
David Daney wrote:
> libffi is lacking support for the mips64 soft-float ABIs. In addition
> be being annoying in and of itself, it also causes libjava failures.
>
> The patch adds soft-float support for both n32 and n64 ABIs. Quite a
> bit of code had to be touched as the rules for passing structures
> containing floating point elements are a slightly complex.
>
> While working on the patch I noticed that we were failing a bunch if
> pointer passing test cases that where recently added. It turns out
> that the original closure support for returning pointers was incorrect
> and this was unmasked by the new test cases. I wrapped fixes for this
> into the patch as well (Yes, I know it is technically a no-no). The
> change to ffi_java_raw_to_rvalue() is needed with with the fixed
> closure pointer return.
>
> I would like to add that I think there is still incorrect handling for
> values of most types on big-endian systems in java_raw_api.c, but
> since the java interpreter only uses a couple of types, the
> problematical cases are never used.
>
> The end result is that all libffi tests except for some long double
> things now pass at -O0. There are a couple of floating point failures
> with optimization turned on, but they look like they may be issues
> with libgcc's soft-float support. The long double FAILures seem to
> be due to lack of support in my glibc's printf.
>
>
> Tested on mips64-unknown-linux-gnu soft-float with both n32 and n64
> ABIs with no regressions. Currently testing mips64-unknown-linux-gnu
> hard-float n32 and n64.
>
> OK to commit given the hard-float testing is good?
Thanks David. Please commit once you've confirmed good test results.
I'll move the patch to the libffi repository once I see your commit.
AG
More information about the Gcc-patches
mailing list