Merge pull request #268 from frida/fix/aarch64-large-aggregates
[libffi.git] / README
diff --git a/README b/README
index f8c7cba..5984c45 100644 (file)
--- a/README
+++ b/README
@@ -1,8 +1,8 @@
 Status
 ======
 
-libffi-3.0.12 was released on XXXXXXX.  Check the libffi web page for
-updates: <URL:http://sourceware.org/libffi/>.
+libffi-4?? was released on TBD.  Check the libffi web
+page for updates: <URL:http://sourceware.org/libffi/>.
 
 
 What is libffi?
@@ -43,57 +43,78 @@ Libffi has been ported to many different platforms.
 For specific configuration details and testing status, please
 refer to the wiki page here:
 
- http://www.moxielogic.org/wiki/index.php?title=Libffi_3.0.11
+ http://www.moxielogic.org/wiki/index.php?title=Libffi_3.2
 
 At the time of release, the following basic configurations have been
 tested:
 
-|-----------------+------------------|
-| Architecture    | Operating System |
-|-----------------+------------------|
-| AArch64         | Linux            |
-| Alpha           | Linux            |
-| Alpha           | Tru64            |
-| ARM             | Linux            |
-| ARM             | iOS              |
-| AVR32           | Linux            |
-| Blackfin        | uClinux          |
-| HPPA            | HPUX             |
-| IA-64           | Linux            |
-| M68K            | FreeMiNT         |
-| M68K            | RTEMS            |
-| MIPS            | IRIX             |
-| MIPS            | Linux            |
-| MIPS            | RTEMS            |
-| MIPS64          | Linux            |
-| PowerPC         | AMIGA            |
-| PowerPC         | Linux            |
-| PowerPC         | Mac OSX          |
-| PowerPC         | FreeBSD          |
-| PowerPC64       | Linux            |
-| S390            | Linux            |
-| S390X           | Linux            |
-| SPARC           | Linux            |
-| SPARC           | Solaris          |
-| SPARC64         | Linux            |
-| SPARC64         | FreeBSD          |
-| TILE-Gx/TILEPro | Linux            |
-| X86             | FreeBSD          |
-| X86             | Interix          |
-| X86             | kFreeBSD         |
-| X86             | Linux            |
-| X86             | Mac OSX          |
-| X86             | OpenBSD          |
-| X86             | OS/2             |
-| X86             | Solaris          |
-| X86             | Windows/Cygwin   |
-| X86             | Windows/MingW    |
-| X86-64          | FreeBSD          |
-| X86-64          | Linux            |
-| X86-64          | Linux/x32        |
-| X86-64          | OpenBSD          |
-| X86-64          | Windows/MingW    |
-|-----------------+------------------|
+|-----------------+------------------+-------------------------|
+| Architecture    | Operating System | Compiler                |
+|-----------------+------------------+-------------------------|
+| AArch64 (ARM64) | iOS              | Clang                   |
+| AArch64         | Linux            | GCC                     |
+| Alpha           | Linux            | GCC                     |
+| Alpha           | Tru64            | GCC                     |
+| ARC             | Linux            | GCC                     |
+| ARM             | Linux            | GCC                     |
+| ARM             | iOS              | GCC                     |
+| AVR32           | Linux            | GCC                     |
+| Blackfin        | uClinux          | GCC                     |
+| HPPA            | HPUX             | GCC                     |
+| IA-64           | Linux            | GCC                     |
+| M68K            | FreeMiNT         | GCC                     |
+| M68K            | Linux            | GCC                     |
+| M68K            | RTEMS            | GCC                     |
+| M88K            | OpenBSD/mvme88k  | GCC                     |
+| Meta            | Linux            | GCC                     |
+| MicroBlaze      | Linux            | GCC                     |
+| MIPS            | IRIX             | GCC                     |
+| MIPS            | Linux            | GCC                     |
+| MIPS            | RTEMS            | GCC                     |
+| MIPS64          | Linux            | GCC                     |
+| Moxie           | Bare metal       | GCC                     |
+| Nios II         | Linux            | GCC                     |
+| OpenRISC        | Linux            | GCC                     |
+| PowerPC 32-bit  | AIX              | IBM XL C                |
+| PowerPC 64-bit  | AIX              | IBM XL C                |
+| PowerPC         | AMIGA            | GCC                     |
+| PowerPC         | Linux            | GCC                     |
+| PowerPC         | Mac OSX          | GCC                     |
+| PowerPC         | FreeBSD          | GCC                     |
+| PowerPC 64-bit  | FreeBSD          | GCC                     |
+| PowerPC 64-bit  | Linux ELFv1      | GCC                     |
+| PowerPC 64-bit  | Linux ELFv2      | GCC                     |
+| S390            | Linux            | GCC                     |
+| S390X           | Linux            | GCC                     |
+| SPARC           | Linux            | GCC                     |
+| SPARC           | Solaris          | GCC                     |
+| SPARC           | Solaris          | Oracle Solaris Studio C |
+| SPARC64         | Linux            | GCC                     |
+| SPARC64         | FreeBSD          | GCC                     |
+| SPARC64         | Solaris          | Oracle Solaris Studio C |
+| TILE-Gx/TILEPro | Linux            | GCC                     |
+| VAX             | OpenBSD/vax      | GCC                     |
+| X86             | FreeBSD          | GCC                     |
+| X86             | GNU HURD         | GCC                     |
+| X86             | Interix          | GCC                     |
+| X86             | kFreeBSD         | GCC                     |
+| X86             | Linux            | GCC                     |
+| X86             | Mac OSX          | GCC                     |
+| X86             | OpenBSD          | GCC                     |
+| X86             | OS/2             | GCC                     |
+| X86             | Solaris          | GCC                     |
+| X86             | Solaris          | Oracle Solaris Studio C |
+| X86             | Windows/Cygwin   | GCC                     |
+| X86             | Windows/MingW    | GCC                     |
+| X86-64          | FreeBSD          | GCC                     |
+| X86-64          | Linux            | GCC                     |
+| X86-64          | Linux/x32        | GCC                     |
+| X86-64          | OpenBSD          | GCC                     |
+| X86-64          | Solaris          | Oracle Solaris Studio C |
+| X86-64          | Windows/Cygwin   | GCC                     |
+| X86-64          | Windows/MingW    | GCC                     |
+| Xtensa          | Linux            | GCC                     |
+|-----------------+------------------+-------------------------|
 
 Please send additional platform test results to
 libffi-discuss@sourceware.org and feel free to update the wiki page
