Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -29,6 +29,11 @@
 	Use them to handle ELF vs. ECOFF differences.
 	[__osf__] (_GLOBAL__F_ffi_call_osf): Define.
 
+2011-02-25  Anthony Green  <green@moxielogic.com>
+
+	* src/powerpc/ffi.c (ffi_prep_closure_loc): Allow for more
+	32-bit ABIs.
+
 2011-02-15  Anthony Green  <green@moxielogic.com>
 
 	* m4/ax_cc_maxopt.m4: Don't -malign-double or use -ffast-math.
Index: libffi/src/powerpc/ffi.c
===================================================================
--- libffi.orig/src/powerpc/ffi.c
+++ libffi/src/powerpc/ffi.c
@@ -958,7 +958,10 @@ ffi_prep_closure_loc (ffi_closure *closu
 #else
   unsigned int *tramp;
 
-  if (! (cif->abi == FFI_GCC_SYSV || cif->abi == FFI_SYSV))
+  if (! (cif->abi == FFI_GCC_SYSV 
+	 || cif->abi == FFI_SYSV
+	 || cif->abi == FFI_LINUX
+	 || cif->abi == FFI_LINUX_SOFT_FLOAT))
     return FFI_BAD_ABI;
 
   tramp = (unsigned int *) &closure->tramp[0];
