diff -ru work/libffi-3.0.9/Makefile.am work.bak/libffi-3.0.9/Makefile.am --- work/libffi-3.0.9/Makefile.am 2009-12-31 06:41:43.000000000 -0600 +++ work.bak/libffi-3.0.9/Makefile.am 2010-06-01 00:08:15.000000000 -0500 @@ -137,7 +137,7 @@ nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S endif if POWERPC_FREEBSD -nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S +nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S endif if ARM nodist_libffi_la_SOURCES += src/arm/sysv.S src/arm/ffi.c diff -ru work/libffi-3.0.9/Makefile.in work.bak/libffi-3.0.9/Makefile.in --- work/libffi-3.0.9/Makefile.in 2010-06-01 22:36:11.000000000 -0500 +++ work.bak/libffi-3.0.9/Makefile.in 2010-06-01 00:07:50.000000000 -0500 @@ -50,7 +50,7 @@ @POWERPC_TRUE@am__append_12 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S @POWERPC_AIX_TRUE@am__append_13 = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S @POWERPC_DARWIN_TRUE@am__append_14 = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S -@POWERPC_FREEBSD_TRUE@am__append_15 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S +@POWERPC_FREEBSD_TRUE@am__append_15 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S @ARM_TRUE@am__append_16 = src/arm/sysv.S src/arm/ffi.c @AVR32_TRUE@am__append_17 = src/avr32/sysv.S src/avr32/ffi.c @LIBFFI_CRIS_TRUE@am__append_18 = src/cris/sysv.S src/cris/ffi.c diff -ru work/libffi-3.0.9/configure work.bak/libffi-3.0.9/configure --- work/libffi-3.0.9/configure 2010-06-01 22:36:11.000000000 -0500 +++ work.bak/libffi-3.0.9/configure 2010-06-01 00:06:52.000000000 -0500 @@ -12228,7 +12228,7 @@ powerpc-*-aix* | rs6000-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc ;; - powerpc-*-freebsd*) + powerpc*-*-freebsd*) TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc ;; powerpc*-*-rtems*) diff -ru work/libffi-3.0.9/src/powerpc/ffitarget.h work.bak/libffi-3.0.9/src/powerpc/ffitarget.h --- work/libffi-3.0.9/src/powerpc/ffitarget.h 2009-12-29 09:22:26.000000000 -0600 +++ work.bak/libffi-3.0.9/src/powerpc/ffitarget.h 2010-06-01 00:26:08.000000000 -0500 @@ -32,6 +32,8 @@ #if defined (POWERPC) && defined (__powerpc64__) /* linux64 */ #define POWERPC64 +#elif defined (POWERPC_FREEBSD) && defined (__powerpc64__) /* freebsd64 */ +#define POWERPC64 #elif defined (POWERPC_DARWIN) && defined (__ppc64__) /* Darwin */ #define POWERPC64 #elif defined (POWERPC_AIX) && defined (__64BIT__) /* AIX64 */ @@ -84,8 +86,12 @@ FFI_LINUX64, FFI_LINUX, FFI_LINUX_SOFT_FLOAT, +#ifdef __powerpc64__ + FFI_DEFAULT_ABI = FFI_LINUX64, +#else FFI_DEFAULT_ABI = FFI_SYSV, #endif +#endif FFI_LAST_ABI } ffi_abi;