https://github.com/gitgnu/gnu_libffcall
https://github.com/gitgnu/gnu_libffcall
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/gitgnu/gnu_libffcall
- Owner: gitGNU
- License: gpl-2.0
- Created: 2017-05-02T11:12:34.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2017-05-02T11:13:50.000Z (about 9 years ago)
- Last Synced: 2025-08-17T05:02:56.730Z (11 months ago)
- Language: C
- Size: 6.6 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
- Changelog: ChangeLog
- License: COPYING
Awesome Lists containing this project
README
ffcall - foreign function call libraries
This is a collection of four libraries which can be used to build
foreign function call interfaces in embedded interpreters.
The four packages are:
avcall - calling C functions with variable arguments
vacall - C functions accepting variable argument prototypes
trampoline - closures as first-class C functions
callback - closures with variable arguments as first-class C functions
(a reentrant combination of vacall and trampoline)
Installation instructions:
mkdir builddir
cd builddir
../configure --cache-file=config.cache
make
make check
make install
Note: It is possible to do a build that produces shared libraries (by
passing --enable-shared to configure), but it makes little sense to do so:
1) The main function here is compiled from non-PIC assembly language.
I.e. relocations would remain. The GNU linker supports shared libraries
with relocations on x86 systems. But only on x86!
2) It is an overkill: libavcall, libvacall, libcallback have less than 1 KB
of executable code (most of the real code is in the header files):
$ size libavcall.a
text data bss dec hex filename
420 0 0 420 1a4 avcall.o (ex libavcall.a)
81 0 0 81 51 avcall-structcpy.o (ex libavcall.a)
$ size libvacall.a
text data bss dec hex filename
365 0 0 365 16d vacall.o (ex libvacall.a)
203 0 0 203 cb misc.o (ex libvacall.a)
81 0 0 81 51 vacall-structcpy.o (ex libvacall.a)
$ size libcallback.a
text data bss dec hex filename
379 0 0 379 17b vacall.o (ex libcallback.a)
203 0 0 203 cb misc.o (ex libcallback.a)
81 0 0 81 51 vacall-structcpy.o (ex libcallback.a)
287 0 0 287 11f trampoline.o (ex libcallback.a)
When a shared library is loaded, you spend at least 4 KB for its code,
data and BSS. This is overkill for such a tiny library.
3) We don't do proper versioning of the resulting shared libraries (yet).
Therefore it is possible that upgrading to a newer version of libffcall
breaks existing binaries.
Files in this package:
Documentation:
README this text
COPYING free software license
PLATFORMS list of supported platforms
Source:
avcall/* the avcall package
vacall/* the vacall package
trampoline/* the trampoline package
callback/* the callback package
Installation:
configure configuration script
configure.ac autoconf source for the configuration script
autoconf/* auxiliary configuration scripts
Makefile.in Makefile master
Copyright notice:
Copyright 1993-1995 Bill Triggs (original avcall)
Copyright 1995-2016 Bruno Haible (everything)
Copyright 1997 Jörg Höhle (m68k AmigaOS support)
Copyright 2000 Adam Fedor (PowerPC MacOS support)
Copyright 2001-2012 Sam Steingold (build infrastructure)
Copyright 2001-2002 Gerhard Tonn (s390 support)
Copyright 2004 Paul Guyot (PowerPC MacOS support)
Copyright 2005 Thiemo Seufer (MIPS EL support)
Copyright 2009 Max Lapan (ARM EL support)
Copyright 2010 Valery Ushakov (SPARC64 improvements)
This is free software distributed under the GNU General Public Licence
described in the file COPYING. Contact the author if you don't have this
or can't live with it. There is ABSOLUTELY NO WARRANTY, explicit or implied,
on this software.
Distribution:
git:
$ git clone git://git.savannah.gnu.org/libffcall.git
See https://savannah.gnu.org/git/?group=libffcall for more info.
Bug reports to:
https://savannah.gnu.org/bugs/?func=additem&group=libffcall
Homepage:
http://www.gnu.org/software/libffcall/