1*1fd5a2e1SPrashanth SwaminathanStatus 2*1fd5a2e1SPrashanth Swaminathan====== 3*1fd5a2e1SPrashanth Swaminathan 4*1fd5a2e1SPrashanth Swaminathanlibffi-3.2.1 was released on November 12, 2014. Check the libffi web 5*1fd5a2e1SPrashanth Swaminathanpage for updates: <URL:http://sourceware.org/libffi/>. 6*1fd5a2e1SPrashanth Swaminathan 7*1fd5a2e1SPrashanth Swaminathan 8*1fd5a2e1SPrashanth SwaminathanWhat is libffi? 9*1fd5a2e1SPrashanth Swaminathan=============== 10*1fd5a2e1SPrashanth Swaminathan 11*1fd5a2e1SPrashanth SwaminathanCompilers for high level languages generate code that follow certain 12*1fd5a2e1SPrashanth Swaminathanconventions. These conventions are necessary, in part, for separate 13*1fd5a2e1SPrashanth Swaminathancompilation to work. One such convention is the "calling 14*1fd5a2e1SPrashanth Swaminathanconvention". The "calling convention" is essentially a set of 15*1fd5a2e1SPrashanth Swaminathanassumptions made by the compiler about where function arguments will 16*1fd5a2e1SPrashanth Swaminathanbe found on entry to a function. A "calling convention" also specifies 17*1fd5a2e1SPrashanth Swaminathanwhere the return value for a function is found. 18*1fd5a2e1SPrashanth Swaminathan 19*1fd5a2e1SPrashanth SwaminathanSome programs may not know at the time of compilation what arguments 20*1fd5a2e1SPrashanth Swaminathanare to be passed to a function. For instance, an interpreter may be 21*1fd5a2e1SPrashanth Swaminathantold at run-time about the number and types of arguments used to call 22*1fd5a2e1SPrashanth Swaminathana given function. Libffi can be used in such programs to provide a 23*1fd5a2e1SPrashanth Swaminathanbridge from the interpreter program to compiled code. 24*1fd5a2e1SPrashanth Swaminathan 25*1fd5a2e1SPrashanth SwaminathanThe libffi library provides a portable, high level programming 26*1fd5a2e1SPrashanth Swaminathaninterface to various calling conventions. This allows a programmer to 27*1fd5a2e1SPrashanth Swaminathancall any function specified by a call interface description at run 28*1fd5a2e1SPrashanth Swaminathantime. 29*1fd5a2e1SPrashanth Swaminathan 30*1fd5a2e1SPrashanth SwaminathanFFI stands for Foreign Function Interface. A foreign function 31*1fd5a2e1SPrashanth Swaminathaninterface is the popular name for the interface that allows code 32*1fd5a2e1SPrashanth Swaminathanwritten in one language to call code written in another language. The 33*1fd5a2e1SPrashanth Swaminathanlibffi library really only provides the lowest, machine dependent 34*1fd5a2e1SPrashanth Swaminathanlayer of a fully featured foreign function interface. A layer must 35*1fd5a2e1SPrashanth Swaminathanexist above libffi that handles type conversions for values passed 36*1fd5a2e1SPrashanth Swaminathanbetween the two languages. 37*1fd5a2e1SPrashanth Swaminathan 38*1fd5a2e1SPrashanth Swaminathan 39*1fd5a2e1SPrashanth SwaminathanSupported Platforms 40*1fd5a2e1SPrashanth Swaminathan=================== 41*1fd5a2e1SPrashanth Swaminathan 42*1fd5a2e1SPrashanth SwaminathanLibffi has been ported to many different platforms. 43*1fd5a2e1SPrashanth SwaminathanFor specific configuration details and testing status, please 44*1fd5a2e1SPrashanth Swaminathanrefer to the wiki page here: 45*1fd5a2e1SPrashanth Swaminathan 46*1fd5a2e1SPrashanth Swaminathan http://www.moxielogic.org/wiki/index.php?title=Libffi_3.2 47*1fd5a2e1SPrashanth Swaminathan 48*1fd5a2e1SPrashanth SwaminathanAt the time of release, the following basic configurations have been 49*1fd5a2e1SPrashanth Swaminathantested: 50*1fd5a2e1SPrashanth Swaminathan 51*1fd5a2e1SPrashanth Swaminathan|-----------------+------------------+-------------------------| 52*1fd5a2e1SPrashanth Swaminathan| Architecture | Operating System | Compiler | 53*1fd5a2e1SPrashanth Swaminathan|-----------------+------------------+-------------------------| 54*1fd5a2e1SPrashanth Swaminathan| AArch64 (ARM64) | iOS | Clang | 55*1fd5a2e1SPrashanth Swaminathan| AArch64 | Linux | GCC | 56*1fd5a2e1SPrashanth Swaminathan| Alpha | Linux | GCC | 57*1fd5a2e1SPrashanth Swaminathan| Alpha | Tru64 | GCC | 58*1fd5a2e1SPrashanth Swaminathan| ARC | Linux | GCC | 59*1fd5a2e1SPrashanth Swaminathan| ARM | Linux | GCC | 60*1fd5a2e1SPrashanth Swaminathan| ARM | iOS | GCC | 61*1fd5a2e1SPrashanth Swaminathan| AVR32 | Linux | GCC | 62*1fd5a2e1SPrashanth Swaminathan| Blackfin | uClinux | GCC | 63*1fd5a2e1SPrashanth Swaminathan| HPPA | HPUX | GCC | 64*1fd5a2e1SPrashanth Swaminathan| IA-64 | Linux | GCC | 65*1fd5a2e1SPrashanth Swaminathan| M68K | FreeMiNT | GCC | 66*1fd5a2e1SPrashanth Swaminathan| M68K | Linux | GCC | 67*1fd5a2e1SPrashanth Swaminathan| M68K | RTEMS | GCC | 68*1fd5a2e1SPrashanth Swaminathan| M88K | OpenBSD/mvme88k | GCC | 69*1fd5a2e1SPrashanth Swaminathan| Meta | Linux | GCC | 70*1fd5a2e1SPrashanth Swaminathan| MicroBlaze | Linux | GCC | 71*1fd5a2e1SPrashanth Swaminathan| MIPS | IRIX | GCC | 72*1fd5a2e1SPrashanth Swaminathan| MIPS | Linux | GCC | 73*1fd5a2e1SPrashanth Swaminathan| MIPS | RTEMS | GCC | 74*1fd5a2e1SPrashanth Swaminathan| MIPS64 | Linux | GCC | 75*1fd5a2e1SPrashanth Swaminathan| Moxie | Bare metal | GCC | 76*1fd5a2e1SPrashanth Swaminathan| Nios II | Linux | GCC | 77*1fd5a2e1SPrashanth Swaminathan| OpenRISC | Linux | GCC | 78*1fd5a2e1SPrashanth Swaminathan| PowerPC 32-bit | AIX | IBM XL C | 79*1fd5a2e1SPrashanth Swaminathan| PowerPC 64-bit | AIX | IBM XL C | 80*1fd5a2e1SPrashanth Swaminathan| PowerPC | AMIGA | GCC | 81*1fd5a2e1SPrashanth Swaminathan| PowerPC | Linux | GCC | 82*1fd5a2e1SPrashanth Swaminathan| PowerPC | Mac OSX | GCC | 83*1fd5a2e1SPrashanth Swaminathan| PowerPC | FreeBSD | GCC | 84*1fd5a2e1SPrashanth Swaminathan| PowerPC 64-bit | FreeBSD | GCC | 85*1fd5a2e1SPrashanth Swaminathan| PowerPC 64-bit | Linux ELFv1 | GCC | 86*1fd5a2e1SPrashanth Swaminathan| PowerPC 64-bit | Linux ELFv2 | GCC | 87*1fd5a2e1SPrashanth Swaminathan| S390 | Linux | GCC | 88*1fd5a2e1SPrashanth Swaminathan| S390X | Linux | GCC | 89*1fd5a2e1SPrashanth Swaminathan| SPARC | Linux | GCC | 90*1fd5a2e1SPrashanth Swaminathan| SPARC | Solaris | GCC | 91*1fd5a2e1SPrashanth Swaminathan| SPARC | Solaris | Oracle Solaris Studio C | 92*1fd5a2e1SPrashanth Swaminathan| SPARC64 | Linux | GCC | 93*1fd5a2e1SPrashanth Swaminathan| SPARC64 | FreeBSD | GCC | 94*1fd5a2e1SPrashanth Swaminathan| SPARC64 | Solaris | Oracle Solaris Studio C | 95*1fd5a2e1SPrashanth Swaminathan| TILE-Gx/TILEPro | Linux | GCC | 96*1fd5a2e1SPrashanth Swaminathan| VAX | OpenBSD/vax | GCC | 97*1fd5a2e1SPrashanth Swaminathan| X86 | FreeBSD | GCC | 98*1fd5a2e1SPrashanth Swaminathan| X86 | GNU HURD | GCC | 99*1fd5a2e1SPrashanth Swaminathan| X86 | Interix | GCC | 100*1fd5a2e1SPrashanth Swaminathan| X86 | kFreeBSD | GCC | 101*1fd5a2e1SPrashanth Swaminathan| X86 | Linux | GCC | 102*1fd5a2e1SPrashanth Swaminathan| X86 | Mac OSX | GCC | 103*1fd5a2e1SPrashanth Swaminathan| X86 | OpenBSD | GCC | 104*1fd5a2e1SPrashanth Swaminathan| X86 | OS/2 | GCC | 105*1fd5a2e1SPrashanth Swaminathan| X86 | Solaris | GCC | 106*1fd5a2e1SPrashanth Swaminathan| X86 | Solaris | Oracle Solaris Studio C | 107*1fd5a2e1SPrashanth Swaminathan| X86 | Windows/Cygwin | GCC | 108*1fd5a2e1SPrashanth Swaminathan| X86 | Windows/MingW | GCC | 109*1fd5a2e1SPrashanth Swaminathan| X86-64 | FreeBSD | GCC | 110*1fd5a2e1SPrashanth Swaminathan| X86-64 | Linux | GCC | 111*1fd5a2e1SPrashanth Swaminathan| X86-64 | Linux/x32 | GCC | 112*1fd5a2e1SPrashanth Swaminathan| X86-64 | OpenBSD | GCC | 113*1fd5a2e1SPrashanth Swaminathan| X86-64 | Solaris | Oracle Solaris Studio C | 114*1fd5a2e1SPrashanth Swaminathan| X86-64 | Windows/Cygwin | GCC | 115*1fd5a2e1SPrashanth Swaminathan| X86-64 | Windows/MingW | GCC | 116*1fd5a2e1SPrashanth Swaminathan| Xtensa | Linux | GCC | 117*1fd5a2e1SPrashanth Swaminathan|-----------------+------------------+-------------------------| 118*1fd5a2e1SPrashanth Swaminathan 119*1fd5a2e1SPrashanth SwaminathanPlease send additional platform test results to 120*1fd5a2e1SPrashanth Swaminathan[email protected] and feel free to update the wiki page 121*1fd5a2e1SPrashanth Swaminathanabove. 122*1fd5a2e1SPrashanth Swaminathan 123*1fd5a2e1SPrashanth SwaminathanInstalling libffi 124*1fd5a2e1SPrashanth Swaminathan================= 125*1fd5a2e1SPrashanth Swaminathan 126*1fd5a2e1SPrashanth SwaminathanFirst you must configure the distribution for your particular 127*1fd5a2e1SPrashanth Swaminathansystem. Go to the directory you wish to build libffi in and run the 128*1fd5a2e1SPrashanth Swaminathan"configure" program found in the root directory of the libffi source 129*1fd5a2e1SPrashanth Swaminathandistribution. 130*1fd5a2e1SPrashanth Swaminathan 131*1fd5a2e1SPrashanth SwaminathanIf you're building libffi directly from version control, configure won't 132*1fd5a2e1SPrashanth Swaminathanexist yet; run ./autogen.sh first. 133*1fd5a2e1SPrashanth Swaminathan 134*1fd5a2e1SPrashanth SwaminathanYou may want to tell configure where to install the libffi library and 135*1fd5a2e1SPrashanth Swaminathanheader files. To do that, use the --prefix configure switch. Libffi 136*1fd5a2e1SPrashanth Swaminathanwill install under /usr/local by default. 137*1fd5a2e1SPrashanth Swaminathan 138*1fd5a2e1SPrashanth SwaminathanIf you want to enable extra run-time debugging checks use the the 139*1fd5a2e1SPrashanth Swaminathan--enable-debug configure switch. This is useful when your program dies 140*1fd5a2e1SPrashanth Swaminathanmysteriously while using libffi. 141*1fd5a2e1SPrashanth Swaminathan 142*1fd5a2e1SPrashanth SwaminathanAnother useful configure switch is --enable-purify-safety. Using this 143*1fd5a2e1SPrashanth Swaminathanwill add some extra code which will suppress certain warnings when you 144*1fd5a2e1SPrashanth Swaminathanare using Purify with libffi. Only use this switch when using 145*1fd5a2e1SPrashanth SwaminathanPurify, as it will slow down the library. 146*1fd5a2e1SPrashanth Swaminathan 147*1fd5a2e1SPrashanth SwaminathanIt's also possible to build libffi on Windows platforms with 148*1fd5a2e1SPrashanth SwaminathanMicrosoft's Visual C++ compiler. In this case, use the msvcc.sh 149*1fd5a2e1SPrashanth Swaminathanwrapper script during configuration like so: 150*1fd5a2e1SPrashanth Swaminathan 151*1fd5a2e1SPrashanth Swaminathanpath/to/configure CC=path/to/msvcc.sh CXX=path/to/msvcc.sh LD=link CPP="cl -nologo -EP" 152*1fd5a2e1SPrashanth Swaminathan 153*1fd5a2e1SPrashanth SwaminathanFor 64-bit Windows builds, use CC="path/to/msvcc.sh -m64" and 154*1fd5a2e1SPrashanth SwaminathanCXX="path/to/msvcc.sh -m64". You may also need to specify --build 155*1fd5a2e1SPrashanth Swaminathanappropriately. 156*1fd5a2e1SPrashanth Swaminathan 157*1fd5a2e1SPrashanth SwaminathanIt is also possible to build libffi on Windows platforms with the LLVM 158*1fd5a2e1SPrashanth Swaminathanproject's clang-cl compiler, like below: 159*1fd5a2e1SPrashanth Swaminathan 160*1fd5a2e1SPrashanth Swaminathanpath/to/configure CC="path/to/msvcc.sh -clang-cl" CXX="path/to/msvcc.sh -clang-cl" LD=link CPP="clang-cl -EP" 161*1fd5a2e1SPrashanth Swaminathan 162*1fd5a2e1SPrashanth SwaminathanWhen building with MSVC under a MingW environment, you may need to 163*1fd5a2e1SPrashanth Swaminathanremove the line in configure that sets 'fix_srcfile_path' to a 'cygpath' 164*1fd5a2e1SPrashanth Swaminathancommand. ('cygpath' is not present in MingW, and is not required when 165*1fd5a2e1SPrashanth Swaminathanusing MingW-style paths.) 166*1fd5a2e1SPrashanth Swaminathan 167*1fd5a2e1SPrashanth SwaminathanFor iOS builds, the 'libffi.xcodeproj' Xcode project is available. 168*1fd5a2e1SPrashanth Swaminathan 169*1fd5a2e1SPrashanth SwaminathanConfigure has many other options. Use "configure --help" to see them all. 170*1fd5a2e1SPrashanth Swaminathan 171*1fd5a2e1SPrashanth SwaminathanOnce configure has finished, type "make". Note that you must be using 172*1fd5a2e1SPrashanth SwaminathanGNU make. You can ftp GNU make from ftp.gnu.org:/pub/gnu/make . 173*1fd5a2e1SPrashanth Swaminathan 174*1fd5a2e1SPrashanth SwaminathanTo ensure that libffi is working as advertised, type "make check". 175*1fd5a2e1SPrashanth SwaminathanThis will require that you have DejaGNU installed. 176*1fd5a2e1SPrashanth Swaminathan 177*1fd5a2e1SPrashanth SwaminathanTo install the library and header files, type "make install". 178*1fd5a2e1SPrashanth Swaminathan 179*1fd5a2e1SPrashanth Swaminathan 180*1fd5a2e1SPrashanth SwaminathanHistory 181*1fd5a2e1SPrashanth Swaminathan======= 182*1fd5a2e1SPrashanth Swaminathan 183*1fd5a2e1SPrashanth SwaminathanSee the git log for details at http://github.com/atgreen/libffi. 184*1fd5a2e1SPrashanth Swaminathan 185*1fd5a2e1SPrashanth Swaminathan3.2.1 Nov-12-14 186*1fd5a2e1SPrashanth Swaminathan Build fix for non-iOS AArch64 targets. 187*1fd5a2e1SPrashanth Swaminathan 188*1fd5a2e1SPrashanth Swaminathan3.2 Nov-11-14 189*1fd5a2e1SPrashanth Swaminathan Add C99 Complex Type support (currently only supported on 190*1fd5a2e1SPrashanth Swaminathan s390). 191*1fd5a2e1SPrashanth Swaminathan Add support for PASCAL and REGISTER calling conventions on x86 192*1fd5a2e1SPrashanth Swaminathan Windows/Linux. 193*1fd5a2e1SPrashanth Swaminathan Add OpenRISC and Cygwin-64 support. 194*1fd5a2e1SPrashanth Swaminathan Bug fixes. 195*1fd5a2e1SPrashanth Swaminathan 196*1fd5a2e1SPrashanth Swaminathan3.1 May-19-14 197*1fd5a2e1SPrashanth Swaminathan Add AArch64 (ARM64) iOS support. 198*1fd5a2e1SPrashanth Swaminathan Add Nios II support. 199*1fd5a2e1SPrashanth Swaminathan Add m88k and DEC VAX support. 200*1fd5a2e1SPrashanth Swaminathan Add support for stdcall, thiscall, and fastcall on non-Windows 201*1fd5a2e1SPrashanth Swaminathan 32-bit x86 targets such as Linux. 202*1fd5a2e1SPrashanth Swaminathan Various Android, MIPS N32, x86, FreeBSD and UltraSPARC IIi 203*1fd5a2e1SPrashanth Swaminathan fixes. 204*1fd5a2e1SPrashanth Swaminathan Make the testsuite more robust: eliminate several spurious 205*1fd5a2e1SPrashanth Swaminathan failures, and respect the $CC and $CXX environment variables. 206*1fd5a2e1SPrashanth Swaminathan Archive off the manually maintained ChangeLog in favor of git 207*1fd5a2e1SPrashanth Swaminathan log. 208*1fd5a2e1SPrashanth Swaminathan 209*1fd5a2e1SPrashanth Swaminathan3.0.13 Mar-17-13 210*1fd5a2e1SPrashanth Swaminathan Add Meta support. 211*1fd5a2e1SPrashanth Swaminathan Add missing Moxie bits. 212*1fd5a2e1SPrashanth Swaminathan Fix stack alignment bug on 32-bit x86. 213*1fd5a2e1SPrashanth Swaminathan Build fix for m68000 targets. 214*1fd5a2e1SPrashanth Swaminathan Build fix for soft-float Power targets. 215*1fd5a2e1SPrashanth Swaminathan Fix the install dir location for some platforms when building 216*1fd5a2e1SPrashanth Swaminathan with GCC (OS X, Solaris). 217*1fd5a2e1SPrashanth Swaminathan Fix Cygwin regression. 218*1fd5a2e1SPrashanth Swaminathan 219*1fd5a2e1SPrashanth Swaminathan3.0.12 Feb-11-13 220*1fd5a2e1SPrashanth Swaminathan Add Moxie support. 221*1fd5a2e1SPrashanth Swaminathan Add AArch64 support. 222*1fd5a2e1SPrashanth Swaminathan Add Blackfin support. 223*1fd5a2e1SPrashanth Swaminathan Add TILE-Gx/TILEPro support. 224*1fd5a2e1SPrashanth Swaminathan Add MicroBlaze support. 225*1fd5a2e1SPrashanth Swaminathan Add Xtensa support. 226*1fd5a2e1SPrashanth Swaminathan Add support for PaX enabled kernels with MPROTECT. 227*1fd5a2e1SPrashanth Swaminathan Add support for native vendor compilers on 228*1fd5a2e1SPrashanth Swaminathan Solaris and AIX. 229*1fd5a2e1SPrashanth Swaminathan Work around LLVM/GCC interoperability issue on x86_64. 230*1fd5a2e1SPrashanth Swaminathan 231*1fd5a2e1SPrashanth Swaminathan3.0.11 Apr-11-12 232*1fd5a2e1SPrashanth Swaminathan Lots of build fixes. 233*1fd5a2e1SPrashanth Swaminathan Add support for variadic functions (ffi_prep_cif_var). 234*1fd5a2e1SPrashanth Swaminathan Add Linux/x32 support. 235*1fd5a2e1SPrashanth Swaminathan Add thiscall, fastcall and MSVC cdecl support on Windows. 236*1fd5a2e1SPrashanth Swaminathan Add Amiga and newer MacOS support. 237*1fd5a2e1SPrashanth Swaminathan Add m68k FreeMiNT support. 238*1fd5a2e1SPrashanth Swaminathan Integration with iOS' xcode build tools. 239*1fd5a2e1SPrashanth Swaminathan Fix Octeon and MC68881 support. 240*1fd5a2e1SPrashanth Swaminathan Fix code pessimizations. 241*1fd5a2e1SPrashanth Swaminathan 242*1fd5a2e1SPrashanth Swaminathan3.0.10 Aug-23-11 243*1fd5a2e1SPrashanth Swaminathan Add support for Apple's iOS. 244*1fd5a2e1SPrashanth Swaminathan Add support for ARM VFP ABI. 245*1fd5a2e1SPrashanth Swaminathan Add RTEMS support for MIPS and M68K. 246*1fd5a2e1SPrashanth Swaminathan Fix instruction cache clearing problems on 247*1fd5a2e1SPrashanth Swaminathan ARM and SPARC. 248*1fd5a2e1SPrashanth Swaminathan Fix the N64 build on mips-sgi-irix6.5. 249*1fd5a2e1SPrashanth Swaminathan Enable builds with Microsoft's compiler. 250*1fd5a2e1SPrashanth Swaminathan Enable x86 builds with Oracle's Solaris compiler. 251*1fd5a2e1SPrashanth Swaminathan Fix support for calling code compiled with Oracle's Sparc 252*1fd5a2e1SPrashanth Swaminathan Solaris compiler. 253*1fd5a2e1SPrashanth Swaminathan Testsuite fixes for Tru64 Unix. 254*1fd5a2e1SPrashanth Swaminathan Additional platform support. 255*1fd5a2e1SPrashanth Swaminathan 256*1fd5a2e1SPrashanth Swaminathan3.0.9 Dec-31-09 257*1fd5a2e1SPrashanth Swaminathan Add AVR32 and win64 ports. Add ARM softfp support. 258*1fd5a2e1SPrashanth Swaminathan Many fixes for AIX, Solaris, HP-UX, *BSD. 259*1fd5a2e1SPrashanth Swaminathan Several PowerPC and x86-64 bug fixes. 260*1fd5a2e1SPrashanth Swaminathan Build DLL for windows. 261*1fd5a2e1SPrashanth Swaminathan 262*1fd5a2e1SPrashanth Swaminathan3.0.8 Dec-19-08 263*1fd5a2e1SPrashanth Swaminathan Add *BSD, BeOS, and PA-Linux support. 264*1fd5a2e1SPrashanth Swaminathan 265*1fd5a2e1SPrashanth Swaminathan3.0.7 Nov-11-08 266*1fd5a2e1SPrashanth Swaminathan Fix for ppc FreeBSD. 267*1fd5a2e1SPrashanth Swaminathan (thanks to Andreas Tobler) 268*1fd5a2e1SPrashanth Swaminathan 269*1fd5a2e1SPrashanth Swaminathan3.0.6 Jul-17-08 270*1fd5a2e1SPrashanth Swaminathan Fix for closures on sh. 271*1fd5a2e1SPrashanth Swaminathan Mark the sh/sh64 stack as non-executable. 272*1fd5a2e1SPrashanth Swaminathan (both thanks to Kaz Kojima) 273*1fd5a2e1SPrashanth Swaminathan 274*1fd5a2e1SPrashanth Swaminathan3.0.5 Apr-3-08 275*1fd5a2e1SPrashanth Swaminathan Fix libffi.pc file. 276*1fd5a2e1SPrashanth Swaminathan Fix #define ARM for IcedTea users. 277*1fd5a2e1SPrashanth Swaminathan Fix x86 closure bug. 278*1fd5a2e1SPrashanth Swaminathan 279*1fd5a2e1SPrashanth Swaminathan3.0.4 Feb-24-08 280*1fd5a2e1SPrashanth Swaminathan Fix x86 OpenBSD configury. 281*1fd5a2e1SPrashanth Swaminathan 282*1fd5a2e1SPrashanth Swaminathan3.0.3 Feb-22-08 283*1fd5a2e1SPrashanth Swaminathan Enable x86 OpenBSD thanks to Thomas Heller, and 284*1fd5a2e1SPrashanth Swaminathan x86-64 FreeBSD thanks to Björn König and Andreas Tobler. 285*1fd5a2e1SPrashanth Swaminathan Clean up test instruction in README. 286*1fd5a2e1SPrashanth Swaminathan 287*1fd5a2e1SPrashanth Swaminathan3.0.2 Feb-21-08 288*1fd5a2e1SPrashanth Swaminathan Improved x86 FreeBSD support. 289*1fd5a2e1SPrashanth Swaminathan Thanks to Björn König. 290*1fd5a2e1SPrashanth Swaminathan 291*1fd5a2e1SPrashanth Swaminathan3.0.1 Feb-15-08 292*1fd5a2e1SPrashanth Swaminathan Fix instruction cache flushing bug on MIPS. 293*1fd5a2e1SPrashanth Swaminathan Thanks to David Daney. 294*1fd5a2e1SPrashanth Swaminathan 295*1fd5a2e1SPrashanth Swaminathan3.0.0 Feb-15-08 296*1fd5a2e1SPrashanth Swaminathan Many changes, mostly thanks to the GCC project. 297*1fd5a2e1SPrashanth Swaminathan Cygnus Solutions is now Red Hat. 298*1fd5a2e1SPrashanth Swaminathan 299*1fd5a2e1SPrashanth Swaminathan [10 years go by...] 300*1fd5a2e1SPrashanth Swaminathan 301*1fd5a2e1SPrashanth Swaminathan1.20 Oct-5-98 302*1fd5a2e1SPrashanth Swaminathan Raffaele Sena produces ARM port. 303*1fd5a2e1SPrashanth Swaminathan 304*1fd5a2e1SPrashanth Swaminathan1.19 Oct-5-98 305*1fd5a2e1SPrashanth Swaminathan Fixed x86 long double and long long return support. 306*1fd5a2e1SPrashanth Swaminathan m68k bug fixes from Andreas Schwab. 307*1fd5a2e1SPrashanth Swaminathan Patch for DU assembler compatibility for the Alpha from Richard 308*1fd5a2e1SPrashanth Swaminathan Henderson. 309*1fd5a2e1SPrashanth Swaminathan 310*1fd5a2e1SPrashanth Swaminathan1.18 Apr-17-98 311*1fd5a2e1SPrashanth Swaminathan Bug fixes and MIPS configuration changes. 312*1fd5a2e1SPrashanth Swaminathan 313*1fd5a2e1SPrashanth Swaminathan1.17 Feb-24-98 314*1fd5a2e1SPrashanth Swaminathan Bug fixes and m68k port from Andreas Schwab. PowerPC port from 315*1fd5a2e1SPrashanth Swaminathan Geoffrey Keating. Various bug x86, Sparc and MIPS bug fixes. 316*1fd5a2e1SPrashanth Swaminathan 317*1fd5a2e1SPrashanth Swaminathan1.16 Feb-11-98 318*1fd5a2e1SPrashanth Swaminathan Richard Henderson produces Alpha port. 319*1fd5a2e1SPrashanth Swaminathan 320*1fd5a2e1SPrashanth Swaminathan1.15 Dec-4-97 321*1fd5a2e1SPrashanth Swaminathan Fixed an n32 ABI bug. New libtool, auto* support. 322*1fd5a2e1SPrashanth Swaminathan 323*1fd5a2e1SPrashanth Swaminathan1.14 May-13-97 324*1fd5a2e1SPrashanth Swaminathan libtool is now used to generate shared and static libraries. 325*1fd5a2e1SPrashanth Swaminathan Fixed a minor portability problem reported by Russ McManus 326*1fd5a2e1SPrashanth Swaminathan <[email protected]>. 327*1fd5a2e1SPrashanth Swaminathan 328*1fd5a2e1SPrashanth Swaminathan1.13 Dec-2-96 329*1fd5a2e1SPrashanth Swaminathan Added --enable-purify-safety to keep Purify from complaining 330*1fd5a2e1SPrashanth Swaminathan about certain low level code. 331*1fd5a2e1SPrashanth Swaminathan Sparc fix for calling functions with < 6 args. 332*1fd5a2e1SPrashanth Swaminathan Linux x86 a.out fix. 333*1fd5a2e1SPrashanth Swaminathan 334*1fd5a2e1SPrashanth Swaminathan1.12 Nov-22-96 335*1fd5a2e1SPrashanth Swaminathan Added missing ffi_type_void, needed for supporting void return 336*1fd5a2e1SPrashanth Swaminathan types. Fixed test case for non MIPS machines. Cygnus Support 337*1fd5a2e1SPrashanth Swaminathan is now Cygnus Solutions. 338*1fd5a2e1SPrashanth Swaminathan 339*1fd5a2e1SPrashanth Swaminathan1.11 Oct-30-96 340*1fd5a2e1SPrashanth Swaminathan Added notes about GNU make. 341*1fd5a2e1SPrashanth Swaminathan 342*1fd5a2e1SPrashanth Swaminathan1.10 Oct-29-96 343*1fd5a2e1SPrashanth Swaminathan Added configuration fix for non GNU compilers. 344*1fd5a2e1SPrashanth Swaminathan 345*1fd5a2e1SPrashanth Swaminathan1.09 Oct-29-96 346*1fd5a2e1SPrashanth Swaminathan Added --enable-debug configure switch. Clean-ups based on LCLint 347*1fd5a2e1SPrashanth Swaminathan feedback. ffi_mips.h is always installed. Many configuration 348*1fd5a2e1SPrashanth Swaminathan fixes. Fixed ffitest.c for sparc builds. 349*1fd5a2e1SPrashanth Swaminathan 350*1fd5a2e1SPrashanth Swaminathan1.08 Oct-15-96 351*1fd5a2e1SPrashanth Swaminathan Fixed n32 problem. Many clean-ups. 352*1fd5a2e1SPrashanth Swaminathan 353*1fd5a2e1SPrashanth Swaminathan1.07 Oct-14-96 354*1fd5a2e1SPrashanth Swaminathan Gordon Irlam rewrites v8.S again. Bug fixes. 355*1fd5a2e1SPrashanth Swaminathan 356*1fd5a2e1SPrashanth Swaminathan1.06 Oct-14-96 357*1fd5a2e1SPrashanth Swaminathan Gordon Irlam improved the sparc port. 358*1fd5a2e1SPrashanth Swaminathan 359*1fd5a2e1SPrashanth Swaminathan1.05 Oct-14-96 360*1fd5a2e1SPrashanth Swaminathan Interface changes based on feedback. 361*1fd5a2e1SPrashanth Swaminathan 362*1fd5a2e1SPrashanth Swaminathan1.04 Oct-11-96 363*1fd5a2e1SPrashanth Swaminathan Sparc port complete (modulo struct passing bug). 364*1fd5a2e1SPrashanth Swaminathan 365*1fd5a2e1SPrashanth Swaminathan1.03 Oct-10-96 366*1fd5a2e1SPrashanth Swaminathan Passing struct args, and returning struct values works for 367*1fd5a2e1SPrashanth Swaminathan all architectures/calling conventions. Expanded tests. 368*1fd5a2e1SPrashanth Swaminathan 369*1fd5a2e1SPrashanth Swaminathan1.02 Oct-9-96 370*1fd5a2e1SPrashanth Swaminathan Added SGI n32 support. Fixed bugs in both o32 and Linux support. 371*1fd5a2e1SPrashanth Swaminathan Added "make test". 372*1fd5a2e1SPrashanth Swaminathan 373*1fd5a2e1SPrashanth Swaminathan1.01 Oct-8-96 374*1fd5a2e1SPrashanth Swaminathan Fixed float passing bug in mips version. Restructured some 375*1fd5a2e1SPrashanth Swaminathan of the code. Builds cleanly with SGI tools. 376*1fd5a2e1SPrashanth Swaminathan 377*1fd5a2e1SPrashanth Swaminathan1.00 Oct-7-96 378*1fd5a2e1SPrashanth Swaminathan First release. No public announcement. 379*1fd5a2e1SPrashanth Swaminathan 380*1fd5a2e1SPrashanth Swaminathan 381*1fd5a2e1SPrashanth SwaminathanAuthors & Credits 382*1fd5a2e1SPrashanth Swaminathan================= 383*1fd5a2e1SPrashanth Swaminathan 384*1fd5a2e1SPrashanth Swaminathanlibffi was originally written by Anthony Green <[email protected]>. 385*1fd5a2e1SPrashanth Swaminathan 386*1fd5a2e1SPrashanth SwaminathanThe developers of the GNU Compiler Collection project have made 387*1fd5a2e1SPrashanth Swaminathaninnumerable valuable contributions. See the ChangeLog file for 388*1fd5a2e1SPrashanth Swaminathandetails. 389*1fd5a2e1SPrashanth Swaminathan 390*1fd5a2e1SPrashanth SwaminathanSome of the ideas behind libffi were inspired by Gianni Mariani's free 391*1fd5a2e1SPrashanth Swaminathangencall library for Silicon Graphics machines. 392*1fd5a2e1SPrashanth Swaminathan 393*1fd5a2e1SPrashanth SwaminathanThe closure mechanism was designed and implemented by Kresten Krab 394*1fd5a2e1SPrashanth SwaminathanThorup. 395*1fd5a2e1SPrashanth Swaminathan 396*1fd5a2e1SPrashanth SwaminathanMajor processor architecture ports were contributed by the following 397*1fd5a2e1SPrashanth Swaminathandevelopers: 398*1fd5a2e1SPrashanth Swaminathan 399*1fd5a2e1SPrashanth Swaminathanaarch64 Marcus Shawcroft, James Greenhalgh 400*1fd5a2e1SPrashanth Swaminathanalpha Richard Henderson 401*1fd5a2e1SPrashanth Swaminathanarm Raffaele Sena 402*1fd5a2e1SPrashanth Swaminathanblackfin Alexandre Keunecke I. de Mendonca 403*1fd5a2e1SPrashanth Swaminathancris Simon Posnjak, Hans-Peter Nilsson 404*1fd5a2e1SPrashanth Swaminathanfrv Anthony Green 405*1fd5a2e1SPrashanth Swaminathania64 Hans Boehm 406*1fd5a2e1SPrashanth Swaminathanm32r Kazuhiro Inaoka 407*1fd5a2e1SPrashanth Swaminathanm68k Andreas Schwab 408*1fd5a2e1SPrashanth Swaminathanm88k Miod Vallat 409*1fd5a2e1SPrashanth Swaminathanmicroblaze Nathan Rossi 410*1fd5a2e1SPrashanth Swaminathanmips Anthony Green, Casey Marshall 411*1fd5a2e1SPrashanth Swaminathanmips64 David Daney 412*1fd5a2e1SPrashanth Swaminathanmoxie Anthony Green 413*1fd5a2e1SPrashanth Swaminathannios ii Sandra Loosemore 414*1fd5a2e1SPrashanth Swaminathanopenrisc Sebastian Macke 415*1fd5a2e1SPrashanth Swaminathanpa Randolph Chung, Dave Anglin, Andreas Tobler 416*1fd5a2e1SPrashanth Swaminathanpowerpc Geoffrey Keating, Andreas Tobler, 417*1fd5a2e1SPrashanth Swaminathan David Edelsohn, John Hornkvist 418*1fd5a2e1SPrashanth Swaminathanpowerpc64 Jakub Jelinek 419*1fd5a2e1SPrashanth Swaminathans390 Gerhard Tonn, Ulrich Weigand 420*1fd5a2e1SPrashanth Swaminathansh Kaz Kojima 421*1fd5a2e1SPrashanth Swaminathansh64 Kaz Kojima 422*1fd5a2e1SPrashanth Swaminathansparc Anthony Green, Gordon Irlam 423*1fd5a2e1SPrashanth Swaminathantile-gx/tilepro Walter Lee 424*1fd5a2e1SPrashanth Swaminathanvax Miod Vallat 425*1fd5a2e1SPrashanth Swaminathanx86 Anthony Green, Jon Beniston 426*1fd5a2e1SPrashanth Swaminathanx86-64 Bo Thorsen 427*1fd5a2e1SPrashanth Swaminathanxtensa Chris Zankel 428*1fd5a2e1SPrashanth Swaminathan 429*1fd5a2e1SPrashanth SwaminathanJesper Skov and Andrew Haley both did more than their fair share of 430*1fd5a2e1SPrashanth Swaminathanstepping through the code and tracking down bugs. 431*1fd5a2e1SPrashanth Swaminathan 432*1fd5a2e1SPrashanth SwaminathanThanks also to Tom Tromey for bug fixes, documentation and 433*1fd5a2e1SPrashanth Swaminathanconfiguration help. 434*1fd5a2e1SPrashanth Swaminathan 435*1fd5a2e1SPrashanth SwaminathanThanks to Jim Blandy, who provided some useful feedback on the libffi 436*1fd5a2e1SPrashanth Swaminathaninterface. 437*1fd5a2e1SPrashanth Swaminathan 438*1fd5a2e1SPrashanth SwaminathanAndreas Tobler has done a tremendous amount of work on the testsuite. 439*1fd5a2e1SPrashanth Swaminathan 440*1fd5a2e1SPrashanth SwaminathanAlex Oliva solved the executable page problem for SElinux. 441*1fd5a2e1SPrashanth Swaminathan 442*1fd5a2e1SPrashanth SwaminathanThe list above is almost certainly incomplete and inaccurate. I'm 443*1fd5a2e1SPrashanth Swaminathanhappy to make corrections or additions upon request. 444*1fd5a2e1SPrashanth Swaminathan 445*1fd5a2e1SPrashanth SwaminathanIf you have a problem, or have found a bug, please send a note to the 446*1fd5a2e1SPrashanth Swaminathanauthor at [email protected], or the project mailing list at 447*1fd5a2e1SPrashanth Swaminathan[email protected]. 448