http://bugs.gentoo.org/show_bug.cgi?id=286911 --- src/mips/ffitarget.h.orig 2009-06-19 19:52:37.000000000 +0200 +++ src/mips/ffitarget.h 2009-06-19 19:52:43.000000000 +0200 @@ -43,7 +43,7 @@ # endif #if !defined(_MIPS_SIM) --- something is very wrong -- +# error -- something is very wrong -- #else # if (_MIPS_SIM==_ABIN32 && defined(_ABIN32)) || (_MIPS_SIM==_ABI64 && defined(_ABI64)) # define FFI_MIPS_N32 @@ -51,7 +51,7 @@ # if (_MIPS_SIM==_ABIO32 && defined(_ABIO32)) # define FFI_MIPS_O32 # else --- this is an unsupported platform -- +# error -- this is an unsupported platform -- # endif # endif #endif --- include/ffi.h.in.orig 2009-06-19 19:52:36.000000000 +0200 +++ include/ffi.h.in 2009-06-19 19:52:43.000000000 +0200 @@ -251,6 +251,9 @@ #if FFI_CLOSURES +#ifdef __sgi +# pragma pack 8 +#endif typedef struct { char tramp[FFI_TRAMPOLINE_SIZE]; ffi_cif *cif; @@ -260,6 +263,9 @@ } ffi_closure __attribute__((aligned (8))); #else } ffi_closure; +# ifdef __sgi +# pragma pack 0 +# endif #endif void *ffi_closure_alloc (size_t size, void **code); --- src/java_raw_api.c.dist 2009-09-29 11:04:56.517219880 +0100 +++ src/java_raw_api.c 2009-09-29 11:05:56.836581720 +0100 @@ -311,7 +311,7 @@ ffi_raw_closure *cl = (ffi_raw_closure*)user_data; ffi_java_ptrarray_to_raw (cif, avalue, raw); - (*cl->fun) (cif, rvalue, raw, cl->user_data); + (*cl->fun) (cif, rvalue, (ffi_raw*)raw, cl->user_data); ffi_java_raw_to_rvalue (cif, rvalue); }