Hi, I am not very familiar with libffi but I believe I may have stumbled upon a bug. If you build the attached test code, you will get two test programs - namely, ex1 and ex2. The only difference between the two is '-D__USE_F6__' , which passes the last parameter of test_func1() as a float instead of a double. I have tried these test programs on both X86 and PPC (32-bit in both cases) using libffi 3.2.1. I did not use any special configure flags when I built libffi 3.2.1 for both platforms. This is what I get on X86: $ ./ex1 args_idx = 12 tst_func1 : 0xa 0xb 11.100000 12.1 13.100000 14.1 15.100000 16.1 17.100000 18.1 19.100000 20.100000 rc = 1 - success? Y $ ./ex2 args_idx = 12 tst_func1 : 0xa 0xb 11.100000 12.1 13.100000 14.1 15.100000 16.1 17.100000 18.1 19.100000 20.1 rc = 1 - success? Y That looks fine. The last parameter is always 20.1. If I run the same code on PPC I get: $ uname -a Linux tstsrv 3.0.101-0.47.52-ppc64 #1 SMP Thu Mar 26 10:55:49 UTC 2015 (0e3c7c8) ppc64 ppc64 ppc64 GNU/Linux $ file ./ppc/libffi_3.2.1/lib/libffi.so.6.0.4 ./ppc/libffi_3.2.1/lib/libffi.so.6.0.4: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, not stripped $ gcc -dumpversion 4.3 $ ./ex1 args_idx = 12 tst_func1 : 0xa 0xb 11.100000 12.1 13.100000 14.1 15.100000 16.1 17.100000 18.1 19.100000 20.100000 rc = 1 - success? Y $ ./ex2 args_idx = 12 tst_func1 : 0xa 0xb 11.100000 12.1 13.100000 14.1 15.100000 16.1 17.100000 18.1 19.100000 -2.35344e-185 rc = 0 - success? N You can see above that the last parameter printed by tst_func1() is incorrect in the case of ex2 (i.e., when passed as a double). Any idea? Thanks in advance