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
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
# Makefile.in generated by automake 1.
|
|
1
|
+
# Makefile.in generated by automake 1.11 from Makefile.am.
|
|
2
2
|
# @configure_input@
|
|
3
3
|
|
|
4
4
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
|
5
|
-
# 2003, 2004, 2005, 2006 Free Software Foundation,
|
|
5
|
+
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
|
6
|
+
# Inc.
|
|
6
7
|
# This Makefile.in is free software; the Free Software Foundation
|
|
7
8
|
# gives unlimited permission to copy and/or distribute it,
|
|
8
9
|
# with or without modifications, as long as this notice is preserved.
|
|
@@ -15,8 +16,9 @@
|
|
|
15
16
|
@SET_MAKE@
|
|
16
17
|
VPATH = @srcdir@
|
|
17
18
|
pkgdatadir = $(datadir)/@PACKAGE@
|
|
18
|
-
pkglibdir = $(libdir)/@PACKAGE@
|
|
19
19
|
pkgincludedir = $(includedir)/@PACKAGE@
|
|
20
|
+
pkglibdir = $(libdir)/@PACKAGE@
|
|
21
|
+
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
|
20
22
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
21
23
|
install_sh_DATA = $(install_sh) -c -m 644
|
|
22
24
|
install_sh_PROGRAM = $(install_sh) -c
|
|
@@ -39,9 +41,10 @@ am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
|
|
39
41
|
$(top_srcdir)/configure.ac
|
|
40
42
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|
41
43
|
$(ACLOCAL_M4)
|
|
42
|
-
mkinstalldirs = $(
|
|
44
|
+
mkinstalldirs = $(install_sh) -d
|
|
43
45
|
CONFIG_HEADER = $(top_builddir)/fficonfig.h
|
|
44
46
|
CONFIG_CLEAN_FILES =
|
|
47
|
+
CONFIG_CLEAN_VPATH_FILES =
|
|
45
48
|
SOURCES =
|
|
46
49
|
DIST_SOURCES =
|
|
47
50
|
DEJATOOL = $(PACKAGE)
|
|
@@ -64,21 +67,17 @@ CCDEPMODE = @CCDEPMODE@
|
|
|
64
67
|
CFLAGS = @CFLAGS@
|
|
65
68
|
CPP = @CPP@
|
|
66
69
|
CPPFLAGS = @CPPFLAGS@
|
|
67
|
-
CXX = @CXX@
|
|
68
|
-
CXXCPP = @CXXCPP@
|
|
69
|
-
CXXDEPMODE = @CXXDEPMODE@
|
|
70
|
-
CXXFLAGS = @CXXFLAGS@
|
|
71
70
|
CYGPATH_W = @CYGPATH_W@
|
|
72
71
|
DEFS = @DEFS@
|
|
73
72
|
DEPDIR = @DEPDIR@
|
|
74
|
-
|
|
73
|
+
DSYMUTIL = @DSYMUTIL@
|
|
74
|
+
DUMPBIN = @DUMPBIN@
|
|
75
75
|
ECHO_C = @ECHO_C@
|
|
76
76
|
ECHO_N = @ECHO_N@
|
|
77
77
|
ECHO_T = @ECHO_T@
|
|
78
78
|
EGREP = @EGREP@
|
|
79
79
|
EXEEXT = @EXEEXT@
|
|
80
|
-
|
|
81
|
-
FFLAGS = @FFLAGS@
|
|
80
|
+
FGREP = @FGREP@
|
|
82
81
|
GREP = @GREP@
|
|
83
82
|
HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
|
|
84
83
|
INSTALL = @INSTALL@
|
|
@@ -86,16 +85,23 @@ INSTALL_DATA = @INSTALL_DATA@
|
|
|
86
85
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
87
86
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
88
87
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
88
|
+
LD = @LD@
|
|
89
89
|
LDFLAGS = @LDFLAGS@
|
|
90
90
|
LIBOBJS = @LIBOBJS@
|
|
91
91
|
LIBS = @LIBS@
|
|
92
92
|
LIBTOOL = @LIBTOOL@
|
|
93
|
+
LIPO = @LIPO@
|
|
93
94
|
LN_S = @LN_S@
|
|
94
95
|
LTLIBOBJS = @LTLIBOBJS@
|
|
95
96
|
MAINT = @MAINT@
|
|
96
97
|
MAKEINFO = @MAKEINFO@
|
|
97
98
|
MKDIR_P = @MKDIR_P@
|
|
99
|
+
NM = @NM@
|
|
100
|
+
NMEDIT = @NMEDIT@
|
|
101
|
+
OBJDUMP = @OBJDUMP@
|
|
98
102
|
OBJEXT = @OBJEXT@
|
|
103
|
+
OTOOL = @OTOOL@
|
|
104
|
+
OTOOL64 = @OTOOL64@
|
|
99
105
|
PACKAGE = @PACKAGE@
|
|
100
106
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|
101
107
|
PACKAGE_NAME = @PACKAGE_NAME@
|
|
@@ -116,8 +122,7 @@ abs_srcdir = @abs_srcdir@
|
|
|
116
122
|
abs_top_builddir = @abs_top_builddir@
|
|
117
123
|
abs_top_srcdir = @abs_top_srcdir@
|
|
118
124
|
ac_ct_CC = @ac_ct_CC@
|
|
119
|
-
|
|
120
|
-
ac_ct_F77 = @ac_ct_F77@
|
|
125
|
+
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
|
121
126
|
am__include = @am__include@
|
|
122
127
|
am__leading_dot = @am__leading_dot@
|
|
123
128
|
am__quote = @am__quote@
|
|
@@ -148,6 +153,7 @@ libdir = @libdir@
|
|
|
148
153
|
libexecdir = @libexecdir@
|
|
149
154
|
localedir = @localedir@
|
|
150
155
|
localstatedir = @localstatedir@
|
|
156
|
+
lt_ECHO = @lt_ECHO@
|
|
151
157
|
mandir = @mandir@
|
|
152
158
|
mkdir_p = @mkdir_p@
|
|
153
159
|
oldincludedir = @oldincludedir@
|
|
@@ -166,6 +172,7 @@ target_os = @target_os@
|
|
|
166
172
|
target_vendor = @target_vendor@
|
|
167
173
|
toolexecdir = @toolexecdir@
|
|
168
174
|
toolexeclibdir = @toolexeclibdir@
|
|
175
|
+
top_build_prefix = @top_build_prefix@
|
|
169
176
|
top_builddir = @top_builddir@
|
|
170
177
|
top_srcdir = @top_srcdir@
|
|
171
178
|
AUTOMAKE_OPTIONS = foreign dejagnu
|
|
@@ -180,60 +187,69 @@ RUNTEST = `if [ -f $(top_srcdir)/../dejagnu/runtest ] ; then \
|
|
|
180
187
|
else echo runtest; fi`
|
|
181
188
|
|
|
182
189
|
CLEANFILES = *.exe core* *.log *.sum
|
|
183
|
-
EXTRA_DIST =
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
libffi.call/
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
libffi.call/
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
libffi.call/
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
190
|
+
EXTRA_DIST = libffi.special/special.exp \
|
|
191
|
+
libffi.special/unwindtest_ffi_call.cc libffi.special/unwindtest.cc \
|
|
192
|
+
libffi.special/ffitestcxx.h config/default.exp lib/target-libpath.exp \
|
|
193
|
+
lib/libffi-dg.exp lib/wrapper.exp libffi.call/float.c \
|
|
194
|
+
libffi.call/cls_multi_schar.c libffi.call/float3.c \
|
|
195
|
+
libffi.call/cls_3_1byte.c libffi.call/stret_large2.c \
|
|
196
|
+
libffi.call/cls_5_1_byte.c libffi.call/stret_medium.c \
|
|
197
|
+
libffi.call/promotion.c libffi.call/cls_dbls_struct.c \
|
|
198
|
+
libffi.call/nested_struct.c libffi.call/closure_fn1.c \
|
|
199
|
+
libffi.call/cls_4_1byte.c libffi.call/cls_float.c \
|
|
200
|
+
libffi.call/cls_2byte.c libffi.call/closure_fn4.c \
|
|
201
|
+
libffi.call/return_fl2.c libffi.call/nested_struct7.c \
|
|
202
|
+
libffi.call/cls_uint.c libffi.call/cls_align_sint64.c \
|
|
203
|
+
libffi.call/float1.c libffi.call/cls_19byte.c \
|
|
204
|
+
libffi.call/nested_struct1.c libffi.call/cls_4byte.c \
|
|
205
|
+
libffi.call/return_fl1.c libffi.call/cls_align_pointer.c \
|
|
206
|
+
libffi.call/nested_struct4.c libffi.call/nested_struct3.c \
|
|
207
|
+
libffi.call/struct7.c libffi.call/nested_struct9.c \
|
|
208
|
+
libffi.call/cls_sshort.c libffi.call/cls_ulonglong.c \
|
|
209
|
+
libffi.call/cls_pointer_stack.c libffi.call/cls_multi_uchar.c \
|
|
210
|
+
libffi.call/testclosure.c libffi.call/cls_3byte1.c \
|
|
211
|
+
libffi.call/struct6.c libffi.call/return_uc.c libffi.call/return_ll1.c \
|
|
212
|
+
libffi.call/cls_ushort.c libffi.call/stret_medium2.c \
|
|
213
|
+
libffi.call/cls_multi_ushortchar.c libffi.call/return_dbl2.c \
|
|
214
|
+
libffi.call/closure_loc_fn0.c libffi.call/return_sc.c \
|
|
215
|
+
libffi.call/nested_struct8.c libffi.call/cls_7_1_byte.c \
|
|
216
|
+
libffi.call/return_ll.c libffi.call/cls_pointer.c \
|
|
217
|
+
libffi.call/err_bad_abi.c libffi.call/return_dbl1.c \
|
|
218
|
+
libffi.call/call.exp libffi.call/ffitest.h libffi.call/strlen.c \
|
|
219
|
+
libffi.call/return_sl.c libffi.call/cls_1_1byte.c \
|
|
220
|
+
libffi.call/struct1.c libffi.call/cls_64byte.c libffi.call/return_ul.c \
|
|
221
|
+
libffi.call/cls_double.c libffi.call/many_win32.c \
|
|
222
|
+
libffi.call/cls_16byte.c libffi.call/cls_align_double.c \
|
|
223
|
+
libffi.call/cls_align_uint16.c libffi.call/cls_9byte1.c \
|
|
224
|
+
libffi.call/cls_multi_sshortchar.c libffi.call/cls_multi_ushort.c \
|
|
225
|
+
libffi.call/closure_stdcall.c libffi.call/return_fl.c \
|
|
226
|
+
libffi.call/strlen_win32.c libffi.call/return_ldl.c \
|
|
227
|
+
libffi.call/cls_align_float.c libffi.call/struct3.c \
|
|
228
|
+
libffi.call/cls_uchar.c libffi.call/cls_sint.c libffi.call/float2.c \
|
|
229
|
+
libffi.call/cls_align_longdouble_split.c \
|
|
230
|
+
libffi.call/cls_longdouble_va.c libffi.call/cls_multi_sshort.c \
|
|
231
|
+
libffi.call/stret_large.c libffi.call/cls_align_sint16.c \
|
|
232
|
+
libffi.call/nested_struct6.c libffi.call/cls_5byte.c \
|
|
233
|
+
libffi.call/return_dbl.c libffi.call/cls_20byte.c \
|
|
234
|
+
libffi.call/cls_8byte.c libffi.call/pyobjc-tc.c \
|
|
235
|
+
libffi.call/cls_24byte.c libffi.call/cls_align_longdouble_split2.c \
|
|
236
|
+
libffi.call/cls_6_1_byte.c libffi.call/cls_schar.c \
|
|
237
|
+
libffi.call/cls_18byte.c libffi.call/closure_fn3.c \
|
|
238
|
+
libffi.call/err_bad_typedef.c libffi.call/closure_fn2.c \
|
|
239
|
+
libffi.call/struct2.c libffi.call/cls_3byte2.c \
|
|
240
|
+
libffi.call/cls_align_longdouble.c libffi.call/cls_20byte1.c \
|
|
241
|
+
libffi.call/return_fl3.c libffi.call/cls_align_uint32.c \
|
|
242
|
+
libffi.call/problem1.c libffi.call/float4.c \
|
|
243
|
+
libffi.call/cls_align_uint64.c libffi.call/struct9.c \
|
|
244
|
+
libffi.call/closure_fn5.c libffi.call/cls_align_sint32.c \
|
|
245
|
+
libffi.call/closure_fn0.c libffi.call/closure_fn6.c \
|
|
246
|
+
libffi.call/struct4.c libffi.call/nested_struct2.c \
|
|
247
|
+
libffi.call/cls_6byte.c libffi.call/cls_7byte.c libffi.call/many.c \
|
|
248
|
+
libffi.call/struct8.c libffi.call/negint.c libffi.call/struct5.c \
|
|
249
|
+
libffi.call/cls_12byte.c libffi.call/cls_double_va.c \
|
|
250
|
+
libffi.call/cls_longdouble.c libffi.call/cls_9byte2.c \
|
|
251
|
+
libffi.call/nested_struct10.c libffi.call/nested_struct5.c \
|
|
252
|
+
libffi.call/huge_struct.c
|
|
237
253
|
|
|
238
254
|
all: all-am
|
|
239
255
|
|
|
@@ -242,14 +258,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
|
|
242
258
|
@for dep in $?; do \
|
|
243
259
|
case '$(am__configure_deps)' in \
|
|
244
260
|
*$$dep*) \
|
|
245
|
-
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
|
246
|
-
|
|
261
|
+
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
|
262
|
+
&& { if test -f $@; then exit 0; else break; fi; }; \
|
|
247
263
|
exit 1;; \
|
|
248
264
|
esac; \
|
|
249
265
|
done; \
|
|
250
|
-
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign
|
|
251
|
-
|
|
252
|
-
$(AUTOMAKE) --foreign
|
|
266
|
+
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign testsuite/Makefile'; \
|
|
267
|
+
$(am__cd) $(top_srcdir) && \
|
|
268
|
+
$(AUTOMAKE) --foreign testsuite/Makefile
|
|
253
269
|
.PRECIOUS: Makefile
|
|
254
270
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
255
271
|
@case '$?' in \
|
|
@@ -267,6 +283,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|
|
267
283
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
268
284
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
|
269
285
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
286
|
+
$(am__aclocal_m4_deps):
|
|
270
287
|
|
|
271
288
|
mostlyclean-libtool:
|
|
272
289
|
-rm -f *.lo
|
|
@@ -334,13 +351,17 @@ distdir: $(DISTFILES)
|
|
|
334
351
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
335
352
|
if test -d $$d/$$file; then \
|
|
336
353
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
354
|
+
if test -d "$(distdir)/$$file"; then \
|
|
355
|
+
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|
356
|
+
fi; \
|
|
337
357
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
|
338
|
-
cp -
|
|
358
|
+
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
|
359
|
+
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|
339
360
|
fi; \
|
|
340
|
-
cp -
|
|
361
|
+
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
|
341
362
|
else \
|
|
342
|
-
test -f $(distdir)/$$file \
|
|
343
|
-
|| cp -p $$d/$$file $(distdir)/$$file \
|
|
363
|
+
test -f "$(distdir)/$$file" \
|
|
364
|
+
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
|
344
365
|
|| exit 1; \
|
|
345
366
|
fi; \
|
|
346
367
|
done
|
|
@@ -370,6 +391,7 @@ clean-generic:
|
|
|
370
391
|
|
|
371
392
|
distclean-generic:
|
|
372
393
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
|
394
|
+
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
|
373
395
|
|
|
374
396
|
maintainer-clean-generic:
|
|
375
397
|
@echo "This command is intended for maintainers to use"
|
|
@@ -388,6 +410,8 @@ dvi-am:
|
|
|
388
410
|
|
|
389
411
|
html: html-am
|
|
390
412
|
|
|
413
|
+
html-am:
|
|
414
|
+
|
|
391
415
|
info: info-am
|
|
392
416
|
|
|
393
417
|
info-am:
|
|
@@ -396,18 +420,28 @@ install-data-am:
|
|
|
396
420
|
|
|
397
421
|
install-dvi: install-dvi-am
|
|
398
422
|
|
|
423
|
+
install-dvi-am:
|
|
424
|
+
|
|
399
425
|
install-exec-am:
|
|
400
426
|
|
|
401
427
|
install-html: install-html-am
|
|
402
428
|
|
|
429
|
+
install-html-am:
|
|
430
|
+
|
|
403
431
|
install-info: install-info-am
|
|
404
432
|
|
|
433
|
+
install-info-am:
|
|
434
|
+
|
|
405
435
|
install-man:
|
|
406
436
|
|
|
407
437
|
install-pdf: install-pdf-am
|
|
408
438
|
|
|
439
|
+
install-pdf-am:
|
|
440
|
+
|
|
409
441
|
install-ps: install-ps-am
|
|
410
442
|
|
|
443
|
+
install-ps-am:
|
|
444
|
+
|
|
411
445
|
installcheck-am:
|
|
412
446
|
|
|
413
447
|
maintainer-clean: maintainer-clean-am
|
|
@@ -428,7 +462,7 @@ ps-am:
|
|
|
428
462
|
|
|
429
463
|
uninstall-am:
|
|
430
464
|
|
|
431
|
-
.MAKE: install-am install-strip
|
|
465
|
+
.MAKE: check-am install-am install-strip
|
|
432
466
|
|
|
433
467
|
.PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \
|
|
434
468
|
clean-libtool distclean distclean-DEJAGNU distclean-generic \
|
|
@@ -442,6 +476,7 @@ uninstall-am:
|
|
|
442
476
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
|
443
477
|
uninstall uninstall-am
|
|
444
478
|
|
|
479
|
+
|
|
445
480
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
446
481
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
447
482
|
.NOEXPORT:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2003, 2005, 2008 Free Software Foundation, Inc.
|
|
1
|
+
# Copyright (C) 2003, 2005, 2008, 2009 Free Software Foundation, Inc.
|
|
2
2
|
|
|
3
3
|
# This program is free software; you can redistribute it and/or modify
|
|
4
4
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -181,6 +181,13 @@ proc libffi_target_compile { source dest type options } {
|
|
|
181
181
|
lappend options "additional_flags=-I${libffi_include} -I${srcdir}/../include -I${libffi_include}/.."
|
|
182
182
|
lappend options "additional_flags=${libffi_link_flags}"
|
|
183
183
|
|
|
184
|
+
# Darwin needs a stack execution allowed flag.
|
|
185
|
+
|
|
186
|
+
if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"]
|
|
187
|
+
|| [istarget "*-*-darwin2*"] } {
|
|
188
|
+
lappend options "additional_flags=-Wl,-allow_stack_execute"
|
|
189
|
+
}
|
|
190
|
+
|
|
184
191
|
# If you're building the compiler with --prefix set to a place
|
|
185
192
|
# where it's not yet installed, then the linker won't be able to
|
|
186
193
|
# find the libgcc used by libffi.dylib. We could pass the
|
|
@@ -190,6 +197,10 @@ proc libffi_target_compile { source dest type options } {
|
|
|
190
197
|
lappend options "libs= -shared-libgcc"
|
|
191
198
|
}
|
|
192
199
|
|
|
200
|
+
if { [string match "*-*-openbsd*" $target_triplet] } {
|
|
201
|
+
lappend options "libs= -lpthread"
|
|
202
|
+
}
|
|
203
|
+
|
|
193
204
|
lappend options "libs= -lffi"
|
|
194
205
|
|
|
195
206
|
verbose "options: $options"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
|
|
1
|
+
# Copyright (C) 2003, 2006, 2009 Free Software Foundation, Inc.
|
|
2
2
|
|
|
3
3
|
# This program is free software; you can redistribute it and/or modify
|
|
4
4
|
# it under the terms of the GNU General Public License as published by
|
|
5
|
-
# the Free Software Foundation; either version
|
|
5
|
+
# the Free Software Foundation; either version 3 of the License, or
|
|
6
6
|
# (at your option) any later version.
|
|
7
7
|
#
|
|
8
8
|
# This program is distributed in the hope that it will be useful,
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
# GNU General Public License for more details.
|
|
12
12
|
#
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
|
-
# along with this program;
|
|
15
|
-
#
|
|
14
|
+
# along with this program; see the file COPYING3. If not see
|
|
15
|
+
# <http://www.gnu.org/licenses/>.
|
|
16
16
|
|
|
17
17
|
# libffi testsuite that uses the 'dg.exp' driver.
|
|
18
18
|
|
|
@@ -25,7 +25,7 @@ closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args,
|
|
|
25
25
|
(int)(*(double *)args[8]) + (int)*(int *)args[9] +
|
|
26
26
|
(int)(*(int *)args[10]) + (int)(*(float *)args[11]) +
|
|
27
27
|
(int)*(int *)args[12] + (int)(*(int *)args[13]) +
|
|
28
|
-
(int)(*(int *)args[14]) + *(int *)args[15] + (
|
|
28
|
+
(int)(*(int *)args[14]) + *(int *)args[15] + (intptr_t)userdata;
|
|
29
29
|
|
|
30
30
|
printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n",
|
|
31
31
|
(int)*(unsigned long long *)args[0], (int)(*(int *)args[1]),
|
|
@@ -37,7 +37,7 @@ closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args,
|
|
|
37
37
|
(int)(*(int *)args[10]), (int)(*(float *)args[11]),
|
|
38
38
|
(int)*(int *)args[12], (int)(*(int *)args[13]),
|
|
39
39
|
(int)(*(int *)args[14]),*(int *)args[15],
|
|
40
|
-
(int)(
|
|
40
|
+
(int)(intptr_t)userdata, (int)*(ffi_arg *)resp);
|
|
41
41
|
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -49,19 +49,11 @@ typedef int (*closure_test_type0)(unsigned long long, int, unsigned long long,
|
|
|
49
49
|
int main (void)
|
|
50
50
|
{
|
|
51
51
|
ffi_cif cif;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
#endif
|
|
55
|
-
ffi_closure *pcl;
|
|
52
|
+
void * code;
|
|
53
|
+
ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
|
|
56
54
|
ffi_type * cl_arg_types[17];
|
|
57
55
|
int res;
|
|
58
56
|
|
|
59
|
-
#ifdef USING_MMAP
|
|
60
|
-
pcl = allocate_mmap (sizeof(ffi_closure));
|
|
61
|
-
#else
|
|
62
|
-
pcl = &cl;
|
|
63
|
-
#endif
|
|
64
|
-
|
|
65
57
|
cl_arg_types[0] = &ffi_type_uint64;
|
|
66
58
|
cl_arg_types[1] = &ffi_type_sint;
|
|
67
59
|
cl_arg_types[2] = &ffi_type_uint64;
|
|
@@ -84,10 +76,10 @@ int main (void)
|
|
|
84
76
|
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16,
|
|
85
77
|
&ffi_type_sint, cl_arg_types) == FFI_OK);
|
|
86
78
|
|
|
87
|
-
CHECK(
|
|
88
|
-
|
|
79
|
+
CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn0,
|
|
80
|
+
(void *) 3 /* userdata */, code) == FFI_OK);
|
|
89
81
|
|
|
90
|
-
res = (*((closure_test_type0)
|
|
82
|
+
res = (*((closure_test_type0)code))
|
|
91
83
|
(1LL, 2, 3LL, 4, 127, 429LL, 7, 8, 9.5, 10, 11, 12, 13,
|
|
92
84
|
19, 21, 1);
|
|
93
85
|
/* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */
|
|
@@ -21,7 +21,7 @@ static void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp, void** args,
|
|
|
21
21
|
(int)(*(double*)args[8]) + (int)*(int *)args[9] +
|
|
22
22
|
(int)(*(int *)args[10]) + (int)(*(float *)args[11]) +
|
|
23
23
|
(int)*(int *)args[12] + (int)(*(int *)args[13]) +
|
|
24
|
-
(int)(*(int *)args[14]) + *(int *)args[15] + (
|
|
24
|
+
(int)(*(int *)args[14]) + *(int *)args[15] + (intptr_t)userdata;
|
|
25
25
|
|
|
26
26
|
printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n",
|
|
27
27
|
(int)*(float *)args[0], (int)(*(float *)args[1]),
|
|
@@ -32,7 +32,7 @@ static void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp, void** args,
|
|
|
32
32
|
(int)(*(int *)args[10]), (int)(*(float *)args[11]),
|
|
33
33
|
(int)*(int *)args[12], (int)(*(int *)args[13]),
|
|
34
34
|
(int)(*(int *)args[14]), *(int *)args[15],
|
|
35
|
-
(int)(
|
|
35
|
+
(int)(intptr_t)userdata, (int)*(ffi_arg *)resp);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
typedef int (*closure_test_type1)(float, float, float, float, signed short,
|
|
@@ -41,19 +41,11 @@ typedef int (*closure_test_type1)(float, float, float, float, signed short,
|
|
|
41
41
|
int main (void)
|
|
42
42
|
{
|
|
43
43
|
ffi_cif cif;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
#endif
|
|
47
|
-
ffi_closure *pcl;
|
|
44
|
+
void *code;
|
|
45
|
+
ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
|
|
48
46
|
ffi_type * cl_arg_types[17];
|
|
49
47
|
int res;
|
|
50
48
|
|
|
51
|
-
#ifdef USING_MMAP
|
|
52
|
-
pcl = allocate_mmap (sizeof(ffi_closure));
|
|
53
|
-
#else
|
|
54
|
-
pcl = &cl;
|
|
55
|
-
#endif
|
|
56
|
-
|
|
57
49
|
cl_arg_types[0] = &ffi_type_float;
|
|
58
50
|
cl_arg_types[1] = &ffi_type_float;
|
|
59
51
|
cl_arg_types[2] = &ffi_type_float;
|
|
@@ -76,10 +68,10 @@ int main (void)
|
|
|
76
68
|
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16,
|
|
77
69
|
&ffi_type_sint, cl_arg_types) == FFI_OK);
|
|
78
70
|
|
|
79
|
-
CHECK(
|
|
80
|
-
|
|
71
|
+
CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn1,
|
|
72
|
+
(void *) 3 /* userdata */, code) == FFI_OK);
|
|
81
73
|
|
|
82
|
-
res = (*((closure_test_type1)
|
|
74
|
+
res = (*((closure_test_type1)code))
|
|
83
75
|
(1.1, 2.2, 3.3, 4.4, 127, 5.5, 6.6, 8, 9, 10, 11, 12.0, 13,
|
|
84
76
|
19, 21, 1);
|
|
85
77
|
/* { dg-output "1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */
|
|
@@ -20,7 +20,7 @@ static void closure_test_fn2(ffi_cif* cif __UNUSED__, void* resp, void** args,
|
|
|
20
20
|
(int)(*(double *)args[8]) + (int)*(int *)args[9] +
|
|
21
21
|
(int)(*(int *)args[10]) + (int)(*(float *)args[11]) +
|
|
22
22
|
(int)*(int *)args[12] + (int)(*(float *)args[13]) +
|
|
23
|
-
(int)(*(int *)args[14]) + *(int *)args[15] + (
|
|
23
|
+
(int)(*(int *)args[14]) + *(int *)args[15] + (intptr_t)userdata;
|
|
24
24
|
|
|
25
25
|
printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n",
|
|
26
26
|
(int)*(double *)args[0], (int)(*(double *)args[1]),
|
|
@@ -30,7 +30,7 @@ static void closure_test_fn2(ffi_cif* cif __UNUSED__, void* resp, void** args,
|
|
|
30
30
|
(int)(*(double*)args[8]), (int)*(int *)args[9],
|
|
31
31
|
(int)(*(int *)args[10]), (int)(*(float *)args[11]),
|
|
32
32
|
(int)*(int *)args[12], (int)(*(float *)args[13]),
|
|
33
|
-
(int)(*(int *)args[14]), *(int *)args[15], (int)(
|
|
33
|
+
(int)(*(int *)args[14]), *(int *)args[15], (int)(intptr_t)userdata,
|
|
34
34
|
(int)*(ffi_arg *)resp);
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -41,19 +41,11 @@ typedef int (*closure_test_type2)(double, double, double, double, signed short,
|
|
|
41
41
|
int main (void)
|
|
42
42
|
{
|
|
43
43
|
ffi_cif cif;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
#endif
|
|
47
|
-
ffi_closure *pcl;
|
|
44
|
+
void *code;
|
|
45
|
+
ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
|
|
48
46
|
ffi_type * cl_arg_types[17];
|
|
49
47
|
int res;
|
|
50
48
|
|
|
51
|
-
#ifdef USING_MMAP
|
|
52
|
-
pcl = allocate_mmap (sizeof(ffi_closure));
|
|
53
|
-
#else
|
|
54
|
-
pcl = &cl;
|
|
55
|
-
#endif
|
|
56
|
-
|
|
57
49
|
cl_arg_types[0] = &ffi_type_double;
|
|
58
50
|
cl_arg_types[1] = &ffi_type_double;
|
|
59
51
|
cl_arg_types[2] = &ffi_type_double;
|
|
@@ -76,10 +68,10 @@ int main (void)
|
|
|
76
68
|
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16,
|
|
77
69
|
&ffi_type_sint, cl_arg_types) == FFI_OK);
|
|
78
70
|
|
|
79
|
-
CHECK(
|
|
80
|
-
|
|
71
|
+
CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn2,
|
|
72
|
+
(void *) 3 /* userdata */, code) == FFI_OK);
|
|
81
73
|
|
|
82
|
-
res = (*((closure_test_type2)
|
|
74
|
+
res = (*((closure_test_type2)code))
|
|
83
75
|
(1, 2, 3, 4, 127, 5, 6, 8, 9, 10, 11, 12.0, 13,
|
|
84
76
|
19.0, 21, 1);
|
|
85
77
|
/* { dg-output "1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */
|
|
@@ -20,7 +20,7 @@ static void closure_test_fn3(ffi_cif* cif __UNUSED__, void* resp, void** args,
|
|
|
20
20
|
(int)(*(double *)args[8]) + (int)*(int *)args[9] +
|
|
21
21
|
(int)(*(float *)args[10]) + (int)(*(float *)args[11]) +
|
|
22
22
|
(int)*(int *)args[12] + (int)(*(float *)args[13]) +
|
|
23
|
-
(int)(*(float *)args[14]) + *(int *)args[15] + (
|
|
23
|
+
(int)(*(float *)args[14]) + *(int *)args[15] + (intptr_t)userdata;
|
|
24
24
|
|
|
25
25
|
printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n",
|
|
26
26
|
(int)*(float *)args[0], (int)(*(float *)args[1]),
|
|
@@ -30,7 +30,7 @@ static void closure_test_fn3(ffi_cif* cif __UNUSED__, void* resp, void** args,
|
|
|
30
30
|
(int)(*(double *)args[8]), (int)*(int *)args[9],
|
|
31
31
|
(int)(*(float *)args[10]), (int)(*(float *)args[11]),
|
|
32
32
|
(int)*(int *)args[12], (int)(*(float *)args[13]),
|
|
33
|
-
(int)(*(float *)args[14]), *(int *)args[15], (int)(
|
|
33
|
+
(int)(*(float *)args[14]), *(int *)args[15], (int)(intptr_t)userdata,
|
|
34
34
|
(int)*(ffi_arg *)resp);
|
|
35
35
|
|
|
36
36
|
}
|
|
@@ -42,19 +42,11 @@ typedef int (*closure_test_type3)(float, float, float, float, float, float,
|
|
|
42
42
|
int main (void)
|
|
43
43
|
{
|
|
44
44
|
ffi_cif cif;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
#endif
|
|
48
|
-
ffi_closure *pcl;
|
|
45
|
+
void *code;
|
|
46
|
+
ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
|
|
49
47
|
ffi_type * cl_arg_types[17];
|
|
50
48
|
int res;
|
|
51
49
|
|
|
52
|
-
#ifdef USING_MMAP
|
|
53
|
-
pcl = allocate_mmap (sizeof(ffi_closure));
|
|
54
|
-
#else
|
|
55
|
-
pcl = &cl;
|
|
56
|
-
#endif
|
|
57
|
-
|
|
58
50
|
cl_arg_types[0] = &ffi_type_float;
|
|
59
51
|
cl_arg_types[1] = &ffi_type_float;
|
|
60
52
|
cl_arg_types[2] = &ffi_type_float;
|
|
@@ -77,10 +69,10 @@ int main (void)
|
|
|
77
69
|
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16,
|
|
78
70
|
&ffi_type_sint, cl_arg_types) == FFI_OK);
|
|
79
71
|
|
|
80
|
-
CHECK(
|
|
81
|
-
|
|
72
|
+
CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn3,
|
|
73
|
+
(void *) 3 /* userdata */, code) == FFI_OK);
|
|
82
74
|
|
|
83
|
-
res = (*((closure_test_type3)
|
|
75
|
+
res = (*((closure_test_type3)code))
|
|
84
76
|
(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11.11, 12.0, 13,
|
|
85
77
|
19.19, 21.21, 1);
|
|
86
78
|
/* { dg-output "1 2 3 4 5 6 7 8 9 10 11 12 13 19 21 1 3: 135" } */
|
|
@@ -25,7 +25,7 @@ closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args,
|
|
|
25
25
|
(int)*(unsigned long long *)args[12] +
|
|
26
26
|
(int)*(unsigned long long *)args[13] +
|
|
27
27
|
(int)*(unsigned long long *)args[14] +
|
|
28
|
-
*(int *)args[15] + (
|
|
28
|
+
*(int *)args[15] + (intptr_t)userdata;
|
|
29
29
|
|
|
30
30
|
printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n",
|
|
31
31
|
(int)*(unsigned long long *)args[0],
|
|
@@ -44,7 +44,7 @@ closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args,
|
|
|
44
44
|
(int)*(unsigned long long *)args[13],
|
|
45
45
|
(int)*(unsigned long long *)args[14],
|
|
46
46
|
*(int *)args[15],
|
|
47
|
-
(int)(
|
|
47
|
+
(int)(intptr_t)userdata, (int)*(ffi_arg *)resp);
|
|
48
48
|
|
|
49
49
|
}
|
|
50
50
|
|
|
@@ -60,19 +60,11 @@ typedef int (*closure_test_type0)(unsigned long long, unsigned long long,
|
|
|
60
60
|
int main (void)
|
|
61
61
|
{
|
|
62
62
|
ffi_cif cif;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
#endif
|
|
66
|
-
ffi_closure *pcl;
|
|
63
|
+
void *code;
|
|
64
|
+
ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
|
|
67
65
|
ffi_type * cl_arg_types[17];
|
|
68
66
|
int i, res;
|
|
69
67
|
|
|
70
|
-
#ifdef USING_MMAP
|
|
71
|
-
pcl = allocate_mmap (sizeof(ffi_closure));
|
|
72
|
-
#else
|
|
73
|
-
pcl = &cl;
|
|
74
|
-
#endif
|
|
75
|
-
|
|
76
68
|
for (i = 0; i < 15; i++) {
|
|
77
69
|
cl_arg_types[i] = &ffi_type_uint64;
|
|
78
70
|
}
|
|
@@ -83,10 +75,10 @@ int main (void)
|
|
|
83
75
|
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16,
|
|
84
76
|
&ffi_type_sint, cl_arg_types) == FFI_OK);
|
|
85
77
|
|
|
86
|
-
CHECK(
|
|
87
|
-
|
|
78
|
+
CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn0,
|
|
79
|
+
(void *) 3 /* userdata */, code) == FFI_OK);
|
|
88
80
|
|
|
89
|
-
res = (*((closure_test_type0)
|
|
81
|
+
res = (*((closure_test_type0)code))
|
|
90
82
|
(1LL, 2LL, 3LL, 4LL, 127LL, 429LL, 7LL, 8LL, 9LL, 10LL, 11LL, 12LL,
|
|
91
83
|
13LL, 19LL, 21LL, 1);
|
|
92
84
|
/* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */
|