ffi 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +1 -27
- data/Rakefile +9 -12
- data/ext/ffi_c/AbstractMemory.c +11 -8
- data/ext/ffi_c/AbstractMemory.h +23 -21
- data/ext/ffi_c/AutoPointer.c +0 -1
- data/ext/ffi_c/Buffer.c +24 -8
- data/ext/ffi_c/Call.c +28 -0
- data/ext/ffi_c/Call.h +8 -4
- data/ext/ffi_c/ClosurePool.c +7 -5
- data/ext/ffi_c/DynamicLibrary.c +0 -1
- data/ext/ffi_c/Function.c +19 -2
- data/ext/ffi_c/MemoryPointer.c +3 -3
- data/ext/ffi_c/MethodHandle.c +1 -1
- data/ext/ffi_c/Pointer.c +23 -9
- data/ext/ffi_c/Struct.c +142 -69
- data/ext/ffi_c/Struct.h +16 -7
- data/ext/ffi_c/StructLayout.c +92 -55
- data/ext/ffi_c/Type.c +5 -22
- data/ext/ffi_c/Type.h +1 -1
- data/ext/ffi_c/Types.c +8 -2
- data/ext/ffi_c/Types.h +2 -0
- data/ext/ffi_c/Variadic.c +7 -19
- data/ext/ffi_c/endian.h +1 -1
- data/ext/ffi_c/extconf.rb +20 -11
- data/ext/ffi_c/libffi/ChangeLog +900 -84
- data/ext/ffi_c/libffi/ChangeLog.libffi +311 -0
- data/ext/ffi_c/libffi/LICENSE +1 -1
- data/ext/ffi_c/libffi/Makefile.am +14 -4
- data/ext/ffi_c/libffi/Makefile.in +362 -211
- data/ext/ffi_c/libffi/README +70 -92
- data/ext/ffi_c/libffi/aclocal.m4 +6068 -4586
- data/ext/ffi_c/libffi/config.guess +125 -143
- data/ext/ffi_c/libffi/config.sub +103 -27
- data/ext/ffi_c/libffi/configure +11364 -18497
- data/ext/ffi_c/libffi/configure.ac +43 -4
- data/ext/ffi_c/libffi/doc/libffi.info +15 -15
- data/ext/ffi_c/libffi/doc/libffi.texi +1 -1
- data/ext/ffi_c/libffi/doc/stamp-vti +4 -4
- data/ext/ffi_c/libffi/doc/version.texi +4 -4
- data/ext/ffi_c/libffi/fficonfig.h.in +24 -3
- data/ext/ffi_c/libffi/include/Makefile.am +1 -1
- data/ext/ffi_c/libffi/include/Makefile.in +97 -50
- data/ext/ffi_c/libffi/include/ffi.h.in +8 -2
- data/ext/ffi_c/libffi/include/ffi_common.h +24 -0
- data/ext/ffi_c/libffi/libtool-version +1 -1
- data/ext/ffi_c/libffi/ltmain.sh +7346 -5870
- data/ext/ffi_c/libffi/m4/libtool.m4 +7360 -0
- data/ext/ffi_c/libffi/m4/ltoptions.m4 +368 -0
- data/ext/ffi_c/libffi/m4/ltsugar.m4 +123 -0
- data/ext/ffi_c/libffi/m4/ltversion.m4 +23 -0
- data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +92 -0
- data/ext/ffi_c/libffi/man/Makefile.in +115 -62
- data/ext/ffi_c/libffi/man/ffi_call.3 +3 -3
- data/ext/ffi_c/libffi/missing +15 -8
- data/ext/ffi_c/libffi/src/arm/sysv.S +15 -8
- data/ext/ffi_c/libffi/src/avr32/ffi.c +421 -0
- data/ext/ffi_c/libffi/src/avr32/ffitarget.h +50 -0
- data/ext/ffi_c/libffi/src/avr32/sysv.S +208 -0
- data/ext/ffi_c/libffi/src/closures.c +47 -10
- data/ext/ffi_c/libffi/src/frv/ffi.c +1 -1
- data/ext/ffi_c/libffi/src/java_raw_api.c +0 -3
- data/ext/ffi_c/libffi/src/mips/ffi.c +135 -32
- data/ext/ffi_c/libffi/src/mips/ffitarget.h +37 -4
- data/ext/ffi_c/libffi/src/mips/n32.S +67 -10
- data/ext/ffi_c/libffi/src/mips/o32.S +8 -8
- data/ext/ffi_c/libffi/src/pa/ffi.c +7 -0
- data/ext/ffi_c/libffi/src/powerpc/aix.S +163 -64
- data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +308 -112
- data/ext/ffi_c/libffi/src/powerpc/ffi.c +20 -7
- data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +208 -80
- data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +11 -3
- data/ext/ffi_c/libffi/src/powerpc/sysv.S +12 -23
- data/ext/ffi_c/libffi/src/s390/sysv.S +1 -1
- data/ext/ffi_c/libffi/src/sh/sysv.S +9 -9
- data/ext/ffi_c/libffi/src/sh64/ffi.c +37 -22
- data/ext/ffi_c/libffi/src/sh64/sysv.S +23 -14
- data/ext/ffi_c/libffi/src/sparc/ffi.c +21 -6
- data/ext/ffi_c/libffi/src/sparc/v8.S +55 -14
- data/ext/ffi_c/libffi/src/x86/darwin.S +10 -9
- data/ext/ffi_c/libffi/src/x86/ffi.c +293 -86
- data/ext/ffi_c/libffi/src/x86/ffi64.c +73 -19
- data/ext/ffi_c/libffi/src/x86/ffitarget.h +30 -0
- data/ext/ffi_c/libffi/src/x86/sysv.S +21 -4
- data/ext/ffi_c/libffi/src/x86/unix64.S +8 -4
- data/ext/ffi_c/libffi/src/x86/win32.S +633 -147
- data/ext/ffi_c/libffi/src/x86/win64.S +460 -0
- data/ext/ffi_c/libffi/testsuite/Makefile.am +63 -54
- data/ext/ffi_c/libffi/testsuite/Makefile.in +112 -77
- data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +12 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +7 -15
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +7 -15
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +7 -15
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +7 -15
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +7 -15
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +7 -14
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +7 -15
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c +95 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_stdcall.c +6 -14
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +134 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +117 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +11 -17
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +7 -15
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +7 -15
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +66 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +57 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +4 -13
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +105 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +57 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +74 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +140 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +8 -16
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c +37 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +25 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +31 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +2 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +342 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +4 -12
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +145 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +148 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +124 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +124 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +70 -0
- data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.special/special.exp +4 -5
- data/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest.cc +17 -16
- data/ext/ffi_c/libffi/texinfo.tex +155 -427
- data/ext/ffi_c/libffi.bsd.mk +1 -1
- data/lib/ffi/autopointer.rb +79 -20
- data/lib/ffi/buffer.rb +4 -0
- data/lib/ffi/callback.rb +4 -10
- data/lib/ffi/enum.rb +28 -0
- data/lib/ffi/ffi.rb +0 -1
- data/lib/ffi/io.rb +28 -0
- data/lib/ffi/library.rb +237 -182
- data/lib/ffi/memorypointer.rb +28 -62
- data/lib/ffi/platform.rb +27 -0
- data/lib/ffi/pointer.rb +28 -0
- data/lib/ffi/struct.rb +55 -1
- data/lib/ffi/types.rb +29 -0
- data/lib/ffi/variadic.rb +29 -0
- data/spec/ffi/library_spec.rb +31 -5
- data/spec/ffi/managed_struct_spec.rb +1 -1
- data/spec/ffi/pointer_spec.rb +1 -1
- data/spec/ffi/rbx/attach_function_spec.rb +2 -1
- data/spec/ffi/rbx/memory_pointer_spec.rb +2 -1
- data/spec/ffi/spec_helper.rb +5 -1
- data/spec/ffi/struct_spec.rb +77 -0
- metadata +28 -18
- data/ext/ffi_c/libffi/TODO +0 -1
- data/ext/ffi_c/libffi/ltcf-c.sh +0 -861
- data/ext/ffi_c/libffi/ltcf-cxx.sh +0 -1069
- data/ext/ffi_c/libffi/ltcf-gcj.sh +0 -700
- data/ext/ffi_c/libffi/ltconfig +0 -2862
- data/ext/ffi_c/libffi/mkinstalldirs +0 -158
data/ext/ffi_c/libffi/README
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Status
|
|
2
2
|
======
|
|
3
3
|
|
|
4
|
-
libffi-3.0.
|
|
4
|
+
libffi-3.0.9 was released on December 31, 2009. Check the libffi web
|
|
5
5
|
page for updates: <URL:http://sourceware.org/libffi/>.
|
|
6
6
|
|
|
7
7
|
|
|
@@ -9,27 +9,27 @@ What is libffi?
|
|
|
9
9
|
===============
|
|
10
10
|
|
|
11
11
|
Compilers for high level languages generate code that follow certain
|
|
12
|
-
conventions.
|
|
13
|
-
compilation to work.
|
|
14
|
-
The "calling convention" is a set of
|
|
15
|
-
about where function arguments will
|
|
16
|
-
A "calling convention" also specifies
|
|
17
|
-
function is found.
|
|
12
|
+
conventions. These conventions are necessary, in part, for separate
|
|
13
|
+
compilation to work. One such convention is the "calling
|
|
14
|
+
convention". The "calling convention" is essentially a set of
|
|
15
|
+
assumptions made by the compiler about where function arguments will
|
|
16
|
+
be found on entry to a function. A "calling convention" also specifies
|
|
17
|
+
where the return value for a function is found.
|
|
18
18
|
|
|
19
19
|
Some programs may not know at the time of compilation what arguments
|
|
20
|
-
are to be passed to a function.
|
|
20
|
+
are to be passed to a function. For instance, an interpreter may be
|
|
21
21
|
told at run-time about the number and types of arguments used to call
|
|
22
|
-
a given function.
|
|
22
|
+
a given function. Libffi can be used in such programs to provide a
|
|
23
23
|
bridge from the interpreter program to compiled code.
|
|
24
24
|
|
|
25
25
|
The libffi library provides a portable, high level programming
|
|
26
|
-
interface to various calling conventions.
|
|
26
|
+
interface to various calling conventions. This allows a programmer to
|
|
27
27
|
call any function specified by a call interface description at run
|
|
28
|
-
time.
|
|
28
|
+
time.
|
|
29
29
|
|
|
30
30
|
FFI stands for Foreign Function Interface. A foreign function
|
|
31
31
|
interface is the popular name for the interface that allows code
|
|
32
|
-
written in one language to call code written in another language.
|
|
32
|
+
written in one language to call code written in another language. The
|
|
33
33
|
libffi library really only provides the lowest, machine dependent
|
|
34
34
|
layer of a fully featured foreign function interface. A layer must
|
|
35
35
|
exist above libffi that handles type conversions for values passed
|
|
@@ -39,36 +39,56 @@ between the two languages.
|
|
|
39
39
|
Supported Platforms
|
|
40
40
|
===================
|
|
41
41
|
|
|
42
|
-
Libffi has been ported to many different platforms
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
42
|
+
Libffi has been ported to many different platforms.
|
|
43
|
+
For specific configuration details and testing status, please
|
|
44
|
+
refer to the wiki page here:
|
|
45
|
+
|
|
46
|
+
http://www.moxielogic.org/wiki/index.php?title=Libffi_3.0.9
|
|
47
|
+
|
|
48
|
+
At the time of release, the following basic configurations have been
|
|
49
|
+
tested:
|
|
50
|
+
|
|
51
|
+
|--------------+------------------|
|
|
52
|
+
| Architecture | Operating System |
|
|
53
|
+
|--------------+------------------|
|
|
54
|
+
| Alpha | Linux |
|
|
55
|
+
| ARM | Linux |
|
|
56
|
+
| AVR32 | Linux |
|
|
57
|
+
| HPPA | HPUX |
|
|
58
|
+
| IA-64 | Linux |
|
|
59
|
+
| MIPS | IRIX |
|
|
60
|
+
| MIPS | Linux |
|
|
61
|
+
| MIPS64 | Linux |
|
|
62
|
+
| PowerPC | Linux |
|
|
63
|
+
| PowerPC | Mac OSX |
|
|
64
|
+
| PowerPC | FreeBSD |
|
|
65
|
+
| PowerPC64 | Linux |
|
|
66
|
+
| S390 | Linux |
|
|
67
|
+
| S390X | Linux |
|
|
68
|
+
| SPARC | Linux |
|
|
69
|
+
| SPARC | Solaris |
|
|
70
|
+
| SPARC64 | Linux |
|
|
71
|
+
| SPARC64 | FreeBSD |
|
|
72
|
+
| X86 | FreeBSD |
|
|
73
|
+
| X86 | kFreeBSD |
|
|
74
|
+
| X86 | Linux |
|
|
75
|
+
| X86 | Mac OSX |
|
|
76
|
+
| X86 | OpenBSD |
|
|
77
|
+
| X86 | Solaris |
|
|
78
|
+
| X86 | Windows/Cygwin |
|
|
79
|
+
| X86 | Windows/MingW |
|
|
80
|
+
| X86-64 | FreeBSD |
|
|
81
|
+
| X86-64 | Linux |
|
|
82
|
+
| X86-64 | OpenBSD |
|
|
83
|
+
|--------------+------------------|
|
|
84
|
+
|
|
63
85
|
Please send additional platform test results to
|
|
64
|
-
libffi-discuss@sourceware.org
|
|
86
|
+
libffi-discuss@sourceware.org and feel free to update the wiki page
|
|
87
|
+
above.
|
|
65
88
|
|
|
66
89
|
Installing libffi
|
|
67
90
|
=================
|
|
68
91
|
|
|
69
|
-
[Note: before actually performing any of these installation steps,
|
|
70
|
-
you may wish to read the "Platform Specific Notes" below.]
|
|
71
|
-
|
|
72
92
|
First you must configure the distribution for your particular
|
|
73
93
|
system. Go to the directory you wish to build libffi in and run the
|
|
74
94
|
"configure" program found in the root directory of the libffi source
|
|
@@ -98,65 +118,23 @@ This will require that you have DejaGNU installed.
|
|
|
98
118
|
To install the library and header files, type "make install".
|
|
99
119
|
|
|
100
120
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
MIPS - Irix 5.3 & 6.x
|
|
105
|
-
---------------------
|
|
106
|
-
|
|
107
|
-
Irix 6.2 and better supports three different calling conventions: o32,
|
|
108
|
-
n32 and n64. Currently, libffi only supports both o32 and n32 under
|
|
109
|
-
Irix 6.x, but only o32 under Irix 5.3. Libffi will automatically be
|
|
110
|
-
configured for whichever calling convention it was built for.
|
|
111
|
-
|
|
112
|
-
By default, the configure script will try to build libffi with the GNU
|
|
113
|
-
development tools. To build libffi with the SGI development tools, set
|
|
114
|
-
the environment variable CC to either "cc -32" or "cc -n32" before
|
|
115
|
-
running configure under Irix 6.x (depending on whether you want an o32
|
|
116
|
-
or n32 library), or just "cc" for Irix 5.3.
|
|
117
|
-
|
|
118
|
-
With the n32 calling convention, when returning structures smaller
|
|
119
|
-
than 16 bytes, be sure to provide an RVALUE that is 8 byte aligned.
|
|
120
|
-
Here's one way of forcing this:
|
|
121
|
-
|
|
122
|
-
double struct_storage[2];
|
|
123
|
-
my_small_struct *s = (my_small_struct *) struct_storage;
|
|
124
|
-
/* Use s for RVALUE */
|
|
125
|
-
|
|
126
|
-
If you don't do this you are liable to get spurious bus errors.
|
|
127
|
-
|
|
128
|
-
"long long" values are not supported yet.
|
|
129
|
-
|
|
130
|
-
You must use GNU Make to build libffi on SGI platforms.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
PowerPC System V ABI
|
|
134
|
-
--------------------
|
|
135
|
-
|
|
136
|
-
There are two `System V ABI's which libffi implements for PowerPC.
|
|
137
|
-
They differ only in how small structures are returned from functions.
|
|
138
|
-
|
|
139
|
-
In the FFI_SYSV version, structures that are 8 bytes or smaller are
|
|
140
|
-
returned in registers. This is what GCC does when it is configured
|
|
141
|
-
for solaris, and is what the System V ABI I have (dated September
|
|
142
|
-
1995) says.
|
|
121
|
+
History
|
|
122
|
+
=======
|
|
143
123
|
|
|
144
|
-
|
|
145
|
-
by passing a pointer as the first argument to the function. This is
|
|
146
|
-
what GCC does when it is configured for linux or a generic sysv
|
|
147
|
-
target.
|
|
124
|
+
See the ChangeLog files for details.
|
|
148
125
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
single-precision anyway. This causes one test to fail (the `many
|
|
155
|
-
arguments' test).
|
|
126
|
+
3.0.9 Dec-31-09
|
|
127
|
+
Add AVR32 and win64 ports. Add ARM softfp support.
|
|
128
|
+
Many fixes for AIX, Solaris, HP-UX, *BSD.
|
|
129
|
+
Several PowerPC and x86-64 bug fixes.
|
|
130
|
+
Build DLL for windows.
|
|
156
131
|
|
|
132
|
+
3.0.8 Dec-19-08
|
|
133
|
+
Add *BSD, BeOS, and PA-Linux support.
|
|
157
134
|
|
|
158
|
-
|
|
159
|
-
|
|
135
|
+
3.0.7 Nov-11-08
|
|
136
|
+
Fix for ppc FreeBSD.
|
|
137
|
+
(thanks to Andreas Tobler)
|
|
160
138
|
|
|
161
139
|
3.0.6 Jul-17-08
|
|
162
140
|
Fix for closures on sh.
|