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.
Files changed (212) hide show
  1. data/LICENSE +1 -27
  2. data/Rakefile +9 -12
  3. data/ext/ffi_c/AbstractMemory.c +11 -8
  4. data/ext/ffi_c/AbstractMemory.h +23 -21
  5. data/ext/ffi_c/AutoPointer.c +0 -1
  6. data/ext/ffi_c/Buffer.c +24 -8
  7. data/ext/ffi_c/Call.c +28 -0
  8. data/ext/ffi_c/Call.h +8 -4
  9. data/ext/ffi_c/ClosurePool.c +7 -5
  10. data/ext/ffi_c/DynamicLibrary.c +0 -1
  11. data/ext/ffi_c/Function.c +19 -2
  12. data/ext/ffi_c/MemoryPointer.c +3 -3
  13. data/ext/ffi_c/MethodHandle.c +1 -1
  14. data/ext/ffi_c/Pointer.c +23 -9
  15. data/ext/ffi_c/Struct.c +142 -69
  16. data/ext/ffi_c/Struct.h +16 -7
  17. data/ext/ffi_c/StructLayout.c +92 -55
  18. data/ext/ffi_c/Type.c +5 -22
  19. data/ext/ffi_c/Type.h +1 -1
  20. data/ext/ffi_c/Types.c +8 -2
  21. data/ext/ffi_c/Types.h +2 -0
  22. data/ext/ffi_c/Variadic.c +7 -19
  23. data/ext/ffi_c/endian.h +1 -1
  24. data/ext/ffi_c/extconf.rb +20 -11
  25. data/ext/ffi_c/libffi/ChangeLog +900 -84
  26. data/ext/ffi_c/libffi/ChangeLog.libffi +311 -0
  27. data/ext/ffi_c/libffi/LICENSE +1 -1
  28. data/ext/ffi_c/libffi/Makefile.am +14 -4
  29. data/ext/ffi_c/libffi/Makefile.in +362 -211
  30. data/ext/ffi_c/libffi/README +70 -92
  31. data/ext/ffi_c/libffi/aclocal.m4 +6068 -4586
  32. data/ext/ffi_c/libffi/config.guess +125 -143
  33. data/ext/ffi_c/libffi/config.sub +103 -27
  34. data/ext/ffi_c/libffi/configure +11364 -18497
  35. data/ext/ffi_c/libffi/configure.ac +43 -4
  36. data/ext/ffi_c/libffi/doc/libffi.info +15 -15
  37. data/ext/ffi_c/libffi/doc/libffi.texi +1 -1
  38. data/ext/ffi_c/libffi/doc/stamp-vti +4 -4
  39. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  40. data/ext/ffi_c/libffi/fficonfig.h.in +24 -3
  41. data/ext/ffi_c/libffi/include/Makefile.am +1 -1
  42. data/ext/ffi_c/libffi/include/Makefile.in +97 -50
  43. data/ext/ffi_c/libffi/include/ffi.h.in +8 -2
  44. data/ext/ffi_c/libffi/include/ffi_common.h +24 -0
  45. data/ext/ffi_c/libffi/libtool-version +1 -1
  46. data/ext/ffi_c/libffi/ltmain.sh +7346 -5870
  47. data/ext/ffi_c/libffi/m4/libtool.m4 +7360 -0
  48. data/ext/ffi_c/libffi/m4/ltoptions.m4 +368 -0
  49. data/ext/ffi_c/libffi/m4/ltsugar.m4 +123 -0
  50. data/ext/ffi_c/libffi/m4/ltversion.m4 +23 -0
  51. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +92 -0
  52. data/ext/ffi_c/libffi/man/Makefile.in +115 -62
  53. data/ext/ffi_c/libffi/man/ffi_call.3 +3 -3
  54. data/ext/ffi_c/libffi/missing +15 -8
  55. data/ext/ffi_c/libffi/src/arm/sysv.S +15 -8
  56. data/ext/ffi_c/libffi/src/avr32/ffi.c +421 -0
  57. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +50 -0
  58. data/ext/ffi_c/libffi/src/avr32/sysv.S +208 -0
  59. data/ext/ffi_c/libffi/src/closures.c +47 -10
  60. data/ext/ffi_c/libffi/src/frv/ffi.c +1 -1
  61. data/ext/ffi_c/libffi/src/java_raw_api.c +0 -3
  62. data/ext/ffi_c/libffi/src/mips/ffi.c +135 -32
  63. data/ext/ffi_c/libffi/src/mips/ffitarget.h +37 -4
  64. data/ext/ffi_c/libffi/src/mips/n32.S +67 -10
  65. data/ext/ffi_c/libffi/src/mips/o32.S +8 -8
  66. data/ext/ffi_c/libffi/src/pa/ffi.c +7 -0
  67. data/ext/ffi_c/libffi/src/powerpc/aix.S +163 -64
  68. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +308 -112
  69. data/ext/ffi_c/libffi/src/powerpc/ffi.c +20 -7
  70. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +208 -80
  71. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +11 -3
  72. data/ext/ffi_c/libffi/src/powerpc/sysv.S +12 -23
  73. data/ext/ffi_c/libffi/src/s390/sysv.S +1 -1
  74. data/ext/ffi_c/libffi/src/sh/sysv.S +9 -9
  75. data/ext/ffi_c/libffi/src/sh64/ffi.c +37 -22
  76. data/ext/ffi_c/libffi/src/sh64/sysv.S +23 -14
  77. data/ext/ffi_c/libffi/src/sparc/ffi.c +21 -6
  78. data/ext/ffi_c/libffi/src/sparc/v8.S +55 -14
  79. data/ext/ffi_c/libffi/src/x86/darwin.S +10 -9
  80. data/ext/ffi_c/libffi/src/x86/ffi.c +293 -86
  81. data/ext/ffi_c/libffi/src/x86/ffi64.c +73 -19
  82. data/ext/ffi_c/libffi/src/x86/ffitarget.h +30 -0
  83. data/ext/ffi_c/libffi/src/x86/sysv.S +21 -4
  84. data/ext/ffi_c/libffi/src/x86/unix64.S +8 -4
  85. data/ext/ffi_c/libffi/src/x86/win32.S +633 -147
  86. data/ext/ffi_c/libffi/src/x86/win64.S +460 -0
  87. data/ext/ffi_c/libffi/testsuite/Makefile.am +63 -54
  88. data/ext/ffi_c/libffi/testsuite/Makefile.in +112 -77
  89. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +12 -1
  90. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +4 -4
  91. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +7 -15
  92. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +7 -15
  93. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +7 -15
  94. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +7 -15
  95. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +7 -15
  96. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +7 -14
  97. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +7 -15
  98. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c +95 -0
  99. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_stdcall.c +6 -14
  100. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +4 -12
  101. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +4 -12
  102. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +4 -12
  103. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +4 -12
  104. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +4 -12
  105. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +4 -12
  106. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +4 -12
  107. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +4 -12
  108. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +4 -12
  109. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +4 -12
  110. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +4 -12
  111. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +4 -12
  112. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +4 -12
  113. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +4 -12
  114. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +4 -12
  115. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +4 -12
  116. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +4 -12
  117. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +4 -12
  118. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +4 -12
  119. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +4 -12
  120. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +4 -12
  121. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +4 -12
  122. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +4 -12
  123. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +4 -12
  124. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +4 -12
  125. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +4 -12
  126. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +4 -12
  127. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +134 -0
  128. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +117 -0
  129. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +11 -17
  130. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +4 -12
  131. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +4 -12
  132. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +7 -15
  133. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +4 -12
  134. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +4 -12
  135. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +7 -15
  136. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +66 -0
  137. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +4 -12
  138. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +57 -0
  139. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +4 -13
  140. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +105 -0
  141. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +57 -0
  142. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +4 -12
  143. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +4 -12
  144. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +4 -12
  145. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +4 -12
  146. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +4 -12
  147. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +4 -12
  148. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +74 -0
  149. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +140 -0
  150. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +4 -12
  151. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +4 -12
  152. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +4 -12
  153. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +4 -12
  154. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +4 -12
  155. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +8 -16
  156. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +4 -12
  157. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c +37 -0
  158. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +25 -0
  159. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +31 -0
  160. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +2 -1
  161. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +342 -0
  162. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +4 -12
  163. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +4 -12
  164. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +4 -12
  165. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +4 -12
  166. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +4 -12
  167. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +4 -12
  168. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +4 -12
  169. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +4 -12
  170. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +4 -12
  171. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +4 -12
  172. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +4 -12
  173. data/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +4 -12
  174. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
  175. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +1 -1
  176. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +145 -0
  177. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +148 -0
  178. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +124 -0
  179. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +124 -0
  180. data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +70 -0
  181. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +10 -0
  182. data/ext/ffi_c/libffi/testsuite/libffi.special/special.exp +4 -5
  183. data/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest.cc +17 -16
  184. data/ext/ffi_c/libffi/texinfo.tex +155 -427
  185. data/ext/ffi_c/libffi.bsd.mk +1 -1
  186. data/lib/ffi/autopointer.rb +79 -20
  187. data/lib/ffi/buffer.rb +4 -0
  188. data/lib/ffi/callback.rb +4 -10
  189. data/lib/ffi/enum.rb +28 -0
  190. data/lib/ffi/ffi.rb +0 -1
  191. data/lib/ffi/io.rb +28 -0
  192. data/lib/ffi/library.rb +237 -182
  193. data/lib/ffi/memorypointer.rb +28 -62
  194. data/lib/ffi/platform.rb +27 -0
  195. data/lib/ffi/pointer.rb +28 -0
  196. data/lib/ffi/struct.rb +55 -1
  197. data/lib/ffi/types.rb +29 -0
  198. data/lib/ffi/variadic.rb +29 -0
  199. data/spec/ffi/library_spec.rb +31 -5
  200. data/spec/ffi/managed_struct_spec.rb +1 -1
  201. data/spec/ffi/pointer_spec.rb +1 -1
  202. data/spec/ffi/rbx/attach_function_spec.rb +2 -1
  203. data/spec/ffi/rbx/memory_pointer_spec.rb +2 -1
  204. data/spec/ffi/spec_helper.rb +5 -1
  205. data/spec/ffi/struct_spec.rb +77 -0
  206. metadata +28 -18
  207. data/ext/ffi_c/libffi/TODO +0 -1
  208. data/ext/ffi_c/libffi/ltcf-c.sh +0 -861
  209. data/ext/ffi_c/libffi/ltcf-cxx.sh +0 -1069
  210. data/ext/ffi_c/libffi/ltcf-gcj.sh +0 -700
  211. data/ext/ffi_c/libffi/ltconfig +0 -2862
  212. data/ext/ffi_c/libffi/mkinstalldirs +0 -158