@@ -107,6 +128,9 @@ system. Go to the directory you wish to build libffi in and run the
 "configure" program found in the root directory of the libffi source
 distribution.
 
+If you're building libffi directly from version control, configure won't
+exist yet; run ./autogen.sh first.
+
 You may want to tell configure where to install the libffi library and
 header files. To do that, use the --prefix configure switch.  Libffi
 will install under /usr/local by default. 
@@ -120,24 +144,35 @@ will add some extra code which will suppress certain warnings when you
 are using Purify with libffi. Only use this switch when using 
 Purify, as it will slow down the library.
 
+If you don't want to build documentation, use the --disable-docs
+configure switch.
+
 It's also possible to build libffi on Windows platforms with
 Microsoft's Visual C++ compiler.  In this case, use the msvcc.sh
 wrapper script during configuration like so:
 
-path/to/configure CC=path/to/msvcc.sh LD=link CPP=\"cl -nologo -EP\"
+path/to/configure CC=path/to/msvcc.sh CXX=path/to/msvcc.sh LD=link CPP="cl -nologo -EP"
+
+For 64-bit Windows builds, use CC="path/to/msvcc.sh -m64" and
+CXX="path/to/msvcc.sh -m64".  You may also need to specify --build
+appropriately.
+
+It is also possible to build libffi on Windows platforms with the LLVM
+project's clang-cl compiler, like below:
 
-For 64-bit Windows builds, use CC="path/to/msvcc.sh -m64".
-You may also need to specify --build appropriately. When building with MSVC
-under a MingW environment, you may need to remove the line in configure
-that sets 'fix_srcfile_path' to a 'cygpath' command. ('cygpath' is not
-present in MingW, and is not required when using MingW-style paths.)
+path/to/configure CC="path/to/msvcc.sh -clang-cl" CXX="path/to/msvcc.sh -clang-cl" LD=link CPP="clang-cl -EP"
+
+When building with MSVC under a MingW environment, you may need to
+remove the line in configure that sets 'fix_srcfile_path' to a 'cygpath'
+command.  ('cygpath' is not present in MingW, and is not required when
+using MingW-style paths.)
 
 For iOS builds, the 'libffi.xcodeproj' Xcode project is available.
 
 Configure has many other options. Use "configure --help" to see them all.
 
 Once configure has finished, type "make". Note that you must be using
