Import libffi-3.0.4, and use it to provide FFI support in GHCi
authorSimon Marlow <simonmar@microsoft.com>
Tue, 8 Apr 2008 18:34:34 +0000 (18:34 +0000)
committerSimon Marlow <simonmar@microsoft.com>
Tue, 8 Apr 2008 18:34:34 +0000 (18:34 +0000)
commite0fcf61dca4dfac99cb5417e1bc4cbee18822cf2
tree32382c35525e71b5f20dea714fb748b0870431e0
parent92986843271f2f400ebc0759b30eb11d47eaa193
Import libffi-3.0.4, and use it to provide FFI support in GHCi

This replaces the hand-rolled architecture-specific FFI support in
GHCi with the standard libffi as used in GCJ, Python and other
projects.  I've bundled the complete libffi-3.0.4 tarball in the
source tree in the same way as we do for GMP, the difference being
that we always build and install our own libffi regardless of whether
there's one on the system (it's small, and we don't want
dependency/versioning headaches).

In particular this means that unregisterised builds will now have a
fully working GHCi including FFI out of the box, provided libffi
supports the platform.

There is also code in the RTS to use libffi in place of
rts/Adjustor.c, but it is currently not enabled if we already have
support in Adjustor.c for the current platform.  We need to assess the
performance impact before using libffi here too (in GHCi we don't care
too much about performance).
12 files changed:
Makefile
compiler/Makefile
compiler/ghci/ByteCodeFFI.lhs
compiler/ghci/ByteCodeGen.lhs
compiler/ghci/LibFFI.hsc
libffi/Makefile [new file with mode: 0644]
libffi/libffi-3.0.4.tar.gz [new file with mode: 0644]
rts/Adjustor.c
rts/Interpreter.c
rts/Linker.c
rts/Makefile
rts/package.conf.in