187 lines
5.7 KiB
HTML
187 lines
5.7 KiB
HTML
<html>
|
|
</body>
|
|
<head>
|
|
<title>
|
|
libffi
|
|
</title>
|
|
</head>
|
|
|
|
<h1>The libffi Home Page</h1>
|
|
|
|
<b>libffi-1.20</b> was released on October 5, 1998. You can ftp it from <a href="ftp://ftp.cygnus.com:/pub/green/libffi-1.20.tar.gz">ftp.cygnus.com:/pub/green/libffi-1.20.tar.gz</a>.
|
|
|
|
<p>
|
|
If you wish to be notified of libffi releases by email, fill out <a href="libffi-form.html">this form</a>.
|
|
|
|
<h2>What is libffi?</h2>
|
|
|
|
Compilers for high level languages generate code that follow certain
|
|
conventions. These conventions are necessary, in part, for separate
|
|
compilation to work. One such convention is the "calling
|
|
convention". The "calling convention" is essentially a set of
|
|
assumptions made by the compiler about where function arguments will
|
|
be found on entry to a function. A "calling convention" also specifies
|
|
where the return value for a function is found.
|
|
|
|
<p>
|
|
|
|
Some programs may not know at the time of compilation what arguments
|
|
are to be passed to a function. For instance, an interpreter may be
|
|
told at run-time about the number and types of arguments used to call
|
|
a given function. Libffi can be used in such programs to provide a
|
|
bridge from the interpreter program to compiled code.
|
|
|
|
<p>
|
|
|
|
The libffi library provides a portable, high level programming
|
|
interface to various calling conventions. This allows a programmer to
|
|
call any function specified by a call interface description at run-time.
|
|
|
|
<p>
|
|
|
|
Ffi stands for Foreign Function Interface. A foreign function
|
|
interface is the popular name for the interface that allows code
|
|
written in one language to call code written in another language. The
|
|
libffi library really only provides the lowest, machine dependent
|
|
layer of a fully featured foreign function interface. A layer must
|
|
exist above libffi that handles type conversions for values passed
|
|
between the two languages.
|
|
|
|
<h2>Supported Platforms and Prerequisites</h2>
|
|
|
|
Libffi has been ported to:
|
|
|
|
<ul>
|
|
<li> SunOS 4.1.3 & Solaris 2.x (Sparc v8)
|
|
<li> Irix 5.3 & 6.2 (System V/o32 & n32)
|
|
<li> Intel x86 - Linux (System V ABI)
|
|
<li> Alpha Linux and OSF/1
|
|
<li> m68k - Linux (System V ABI)
|
|
<li> PowerPC - Linux (System V ABI)
|
|
<li> ARM - Linux (System V ABI)
|
|
</ul>
|
|
|
|
Libffi has been tested with the <a href="http://www.cygnus.com/egcs/">egcs</a> 1.0.2 gcc compiler. Chances are
|
|
that other versions will work. Libffi has also been built and tested
|
|
with the SGI compiler tools.
|
|
|
|
If you port libffi to another platform, please let me know! I assume
|
|
that some will be easy (x86 NetBSD), and others will be more difficult
|
|
(HP, AIX).
|
|
|
|
<h2>History</h2>
|
|
|
|
<pre>
|
|
1.20 Oct-5-98
|
|
Raffaele Sena produces ARM port.
|
|
|
|
1.19 Oct-5-98
|
|
Fixed x86 long double and long long return support.
|
|
m68k bug fixes from Andreas Schwab.
|
|
Patch for DU assembler compatibility for the Alpha from Richard
|
|
Henderson.
|
|
|
|
1.18 Apr-17-98
|
|
Bug fixes and MIPS configuration changes.
|
|
|
|
1.17 Feb-24-98
|
|
Bug fixes and m68k port from Andreas Schwab. PowerPC port from
|
|
Geoffrey Keating. Various bug x86, Sparc and MIPS bug fixes.
|
|
|
|
1.16 Feb-11-98
|
|
Richard Henderson produces Alpha port.
|
|
|
|
1.15 Dec-4-97
|
|
Fixed an n32 ABI bug. New libtool, auto* support.
|
|
|
|
1.14 May-13-96
|
|
libtool is now used to generate shared and static libraries.
|
|
Fixed a minor portability problem reported by Russ McManus
|
|
<mcmanr@eq.gs.com>.
|
|
|
|
1.13 Dec-2-96
|
|
Added --enable-purify-safety to keep Purify from complaining
|
|
about certain low level code.
|
|
Sparc fix for calling functions with < 6 args.
|
|
Linux x86 a.out fix.
|
|
|
|
1.12 Nov-22-96
|
|
Added missing ffi_type_void, needed for supporting void return
|
|
types. Fixed test case for non MIPS machines. Cygnus Support
|
|
is now Cygnus Solutions.
|
|
|
|
1.11 Oct-30-96
|
|
Added notes about GNU make.
|
|
|
|
1.10 Oct-29-96
|
|
Added configuration fix for non GNU compilers.
|
|
|
|
1.09 Oct-29-96
|
|
Added --enable-debug configure switch. Clean-ups based on LCLint
|
|
feedback. ffi_mips.h is always installed. Many configuration
|
|
fixes. Fixed ffitest.c for sparc builds.
|
|
|
|
1.08 Oct-15-96
|
|
Fixed n32 problem. Many clean-ups.
|
|
|
|
1.07 Oct-14-96
|
|
Gordon Irlam rewrites v8.S again. Bug fixes.
|
|
|
|
1.06 Oct-14-96
|
|
Gordon Irlam improved the sparc port.
|
|
|
|
1.05 Oct-14-96
|
|
Interface changes based on feedback.
|
|
|
|
1.04 Oct-11-96
|
|
Sparc port complete (modulo struct passing bug).
|
|
|
|
1.03 Oct-10-96
|
|
Passing struct args, and returning struct values works for
|
|
all architectures/calling conventions. Expanded tests.
|
|
|
|
1.02 Oct-9-96
|
|
Added SGI n32 support. Fixed bugs in both o32 and Linux support.
|
|
Added "make test".
|
|
|
|
1.01 Oct-8-96
|
|
Fixed float passing bug in mips version. Restructured some
|
|
of the code. Builds cleanly with SGI tools.
|
|
|
|
1.00 Oct-7-96
|
|
First release. No public announcement.
|
|
</pre>
|
|
|
|
<h2>Authors & Credits</h2>
|
|
|
|
Libffi was written by <b>Anthony Green</b>.
|
|
<p>
|
|
Portions of libffi were derived from <b>Gianni Mariani</b>'s free gencall
|
|
library for Silicon Graphics machines.
|
|
<p>
|
|
The sparc port was derived from code contributed by the fine folks at
|
|
<b><a href="http://www.vdi.com">Visible Decisions Inc</a></b>. Further enhancements were made by <b>Gordon Irlam</b> at <a href="http://www.cygnus.com">Cygnus Solutions</a>.
|
|
<p>
|
|
The Alpha port was written by <b>Richard Henderson</b> at Cygnus Solutions.
|
|
<p>
|
|
<b>Andreas Schwab</b> ported libffi to m68k Linux and provided a number of
|
|
bug fixes.
|
|
<p>
|
|
<b>Geoffrey Keating</b> ported libffi to the PowerPC.
|
|
<p>
|
|
<b>Raffaele Sena</b> ported libffi to the ARM.
|
|
<p>
|
|
<b>Jesper Skov</b> and <b>Andrew Haley</b> both did more than their fair share of
|
|
stepping through the code and tracking down bugs.
|
|
<p>
|
|
Thanks to <b>Tom Tromey</b> for bug fixes and configuration help.
|
|
<p>
|
|
Thanks also to <b>Jim Blandy</b>, who provided some useful feedback on the libffi
|
|
interface.
|
|
<p>
|
|
If you have a problem, or have found a bug, please send a note to
|
|
<a href="mailto:green@cygnus.com">green@cygnus.com</a>.
|
|
|
|
</body>
|
|
</html>
|