-GNU make.  You can ftp GNU make from prep.ai.mit.edu:/pub/gnu.
+GNU make.  You can ftp GNU make from ftp.gnu.org:/pub/gnu/make .
 
 To ensure that libffi is working as advertised, type "make check".
 This will require that you have DejaGNU installed.
@@ -148,17 +183,59 @@ To install the library and header files, type "make install".
 History
 =======
 
-See the ChangeLog files for details.
-
-3.0.12 XXX-XX-XX
+See the git log for details at http://github.com/libffi/libffi.
+
+4.0 TBD
+        New API in support of GO closures.
+
+3.2.1 Nov-12-14
+        Build fix for non-iOS AArch64 targets.
+
+3.2 Nov-11-14
+        Add C99 Complex Type support (currently only supported on
+          s390).
+       Add support for PASCAL and REGISTER calling conventions on x86
+         Windows/Linux.
+       Add OpenRISC and Cygwin-64 support.
+        Bug fixes.
+
+3.1 May-19-14
+        Add AArch64 (ARM64) iOS support.
+        Add Nios II support.
+        Add m88k and DEC VAX support.
+       Add support for stdcall, thiscall, and fastcall on non-Windows
+         32-bit x86 targets such as Linux.
+       Various Android, MIPS N32, x86, FreeBSD and UltraSPARC IIi
+         fixes.
+       Make the testsuite more robust: eliminate several spurious
+         failures, and respect the $CC and $CXX environment variables.
+       Archive off the manually maintained ChangeLog in favor of git
+         log.
+
+3.0.13 Mar-17-13
+       Add Meta support.
+       Add missing Moxie bits.
+       Fix stack alignment bug on 32-bit x86.
+       Build fix for m68000 targets.
+       Build fix for soft-float Power targets.
+       Fix the install dir location for some platforms when building
+         with GCC (OS X, Solaris).
+       Fix Cygwin regression.
+
+3.0.12 Feb-11-13
+        Add Moxie support.
+       Add AArch64 support.
        Add Blackfin support.
        Add TILE-Gx/TILEPro support.
-       Add AArch64 support.
+       Add MicroBlaze support.
+       Add Xtensa support.
        Add support for PaX enabled kernels with MPROTECT.
+       Add support for native vendor compilers on
+         Solaris and AIX.
+       Work around LLVM/GCC interoperability issue on x86_64.
 
 3.0.11 Apr-11-12
         Lots of build fixes.
-       Add Amiga newer MacOS support.
        Add support for variadic functions (ffi_prep_cif_var).
        Add Linux/x32 support.
        Add thiscall, fastcall and MSVC cdecl support on Windows.
@@ -310,7 +387,7 @@ See the ChangeLog files for details.
 Authors & Credits
 =================
 
-libffi was originally written by Anthony Green <green@redhat.com>.
+libffi was originally written by Anthony Green <green@moxielogic.com>.
 
 The developers of the GNU Compiler Collection project have made
 innumerable valuable contributions.  See the ChangeLog file for
@@ -334,8 +411,13 @@ frv                Anthony Green
 ia64           Hans Boehm
 m32r           Kazuhiro Inaoka
 m68k           Andreas Schwab
+m88k           Miod Vallat
+microblaze     Nathan Rossi
 mips           Anthony Green, Casey Marshall
 mips64         David Daney
+moxie          Anthony Green
+nios ii                Sandra Loosemore
+openrisc        Sebastian Macke
 pa             Randolph Chung, Dave Anglin, Andreas Tobler
 powerpc                Geoffrey Keating, Andreas Tobler, 
                         David Edelsohn, John Hornkvist
@@ -345,8 +427,10 @@ sh         Kaz Kojima
 sh64           Kaz Kojima
 sparc          Anthony Green, Gordon Irlam
 tile-gx/tilepro Walter Lee
+vax            Miod Vallat
 x86            Anthony Green, Jon Beniston
 x86-64         Bo Thorsen
+xtensa         Chris Zankel
 
 Jesper Skov and Andrew Haley both did more than their fair share of
 stepping through the code and tracking down bugs.