blob: 1a76d6f4e1c966adbf15982c0ddd5c028896be3e [file] [log] [blame]
green3ab5cb41998-11-29 16:56:10 +00001<html>
green334f0b01998-11-29 16:56:12 +00002<head>
3<title>
4libffi
5</title>
6</head>
jsmbfb73f01998-11-30 10:44:55 +00007<body>
green334f0b01998-11-29 16:56:12 +00008
9<h1>The libffi Home Page</h1>
10
greenaf8b7f01998-11-30 06:20:05 +000011<b>libffi-1.20</b> was released on October 5, 1998. You can ftp it
12from <a
13href="ftp://ftp.cygnus.com:/pub/green/libffi-1.20.tar.gz">ftp.cygnus.com:/pub/green/libffi-1.20.tar.gz</a>.
14However, newer code is available. See below for details.
green334f0b01998-11-29 16:56:12 +000015
16<p>
greenaf8b7f01998-11-30 06:20:05 +000017
18libffi is free software. It has a very <a
19href="http://sourceware.cygnus.com/cgi-bin/cvsweb.cgi/~checkout~/libffi/LICENSE?rev=1.1&cvsroot=libffi&hideattic=1&sortbydate=0">liberal
20license</a>.
green334f0b01998-11-29 16:56:12 +000021
22<h2>What is libffi?</h2>
23
jsmb4d77e81998-11-30 11:11:25 +000024Compilers for high level languages generate code that follows certain
green334f0b01998-11-29 16:56:12 +000025conventions. These conventions are necessary, in part, for separate
26compilation to work. One such convention is the "calling
greenaf8b7f01998-11-30 06:20:05 +000027convention". The "calling convention" is a set of assumptions made by
28the compiler about where function arguments will be found on entry to
29a function. A "calling convention" also specifies where the return
30value for a function is found.
green334f0b01998-11-29 16:56:12 +000031
32<p>
33
34Some programs may not know at the time of compilation what arguments
35are to be passed to a function. For instance, an interpreter may be
36told at run-time about the number and types of arguments used to call
37a given function. Libffi can be used in such programs to provide a
38bridge from the interpreter program to compiled code.
39
40<p>
41
42The libffi library provides a portable, high level programming
43interface to various calling conventions. This allows a programmer to
greenaf8b7f01998-11-30 06:20:05 +000044call any function specified by a call interface description at
45run-time.
green334f0b01998-11-29 16:56:12 +000046
47<p>
48
49Ffi stands for Foreign Function Interface. A foreign function
50interface is the popular name for the interface that allows code
51written in one language to call code written in another language. The
52libffi library really only provides the lowest, machine dependent
53layer of a fully featured foreign function interface. A layer must
54exist above libffi that handles type conversions for values passed
55between the two languages.
56
greenaf8b7f01998-11-30 06:20:05 +000057<h2>Supported Platforms</h2>
green334f0b01998-11-29 16:56:12 +000058
59Libffi has been ported to:
60
61<ul>
jsmbfb73f01998-11-30 10:44:55 +000062<li> SunOS 4.1.3 &amp; Solaris 2.x (Sparc v8)
63<li> Irix 5.3 &amp; 6.2 (System V/o32 &amp; n32)
green334f0b01998-11-29 16:56:12 +000064<li> Intel x86 - Linux (System V ABI)
65<li> Alpha Linux and OSF/1
66<li> m68k - Linux (System V ABI)
67<li> PowerPC - Linux (System V ABI)
68<li> ARM - Linux (System V ABI)
69</ul>
70
greenaf8b7f01998-11-30 06:20:05 +000071Libffi has been tested with the <a
72href="http://www.cygnus.com/egcs/">egcs</a> 1.0.2 gcc
73compiler. Chances are that other versions will work. Libffi has also
74been built and tested with the SGI compiler tools.
green334f0b01998-11-29 16:56:12 +000075
76If you port libffi to another platform, please let me know! I assume
77that some will be easy (x86 NetBSD), and others will be more difficult
78(HP, AIX).
79
greenaf8b7f01998-11-30 06:20:05 +000080<h2>How to get it</h2>
green334f0b01998-11-29 16:56:12 +000081
jsmbfb73f01998-11-30 10:44:55 +000082You can download the latest version from <a href="ftp://ftp.cygnus.com/pub/green/">ftp.cygnus.com:/pub/green/</a>.
greenaf8b7f01998-11-30 06:20:05 +000083
84<p>
85
86You can also check out the very latest version via anonymous cvs.
87Here's how:
green334f0b01998-11-29 16:56:12 +000088<pre>
greenaf8b7f01998-11-30 06:20:05 +000089 cvs -d :pserver:anoncvs@sourceware.cygnus.com:/cvs/libffi login
90 (password is ``anoncvs'')
91 cvs -d :pserver:anoncvs@sourceware.cygnus.com:/cvs/libffi co libffi
green334f0b01998-11-29 16:56:12 +000092</pre>
93
greenaf8b7f01998-11-30 06:20:05 +000094Once you have it checked out, you can update it with <tt>cvs update</tt>.
green334f0b01998-11-29 16:56:12 +000095
green334f0b01998-11-29 16:56:12 +000096<p>
greenaf8b7f01998-11-30 06:20:05 +000097
98You can also <a
99href="http://sourceware.cygnus.com/cgi-bin/cvsweb.cgi/libffi/?cvsroot=libffi">
100view the cvs archive</a> via cvsweb.
101
102<h2>Mailing lists</h2>
103
104For such a small piece of software, there are plenty of mailing lists
105available.
106
107<ul>
108<li><tt>libffi-announce</tt> is a low volume mailing list for libffi release announcements
109<li><tt>libffi-discuss</tt> is a mailing list for asking questions, reporting bugs, etc.
110</ul>
111
112<p>To subscribe to the <code>libffi-announce</code> mailing list, enter your
113e-mail address:
jsmbfb73f01998-11-30 10:44:55 +0000114<form method="get" action="/cgi-bin/subscribe">
115 <input type="hidden" name="listname" value="libffi-announce">
116 <input type="text" name="username" size="16"> <input type="Submit" name="submi
117t" value="Sign me up!">
greenaf8b7f01998-11-30 06:20:05 +0000118</form>
119
120<br>To subscribe to the <code>libffi-discuss</code> mailing list, enter your
121e-mail address:
jsmbfb73f01998-11-30 10:44:55 +0000122<form method="get" action="/cgi-bin/subscribe">
123 <input type="hidden" name="listname" value="libffi-discuss">
124 <input type="text" name="username" size="16"> <input type="Submit" name="submi
125t" value="Sign me up!">
greenaf8b7f01998-11-30 06:20:05 +0000126</form>
127
128<p>
129
130<h2>Authors and Credits</h2>
131
jsmbfb73f01998-11-30 10:44:55 +0000132Libffi was written by <a href="http://www.cygnus.com/~green/"><b>Anthony Green</b></a>.
greenaf8b7f01998-11-30 06:20:05 +0000133
134<ul>
135<li> Portions of libffi were derived from <b>Gianni Mariani</b>'s free gencall
green334f0b01998-11-29 16:56:12 +0000136library for Silicon Graphics machines.
greenaf8b7f01998-11-30 06:20:05 +0000137<li> The sparc port was derived from code contributed by the fine folks at
green334f0b01998-11-29 16:56:12 +0000138<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>.
greenaf8b7f01998-11-30 06:20:05 +0000139<li>The Alpha port was written by <b>Richard Henderson</b> at Cygnus Solutions.
140<li><b>Andreas Schwab</b> ported libffi to m68k Linux and provided a number of
green334f0b01998-11-29 16:56:12 +0000141bug fixes.
greenaf8b7f01998-11-30 06:20:05 +0000142<li><b>Geoffrey Keating</b> ported libffi to the PowerPC.
143<li><b>Raffaele Sena</b> ported libffi to the ARM.
144<li><b>Jesper Skov</b> and <b>Andrew Haley</b> both did more than their fair share of
green334f0b01998-11-29 16:56:12 +0000145stepping through the code and tracking down bugs.
greenaf8b7f01998-11-30 06:20:05 +0000146<li>
green334f0b01998-11-29 16:56:12 +0000147Thanks to <b>Tom Tromey</b> for bug fixes and configuration help.
greenaf8b7f01998-11-30 06:20:05 +0000148<li>
green334f0b01998-11-29 16:56:12 +0000149Thanks also to <b>Jim Blandy</b>, who provided some useful feedback on the libffi
150interface.
greenaf8b7f01998-11-30 06:20:05 +0000151</ul>
green334f0b01998-11-29 16:56:12 +0000152<p>
153If you have a problem, or have found a bug, please send a note to
greenaf8b7f01998-11-30 06:20:05 +0000154<a href="mailto:libffi-discuss@cygnus.com">libffi-discuss@cygnus.com</a> or
155to me directly (<a href="mailto:green@cygnus.com">green@cygnus.com</a>).
green334f0b01998-11-29 16:56:12 +0000156
157</body>
158</html>