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