@@ -1,8 +1,9 @@
1
- # Makefile.in generated by automake 1.10 from Makefile.am.
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, Inc.
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 = $(SHELL) $(top_srcdir)/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
- ECHO = @ECHO@
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
- F77 = @F77@
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
- ac_ct_CXX = @ac_ct_CXX@
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 = config/default.exp lib/libffi-dg.exp \
184
- lib/target-libpath.exp lib/wrapper.exp libffi.call/call.exp \
185
- libffi.call/closure_fn0.c libffi.call/closure_fn1.c \
186
- libffi.call/closure_fn2.c libffi.call/closure_fn3.c \
187
- libffi.call/closure_fn4.c libffi.call/closure_fn5.c \
188
- libffi.call/closure_fn6.c libffi.call/closure_stdcall.c \
189
- libffi.call/cls_1_1byte.c libffi.call/cls_12byte.c \
190
- libffi.call/cls_16byte.c libffi.call/cls_18byte.c \
191
- libffi.call/cls_19byte.c libffi.call/cls_20byte1.c \
192
- libffi.call/cls_20byte.c libffi.call/cls_24byte.c \
193
- libffi.call/cls_2byte.c libffi.call/cls_3_1byte.c \
194
- libffi.call/cls_3byte1.c libffi.call/cls_3byte2.c \
195
- libffi.call/cls_4_1byte.c libffi.call/cls_4byte.c \
196
- libffi.call/cls_5_1_byte.c libffi.call/cls_5byte.c \
197
- libffi.call/cls_6_1_byte.c libffi.call/cls_64byte.c \
198
- libffi.call/cls_6byte.c libffi.call/cls_7_1_byte.c \
199
- libffi.call/cls_7byte.c libffi.call/cls_8byte.c \
200
- libffi.call/cls_9byte1.c libffi.call/cls_9byte2.c \
201
- libffi.call/cls_align_double.c libffi.call/cls_align_float.c \
202
- libffi.call/cls_align_longdouble.c libffi.call/cls_align_pointer.c \
203
- libffi.call/cls_align_sint16.c libffi.call/cls_align_sint32.c \
204
- libffi.call/cls_align_sint64.c libffi.call/cls_align_uint16.c \
205
- libffi.call/cls_align_uint32.c libffi.call/cls_align_uint64.c \
206
- libffi.call/cls_double.c libffi.call/cls_float.c \
207
- libffi.call/cls_multi_schar.c libffi.call/cls_multi_sshort.c \
208
- libffi.call/cls_multi_sshortchar.c libffi.call/cls_multi_uchar.c \
209
- libffi.call/cls_multi_ushort.c libffi.call/cls_multi_ushortchar.c \
210
- libffi.call/cls_schar.c libffi.call/cls_sint.c \
211
- libffi.call/cls_sshort.c libffi.call/cls_uchar.c \
212
- libffi.call/cls_uint.c libffi.call/cls_ulonglong.c \
213
- libffi.call/cls_ushort.c libffi.call/ffitest.h libffi.call/float1.c \
214
- libffi.call/float2.c libffi.call/float3.c libffi.call/float4.c \
215
- libffi.call/float.c libffi.call/many.c libffi.call/many_win32.c \
216
- libffi.call/negint.c libffi.call/nested_struct10.c \
217
- libffi.call/nested_struct1.c libffi.call/nested_struct2.c \
218
- libffi.call/nested_struct3.c libffi.call/nested_struct4.c \
219
- libffi.call/nested_struct5.c libffi.call/nested_struct6.c \
220
- libffi.call/nested_struct7.c libffi.call/nested_struct8.c \
221
- libffi.call/nested_struct9.c libffi.call/nested_struct.c \
222
- libffi.call/problem1.c libffi.call/promotion.c \
223
- libffi.call/pyobjc-tc.c libffi.call/return_dbl1.c \
224
- libffi.call/return_dbl2.c libffi.call/return_dbl.c \
225
- libffi.call/return_fl1.c libffi.call/return_fl2.c \
226
- libffi.call/return_fl3.c libffi.call/return_fl.c \
227
- libffi.call/return_ldl.c libffi.call/return_ll1.c \
228
- libffi.call/return_ll.c libffi.call/return_sc.c \
229
- libffi.call/return_sl.c libffi.call/return_uc.c \
230
- libffi.call/return_ul.c libffi.call/strlen.c \
231
- libffi.call/strlen_win32.c libffi.call/struct1.c \
232
- libffi.call/struct2.c libffi.call/struct3.c libffi.call/struct4.c \
233
- libffi.call/struct5.c libffi.call/struct6.c libffi.call/struct7.c \
234
- libffi.call/struct8.c libffi.call/struct9.c \
235
- libffi.special/ffitestcxx.h libffi.special/special.exp \
236
- libffi.special/unwindtest.cc libffi.special/unwindtest_ffi_call.cc
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
- && exit 0; \
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 testsuite/Makefile'; \
251
- cd $(top_srcdir) && \
252
- $(AUTOMAKE) --foreign testsuite/Makefile
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 -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
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 -pR $$d/$$file $(distdir)$$dir || exit 1; \
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 2 of the License, or
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; if not, write to the Free Software
15
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
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] + (int)(long)userdata;
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)(long)userdata, (int)*(ffi_arg *)resp);
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
- #ifndef USING_MMAP
53
- static ffi_closure cl;
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(ffi_prep_closure(pcl, &cif, closure_test_fn0,
88
- (void *) 3 /* userdata */) == FFI_OK);
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)pcl))
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] + (int)(long)userdata;
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)(long)userdata, (int)*(ffi_arg *)resp);
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
- #ifndef USING_MMAP
45
- static ffi_closure cl;
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(ffi_prep_closure(pcl, &cif, closure_test_fn1,
80
- (void *) 3 /* userdata */) == FFI_OK);
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)pcl))
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] + (int)(long)userdata;
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)(long)userdata,
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
- #ifndef USING_MMAP
45
- static ffi_closure cl;
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(ffi_prep_closure(pcl, &cif, closure_test_fn2,
80
- (void *) 3 /* userdata */) == FFI_OK);
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)pcl))
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] + (int)(long)userdata;
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)(long)userdata,
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
- #ifndef USING_MMAP
46
- static ffi_closure cl;
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(ffi_prep_closure(pcl, &cif, closure_test_fn3,
81
- (void *) 3 /* userdata */) == FFI_OK);
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)pcl))
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] + (int)(long)userdata;
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)(long)userdata, (int)*(ffi_arg *)resp);
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
- #ifndef USING_MMAP
64
- static ffi_closure cl;
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(ffi_prep_closure(pcl, &cif, closure_test_fn0,
87
- (void *) 3 /* userdata */) == FFI_OK);
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)pcl))
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" } */