blob: 3d6ce44319589dbf3408b075af6863a564318bd1 [file] [log] [blame] [view]
Anthony Greenc6dddbd2009-10-04 08:11:33 -04001Status
2======
3
Anthony Greene8f5a432018-03-13 09:27:00 -04004[![Build Status](https://travis-ci.org/libffi/libffi.svg?branch=master)](https://travis-ci.org/libffi/libffi)
5[![Build status](https://ci.appveyor.com/api/projects/status/8lko9vagbx4w2kxq?svg=true)](https://ci.appveyor.com/project/atgreen/libffi)
Anthony Greena31d3d32018-03-13 09:11:24 -04006
Anthony Greend996cb22019-11-23 09:00:14 -05007libffi-3.3 was released on November 23, 2019. Check the libffi web
Anthony Green67c0c072014-11-11 07:30:49 -05008page for updates: <URL:http://sourceware.org/libffi/>.
Anthony Greenc6dddbd2009-10-04 08:11:33 -04009
10
11What is libffi?
12===============
13
14Compilers for high level languages generate code that follow certain
15conventions. These conventions are necessary, in part, for separate
16compilation to work. One such convention is the "calling
17convention". The "calling convention" is essentially a set of
18assumptions made by the compiler about where function arguments will
19be found on entry to a function. A "calling convention" also specifies
20where the return value for a function is found.
21
22Some programs may not know at the time of compilation what arguments
23are to be passed to a function. For instance, an interpreter may be
24told at run-time about the number and types of arguments used to call
25a given function. Libffi can be used in such programs to provide a
26bridge from the interpreter program to compiled code.
27
28The libffi library provides a portable, high level programming
29interface to various calling conventions. This allows a programmer to
30call any function specified by a call interface description at run
31time.
32
33FFI stands for Foreign Function Interface. A foreign function
34interface is the popular name for the interface that allows code
35written in one language to call code written in another language. The
36libffi library really only provides the lowest, machine dependent
37layer of a fully featured foreign function interface. A layer must
38exist above libffi that handles type conversions for values passed
39between the two languages.
40
41
42Supported Platforms
43===================
44
Anthony Green0cfe60e2009-12-29 10:06:04 -050045Libffi has been ported to many different platforms.
Anthony Green0cfe60e2009-12-29 10:06:04 -050046
47At the time of release, the following basic configurations have been
48tested:
49
Anthony Greencd41aea2013-01-10 17:25:45 -050050| Architecture | Operating System | Compiler |
Anthony Green3a29a272018-03-13 09:14:40 -040051| --------------- | ---------------- | ----------------------- |
Anthony Green6ae046c2013-11-30 21:06:51 -050052| AArch64 (ARM64) | iOS | Clang |
Anthony Greencd41aea2013-01-10 17:25:45 -050053| AArch64 | Linux | GCC |
ossdev07d8567432019-06-26 07:31:22 +053054| AArch64 | Windows | MSVC |
Anthony Greencd41aea2013-01-10 17:25:45 -050055| Alpha | Linux | GCC |
56| Alpha | Tru64 | GCC |
Mischa Jonkerb082e152013-06-10 16:19:33 +020057| ARC | Linux | GCC |
Anthony Greencd41aea2013-01-10 17:25:45 -050058| ARM | Linux | GCC |
59| ARM | iOS | GCC |
Paul Monsondb5706f2019-04-26 04:58:58 -070060| ARM | Windows | MSVC |
Anthony Greencd41aea2013-01-10 17:25:45 -050061| AVR32 | Linux | GCC |
62| Blackfin | uClinux | GCC |
63| HPPA | HPUX | GCC |
64| IA-64 | Linux | GCC |
65| M68K | FreeMiNT | GCC |
Anthony Greenff062692013-10-08 06:32:18 -040066| M68K | Linux | GCC |
Anthony Greencd41aea2013-01-10 17:25:45 -050067| M68K | RTEMS | GCC |
Anthony Greenff062692013-10-08 06:32:18 -040068| M88K | OpenBSD/mvme88k | GCC |
Anthony Green2fb527a2013-03-16 07:46:38 -040069| Meta | Linux | GCC |
Anthony Greenaeb87192013-01-21 07:37:30 -050070| MicroBlaze | Linux | GCC |
Anthony Greencd41aea2013-01-10 17:25:45 -050071| MIPS | IRIX | GCC |
72| MIPS | Linux | GCC |
73| MIPS | RTEMS | GCC |
74| MIPS64 | Linux | GCC |
Anthony Greenff062692013-10-08 06:32:18 -040075| Moxie | Bare metal | GCC |
Sandra Loosemore16b93a22013-10-15 15:33:59 -040076| Nios II | Linux | GCC |
Sebastian Macke0f316ab2014-09-27 00:19:15 +000077| OpenRISC | Linux | GCC |
Anthony Green10e77222013-02-10 08:47:26 -050078| PowerPC 32-bit | AIX | IBM XL C |
79| PowerPC 64-bit | AIX | IBM XL C |
Anthony Greencd41aea2013-01-10 17:25:45 -050080| PowerPC | AMIGA | GCC |
81| PowerPC | Linux | GCC |
82| PowerPC | Mac OSX | GCC |
83| PowerPC | FreeBSD | GCC |
Anthony Green10e77222013-02-10 08:47:26 -050084| PowerPC 64-bit | FreeBSD | GCC |
Anthony Green2f450822013-11-18 06:52:29 -050085| PowerPC 64-bit | Linux ELFv1 | GCC |
86| PowerPC 64-bit | Linux ELFv2 | GCC |
Stef O'Rear3840d492018-03-11 05:55:15 -070087| RISC-V 32-bit | Linux | GCC |
88| RISC-V 64-bit | Linux | GCC |
Anthony Greencd41aea2013-01-10 17:25:45 -050089| S390 | Linux | GCC |
90| S390X | Linux | GCC |
91| SPARC | Linux | GCC |
92| SPARC | Solaris | GCC |
Anthony Greenbff052d2013-01-11 10:24:32 -050093| SPARC | Solaris | Oracle Solaris Studio C |
Anthony Greencd41aea2013-01-10 17:25:45 -050094| SPARC64 | Linux | GCC |
95| SPARC64 | FreeBSD | GCC |
Anthony Greenbff052d2013-01-11 10:24:32 -050096| SPARC64 | Solaris | Oracle Solaris Studio C |
Anthony Greencd41aea2013-01-10 17:25:45 -050097| TILE-Gx/TILEPro | Linux | GCC |
Anthony Greenff062692013-10-08 06:32:18 -040098| VAX | OpenBSD/vax | GCC |
Anthony Greencd41aea2013-01-10 17:25:45 -050099| X86 | FreeBSD | GCC |
Anthony Green10e77222013-02-10 08:47:26 -0500100| X86 | GNU HURD | GCC |
Anthony Greencd41aea2013-01-10 17:25:45 -0500101| X86 | Interix | GCC |
102| X86 | kFreeBSD | GCC |
103| X86 | Linux | GCC |
104| X86 | Mac OSX | GCC |
105| X86 | OpenBSD | GCC |
106| X86 | OS/2 | GCC |
107| X86 | Solaris | GCC |
108| X86 | Solaris | Oracle Solaris Studio C |
109| X86 | Windows/Cygwin | GCC |
110| X86 | Windows/MingW | GCC |
111| X86-64 | FreeBSD | GCC |
112| X86-64 | Linux | GCC |
113| X86-64 | Linux/x32 | GCC |
114| X86-64 | OpenBSD | GCC |
115| X86-64 | Solaris | Oracle Solaris Studio C |
Anthony Greenf920a012014-09-20 06:54:06 -0400116| X86-64 | Windows/Cygwin | GCC |
Anthony Greencd41aea2013-01-10 17:25:45 -0500117| X86-64 | Windows/MingW | GCC |
Jakub Kaszyckibfab4292016-04-01 21:42:41 +0200118| X86-64 | Mac OSX | GCC |
Anthony Green20cae322013-01-21 07:07:38 -0500119| Xtensa | Linux | GCC |
Anthony Green2e7e03d2009-12-31 07:43:22 -0500120
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400121Please send additional platform test results to
Anthony Greene6bdbd72018-03-27 04:46:04 -0400122libffi-discuss@sourceware.org.
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400123
124Installing libffi
125=================
126
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400127First you must configure the distribution for your particular
128system. Go to the directory you wish to build libffi in and run the
129"configure" program found in the root directory of the libffi source
Anthony Green33da6c02018-03-27 05:07:08 -0400130distribution. Note that building libffi requires a C99 compatible
131compiler.
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400132
Anthony Green33da6c02018-03-27 05:07:08 -0400133If you're building libffi directly from git hosted sources, configure
134won't exist yet; run ./autogen.sh first. This will require that you
135install autoconf, automake and libtool.
Josh Triplett35634db2014-03-15 18:11:16 -0700136
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400137You may want to tell configure where to install the libffi library and
Anthony Green6f7c29c2018-03-24 08:40:04 -0400138header files. To do that, use the ``--prefix`` configure switch. Libffi
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400139will install under /usr/local by default.
140
141If you want to enable extra run-time debugging checks use the the
Anthony Green6f7c29c2018-03-24 08:40:04 -0400142``--enable-debug`` configure switch. This is useful when your program dies
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400143mysteriously while using libffi.
144
Anthony Green6f7c29c2018-03-24 08:40:04 -0400145Another useful configure switch is ``--enable-purify-safety``. Using this
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400146will add some extra code which will suppress certain warnings when you
147are using Purify with libffi. Only use this switch when using
148Purify, as it will slow down the library.
149
Anthony Green6f7c29c2018-03-24 08:40:04 -0400150If you don't want to build documentation, use the ``--disable-docs``
Berker Peksag2627fc92016-03-07 18:43:03 +0200151configure switch.
152
Anthony Greenff3cd682010-01-15 11:27:24 -0500153It's also possible to build libffi on Windows platforms with
154Microsoft's Visual C++ compiler. In this case, use the msvcc.sh
155wrapper script during configuration like so:
156
Anthony Greenc95cc4b2019-11-06 06:30:20 -0500157 path/to/configure CC=path/to/msvcc.sh CXX=path/to/msvcc.sh LD=link CPP="cl -nologo -EP" CPPFLAGS="-DFFI_BUILDING_DLL"
Anthony Green9dc9a292010-04-13 10:33:52 -0400158
Anthony Green6d2233f2018-03-23 09:06:08 -0400159For 64-bit Windows builds, use ``CC="path/to/msvcc.sh -m64"`` and
160``CXX="path/to/msvcc.sh -m64"``. You may also need to specify
161``--build`` appropriately.
Josh Triplettd74df8c2014-03-27 00:44:12 -0700162
Ehsan Akhgarifb25cd02014-06-11 12:07:24 -0400163It is also possible to build libffi on Windows platforms with the LLVM
164project's clang-cl compiler, like below:
165
Anthony Greenc95cc4b2019-11-06 06:30:20 -0500166 path/to/configure CC="path/to/msvcc.sh -clang-cl" CXX="path/to/msvcc.sh -clang-cl" LD=link CPP="clang-cl -EP"
Ehsan Akhgarifb25cd02014-06-11 12:07:24 -0400167
Josh Triplettd74df8c2014-03-27 00:44:12 -0700168When building with MSVC under a MingW environment, you may need to
169remove the line in configure that sets 'fix_srcfile_path' to a 'cygpath'
170command. ('cygpath' is not present in MingW, and is not required when
171using MingW-style paths.)
Anthony Greenff3cd682010-01-15 11:27:24 -0500172
ossdev07d8567432019-06-26 07:31:22 +0530173To build static library for ARM64 with MSVC using visual studio solution, msvc_build folder have
174 aarch64/Ffi_staticLib.sln
175 required header files in aarch64/aarch64_include/
176
177
Anthony Green6d2233f2018-03-23 09:06:08 -0400178SPARC Solaris builds require the use of the GNU assembler and linker.
179Point ``AS`` and ``LD`` environment variables at those tool prior to
180configuration.
Anthony Greenf4983182011-02-09 06:26:46 -0500181
Anthony Green6d2233f2018-03-23 09:06:08 -0400182For iOS builds, the ``libffi.xcodeproj`` Xcode project is available.
183
184Configure has many other options. Use ``configure --help`` to see them all.
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400185
186Once configure has finished, type "make". Note that you must be using
Anthony Green10e77222013-02-10 08:47:26 -0500187GNU make. You can ftp GNU make from ftp.gnu.org:/pub/gnu/make .
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400188
189To ensure that libffi is working as advertised, type "make check".
190This will require that you have DejaGNU installed.
191
Anthony Green6d2233f2018-03-23 09:06:08 -0400192To install the library and header files, type ``make install``.
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400193
194
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400195History
196=======
197
Berker Peksag1b4f5ee2016-05-18 11:12:58 +0300198See the git log for details at http://github.com/libffi/libffi.
Anthony Greenf7c0bc62009-12-25 01:22:11 -0500199
Anthony Greend996cb22019-11-23 09:00:14 -0500200 3.3 Nov-23-19
Anthony Green6d2233f2018-03-23 09:06:08 -0400201 Add RISC-V support.
202 New API in support of GO closures.
Anthony Green34a3a662019-11-21 04:59:39 -0500203 Add IEEE754 binary128 long double support for 64-bit Power
Anthony Green43980dd2018-03-18 12:32:10 -0400204 Default to Microsoft's 64 bit long double ABI with Visual C++.
ossdev07d8567432019-06-26 07:31:22 +0530205 GNU compiler uses 80 bits (128 in memory) FFI_GNUW64 ABI.
Anthony Greenb6804d12019-11-17 09:19:14 -0500206 Add Windows on ARM64 (WOA) support.
207 Add Windows 32-bit ARM support.
Anthony Green34a3a662019-11-21 04:59:39 -0500208 Raw java (gcj) API deprecated.
Anthony Greend996cb22019-11-23 09:00:14 -0500209 Add pre-built PDF documentation to source distribution.
ossdev07d8567432019-06-26 07:31:22 +0530210 Many new tests cases and bug fixes.
Paul Monsondb5706f2019-04-26 04:58:58 -0700211
Anthony Green785351f2018-03-13 09:21:49 -0400212 3.2.1 Nov-12-14
Anthony Greend9742072018-03-17 09:03:42 -0400213 Build fix for non-iOS AArch64 targets.
Anthony Green785351f2018-03-13 09:21:49 -0400214
215 3.2 Nov-11-14
Anthony Greend9742072018-03-17 09:03:42 -0400216 Add C99 Complex Type support (currently only supported on
217 s390).
Anthony Green99a80d22018-03-18 21:22:55 -0400218 Add support for PASCAL and REGISTER calling conventions on x86
219 Windows/Linux.
220 Add OpenRISC and Cygwin-64 support.
Anthony Greend9742072018-03-17 09:03:42 -0400221 Bug fixes.
Anthony Green785351f2018-03-13 09:21:49 -0400222
223 3.1 May-19-14
Anthony Greend9742072018-03-17 09:03:42 -0400224 Add AArch64 (ARM64) iOS support.
225 Add Nios II support.
226 Add m88k and DEC VAX support.
Anthony Green99a80d22018-03-18 21:22:55 -0400227 Add support for stdcall, thiscall, and fastcall on non-Windows
228 32-bit x86 targets such as Linux.
229 Various Android, MIPS N32, x86, FreeBSD and UltraSPARC IIi
230 fixes.
231 Make the testsuite more robust: eliminate several spurious
232 failures, and respect the $CC and $CXX environment variables.
233 Archive off the manually maintained ChangeLog in favor of git
234 log.
Anthony Green785351f2018-03-13 09:21:49 -0400235
236 3.0.13 Mar-17-13
Anthony Green99a80d22018-03-18 21:22:55 -0400237 Add Meta support.
238 Add missing Moxie bits.
239 Fix stack alignment bug on 32-bit x86.
240 Build fix for m68000 targets.
241 Build fix for soft-float Power targets.
242 Fix the install dir location for some platforms when building
243 with GCC (OS X, Solaris).
244 Fix Cygwin regression.
Anthony Green785351f2018-03-13 09:21:49 -0400245
246 3.0.12 Feb-11-13
Anthony Greend9742072018-03-17 09:03:42 -0400247 Add Moxie support.
Anthony Green99a80d22018-03-18 21:22:55 -0400248 Add AArch64 support.
249 Add Blackfin support.
250 Add TILE-Gx/TILEPro support.
251 Add MicroBlaze support.
252 Add Xtensa support.
253 Add support for PaX enabled kernels with MPROTECT.
254 Add support for native vendor compilers on
255 Solaris and AIX.
256 Work around LLVM/GCC interoperability issue on x86_64.
Anthony Green785351f2018-03-13 09:21:49 -0400257
258 3.0.11 Apr-11-12
Anthony Greend9742072018-03-17 09:03:42 -0400259 Lots of build fixes.
Anthony Green99a80d22018-03-18 21:22:55 -0400260 Add support for variadic functions (ffi_prep_cif_var).
261 Add Linux/x32 support.
262 Add thiscall, fastcall and MSVC cdecl support on Windows.
263 Add Amiga and newer MacOS support.
264 Add m68k FreeMiNT support.
265 Integration with iOS' xcode build tools.
266 Fix Octeon and MC68881 support.
267 Fix code pessimizations.
Anthony Green785351f2018-03-13 09:21:49 -0400268
269 3.0.10 Aug-23-11
Anthony Greend9742072018-03-17 09:03:42 -0400270 Add support for Apple's iOS.
Anthony Green99a80d22018-03-18 21:22:55 -0400271 Add support for ARM VFP ABI.
Anthony Greend9742072018-03-17 09:03:42 -0400272 Add RTEMS support for MIPS and M68K.
Anthony Green99a80d22018-03-18 21:22:55 -0400273 Fix instruction cache clearing problems on
274 ARM and SPARC.
275 Fix the N64 build on mips-sgi-irix6.5.
276 Enable builds with Microsoft's compiler.
277 Enable x86 builds with Oracle's Solaris compiler.
278 Fix support for calling code compiled with Oracle's Sparc
279 Solaris compiler.
280 Testsuite fixes for Tru64 Unix.
281 Additional platform support.
Anthony Green785351f2018-03-13 09:21:49 -0400282
283 3.0.9 Dec-31-09
Anthony Greend9742072018-03-17 09:03:42 -0400284 Add AVR32 and win64 ports. Add ARM softfp support.
Anthony Green99a80d22018-03-18 21:22:55 -0400285 Many fixes for AIX, Solaris, HP-UX, *BSD.
286 Several PowerPC and x86-64 bug fixes.
287 Build DLL for windows.
Anthony Green785351f2018-03-13 09:21:49 -0400288
289 3.0.8 Dec-19-08
Anthony Greend9742072018-03-17 09:03:42 -0400290 Add *BSD, BeOS, and PA-Linux support.
Anthony Green785351f2018-03-13 09:21:49 -0400291
292 3.0.7 Nov-11-08
Anthony Greend9742072018-03-17 09:03:42 -0400293 Fix for ppc FreeBSD.
Anthony Green99a80d22018-03-18 21:22:55 -0400294 (thanks to Andreas Tobler)
Anthony Green785351f2018-03-13 09:21:49 -0400295
296 3.0.6 Jul-17-08
Anthony Greend9742072018-03-17 09:03:42 -0400297 Fix for closures on sh.
Anthony Green99a80d22018-03-18 21:22:55 -0400298 Mark the sh/sh64 stack as non-executable.
299 (both thanks to Kaz Kojima)
Anthony Green785351f2018-03-13 09:21:49 -0400300
301 3.0.5 Apr-3-08
Anthony Greend9742072018-03-17 09:03:42 -0400302 Fix libffi.pc file.
Anthony Green99a80d22018-03-18 21:22:55 -0400303 Fix #define ARM for IcedTea users.
304 Fix x86 closure bug.
Anthony Green785351f2018-03-13 09:21:49 -0400305
306 3.0.4 Feb-24-08
Anthony Greend9742072018-03-17 09:03:42 -0400307 Fix x86 OpenBSD configury.
Anthony Green785351f2018-03-13 09:21:49 -0400308
309 3.0.3 Feb-22-08
Anthony Greend9742072018-03-17 09:03:42 -0400310 Enable x86 OpenBSD thanks to Thomas Heller, and
Anthony Green99a80d22018-03-18 21:22:55 -0400311 x86-64 FreeBSD thanks to Björn König and Andreas Tobler.
312 Clean up test instruction in README.
Anthony Green785351f2018-03-13 09:21:49 -0400313
314 3.0.2 Feb-21-08
Anthony Greend9742072018-03-17 09:03:42 -0400315 Improved x86 FreeBSD support.
Anthony Green99a80d22018-03-18 21:22:55 -0400316 Thanks to Björn König.
Anthony Green785351f2018-03-13 09:21:49 -0400317
318 3.0.1 Feb-15-08
Anthony Greend9742072018-03-17 09:03:42 -0400319 Fix instruction cache flushing bug on MIPS.
Anthony Green99a80d22018-03-18 21:22:55 -0400320 Thanks to David Daney.
Anthony Green785351f2018-03-13 09:21:49 -0400321
322 3.0.0 Feb-15-08
Anthony Greend9742072018-03-17 09:03:42 -0400323 Many changes, mostly thanks to the GCC project.
Anthony Green99a80d22018-03-18 21:22:55 -0400324 Cygnus Solutions is now Red Hat.
Anthony Green785351f2018-03-13 09:21:49 -0400325
326 [10 years go by...]
327
328 1.20 Oct-5-98
Anthony Green99a80d22018-03-18 21:22:55 -0400329 Raffaele Sena produces ARM port.
Anthony Green785351f2018-03-13 09:21:49 -0400330
331 1.19 Oct-5-98
Anthony Green99a80d22018-03-18 21:22:55 -0400332 Fixed x86 long double and long long return support.
333 m68k bug fixes from Andreas Schwab.
334 Patch for DU assembler compatibility for the Alpha from Richard
335 Henderson.
Anthony Green785351f2018-03-13 09:21:49 -0400336
337 1.18 Apr-17-98
Anthony Green99a80d22018-03-18 21:22:55 -0400338 Bug fixes and MIPS configuration changes.
Anthony Green785351f2018-03-13 09:21:49 -0400339
340 1.17 Feb-24-98
Anthony Green99a80d22018-03-18 21:22:55 -0400341 Bug fixes and m68k port from Andreas Schwab. PowerPC port from
342 Geoffrey Keating. Various bug x86, Sparc and MIPS bug fixes.
Anthony Green785351f2018-03-13 09:21:49 -0400343
344 1.16 Feb-11-98
Anthony Green99a80d22018-03-18 21:22:55 -0400345 Richard Henderson produces Alpha port.
Anthony Green785351f2018-03-13 09:21:49 -0400346
347 1.15 Dec-4-97
Anthony Green99a80d22018-03-18 21:22:55 -0400348 Fixed an n32 ABI bug. New libtool, auto* support.
Anthony Green785351f2018-03-13 09:21:49 -0400349
350 1.14 May-13-97
Anthony Green99a80d22018-03-18 21:22:55 -0400351 libtool is now used to generate shared and static libraries.
352 Fixed a minor portability problem reported by Russ McManus
353 <mcmanr@eq.gs.com>.
Anthony Green785351f2018-03-13 09:21:49 -0400354
355 1.13 Dec-2-96
Anthony Green99a80d22018-03-18 21:22:55 -0400356 Added --enable-purify-safety to keep Purify from complaining
357 about certain low level code.
358 Sparc fix for calling functions with < 6 args.
359 Linux x86 a.out fix.
Anthony Green785351f2018-03-13 09:21:49 -0400360
361 1.12 Nov-22-96
Anthony Green99a80d22018-03-18 21:22:55 -0400362 Added missing ffi_type_void, needed for supporting void return
363 types. Fixed test case for non MIPS machines. Cygnus Support
364 is now Cygnus Solutions.
Anthony Green785351f2018-03-13 09:21:49 -0400365
366 1.11 Oct-30-96
Anthony Green99a80d22018-03-18 21:22:55 -0400367 Added notes about GNU make.
Anthony Green785351f2018-03-13 09:21:49 -0400368
369 1.10 Oct-29-96
Anthony Green99a80d22018-03-18 21:22:55 -0400370 Added configuration fix for non GNU compilers.
Anthony Green785351f2018-03-13 09:21:49 -0400371
372 1.09 Oct-29-96
Anthony Green99a80d22018-03-18 21:22:55 -0400373 Added --enable-debug configure switch. Clean-ups based on LCLint
374 feedback. ffi_mips.h is always installed. Many configuration
375 fixes. Fixed ffitest.c for sparc builds.
Anthony Green785351f2018-03-13 09:21:49 -0400376
377 1.08 Oct-15-96
Anthony Green99a80d22018-03-18 21:22:55 -0400378 Fixed n32 problem. Many clean-ups.
Anthony Green785351f2018-03-13 09:21:49 -0400379
380 1.07 Oct-14-96
Anthony Green99a80d22018-03-18 21:22:55 -0400381 Gordon Irlam rewrites v8.S again. Bug fixes.
Anthony Green785351f2018-03-13 09:21:49 -0400382
383 1.06 Oct-14-96
Anthony Green99a80d22018-03-18 21:22:55 -0400384 Gordon Irlam improved the sparc port.
Anthony Green785351f2018-03-13 09:21:49 -0400385
386 1.05 Oct-14-96
Anthony Green99a80d22018-03-18 21:22:55 -0400387 Interface changes based on feedback.
Anthony Green785351f2018-03-13 09:21:49 -0400388
389 1.04 Oct-11-96
Anthony Green99a80d22018-03-18 21:22:55 -0400390 Sparc port complete (modulo struct passing bug).
Anthony Green785351f2018-03-13 09:21:49 -0400391
392 1.03 Oct-10-96
Anthony Green99a80d22018-03-18 21:22:55 -0400393 Passing struct args, and returning struct values works for
394 all architectures/calling conventions. Expanded tests.
Anthony Green785351f2018-03-13 09:21:49 -0400395
396 1.02 Oct-9-96
Anthony Green99a80d22018-03-18 21:22:55 -0400397 Added SGI n32 support. Fixed bugs in both o32 and Linux support.
398 Added "make test".
Anthony Green785351f2018-03-13 09:21:49 -0400399
400 1.01 Oct-8-96
Anthony Green99a80d22018-03-18 21:22:55 -0400401 Fixed float passing bug in mips version. Restructured some
402 of the code. Builds cleanly with SGI tools.
Anthony Green785351f2018-03-13 09:21:49 -0400403
404 1.00 Oct-7-96
Anthony Green99a80d22018-03-18 21:22:55 -0400405 First release. No public announcement.
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400406
407Authors & Credits
408=================
409
Anthony Green666f3e72013-10-26 09:12:42 -0400410libffi was originally written by Anthony Green <green@moxielogic.com>.
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400411
412The developers of the GNU Compiler Collection project have made
413innumerable valuable contributions. See the ChangeLog file for
414details.
415
416Some of the ideas behind libffi were inspired by Gianni Mariani's free
417gencall library for Silicon Graphics machines.
418
419The closure mechanism was designed and implemented by Kresten Krab
420Thorup.
421
422Major processor architecture ports were contributed by the following
423developers:
424
Anthony Greena3e87ac2018-03-18 20:36:52 -0400425 aarch64 Marcus Shawcroft, James Greenhalgh
426 alpha Richard Henderson
Anthony Greend01088a2019-11-21 05:36:06 -0500427 arc Hackers at Synopsis
Anthony Greena3e87ac2018-03-18 20:36:52 -0400428 arm Raffaele Sena
Anthony Greend01088a2019-11-21 05:36:06 -0500429 avr32 Bradley Smith
Anthony Greena3e87ac2018-03-18 20:36:52 -0400430 blackfin Alexandre Keunecke I. de Mendonca
431 cris Simon Posnjak, Hans-Peter Nilsson
432 frv Anthony Green
433 ia64 Hans Boehm
434 m32r Kazuhiro Inaoka
435 m68k Andreas Schwab
436 m88k Miod Vallat
Anthony Greend01088a2019-11-21 05:36:06 -0500437 metag Hackers at Imagination Technologies
Anthony Greena3e87ac2018-03-18 20:36:52 -0400438 microblaze Nathan Rossi
439 mips Anthony Green, Casey Marshall
440 mips64 David Daney
441 moxie Anthony Green
442 nios ii Sandra Loosemore
443 openrisc Sebastian Macke
444 pa Randolph Chung, Dave Anglin, Andreas Tobler
445 powerpc Geoffrey Keating, Andreas Tobler,
446 David Edelsohn, John Hornkvist
447 powerpc64 Jakub Jelinek
Anthony Greend01088a2019-11-21 05:36:06 -0500448 riscv Michael Knyszek, Andrew Waterman, Stef O'Rear
Anthony Greena3e87ac2018-03-18 20:36:52 -0400449 s390 Gerhard Tonn, Ulrich Weigand
450 sh Kaz Kojima
451 sh64 Kaz Kojima
452 sparc Anthony Green, Gordon Irlam
453 tile-gx/tilepro Walter Lee
454 vax Miod Vallat
455 x86 Anthony Green, Jon Beniston
456 x86-64 Bo Thorsen
457 xtensa Chris Zankel
Anthony Greenc6dddbd2009-10-04 08:11:33 -0400458
459Jesper Skov and Andrew Haley both did more than their fair share of
460stepping through the code and tracking down bugs.
461
462Thanks also to Tom Tromey for bug fixes, documentation and
463configuration help.
464
465Thanks to Jim Blandy, who provided some useful feedback on the libffi
466interface.
467
468Andreas Tobler has done a tremendous amount of work on the testsuite.
469
470Alex Oliva solved the executable page problem for SElinux.
471
472The list above is almost certainly incomplete and inaccurate. I'm
473happy to make corrections or additions upon request.
474
Anthony Green630b9c02011-02-09 06:24:23 -0500475If you have a problem, or have found a bug, please send a note to the
476author at green@moxielogic.com, or the project mailing list at
477libffi-discuss@sourceware.org.