ffi 1.9.18-x64-mingw32 → 1.9.21-x64-mingw32

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.

Potentially problematic release.


This version of ffi might be problematic. Click here for more details.

Files changed (384) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +3 -2
  3. data/Rakefile +14 -4
  4. data/ext/ffi_c/AbstractMemory.c +6 -1
  5. data/ext/ffi_c/Platform.c +10 -2
  6. data/ext/ffi_c/extconf.rb +7 -2
  7. data/ext/ffi_c/libffi.bsd.mk +9 -3
  8. data/ext/ffi_c/libffi.darwin.mk +14 -4
  9. data/ext/ffi_c/libffi.gnu.mk +2 -1
  10. data/ext/ffi_c/libffi.mk +9 -4
  11. data/ext/ffi_c/libffi/ChangeLog.libffi +2 -2
  12. data/ext/ffi_c/libffi/{ChangeLog → ChangeLog.libffi-3.1} +1402 -2
  13. data/ext/ffi_c/libffi/ChangeLog.v1 +1 -1
  14. data/ext/ffi_c/libffi/LICENSE +1 -1
  15. data/ext/ffi_c/libffi/Makefile.am +166 -157
  16. data/ext/ffi_c/libffi/Makefile.in +923 -938
  17. data/ext/ffi_c/libffi/README +164 -52
  18. data/ext/ffi_c/libffi/acinclude.m4 +381 -0
  19. data/ext/ffi_c/libffi/aclocal.m4 +645 -384
  20. data/ext/ffi_c/libffi/autogen.sh +2 -0
  21. data/ext/ffi_c/libffi/autom4te.cache/output.0 +21972 -0
  22. data/ext/ffi_c/libffi/autom4te.cache/output.1 +21972 -0
  23. data/ext/ffi_c/libffi/autom4te.cache/output.2 +21972 -0
  24. data/ext/ffi_c/libffi/autom4te.cache/output.3 +21972 -0
  25. data/ext/ffi_c/libffi/autom4te.cache/requests +331 -0
  26. data/ext/ffi_c/libffi/autom4te.cache/traces.0 +4010 -0
  27. data/ext/ffi_c/libffi/autom4te.cache/traces.1 +1005 -0
  28. data/ext/ffi_c/libffi/autom4te.cache/traces.2 +4010 -0
  29. data/ext/ffi_c/libffi/autom4te.cache/traces.3 +4010 -0
  30. data/ext/ffi_c/libffi/compile +218 -14
  31. data/ext/ffi_c/libffi/config.guess +329 -368
  32. data/ext/ffi_c/libffi/config.sub +232 -112
  33. data/ext/ffi_c/libffi/configure +6970 -2189
  34. data/ext/ffi_c/libffi/configure.ac +148 -256
  35. data/ext/ffi_c/libffi/configure.host +265 -4
  36. data/ext/ffi_c/libffi/depcomp +346 -185
  37. data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
  38. data/ext/ffi_c/libffi/doc/Makefile.in +811 -0
  39. data/ext/ffi_c/libffi/doc/libffi.texi +430 -45
  40. data/ext/ffi_c/libffi/{mdate-sh → doc/mdate-sh} +40 -13
  41. data/ext/ffi_c/libffi/{texinfo.tex → doc/texinfo.tex} +3990 -1121
  42. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  43. data/ext/ffi_c/libffi/fficonfig.h.in +24 -13
  44. data/ext/ffi_c/libffi/fficonfig.h.in~ +210 -0
  45. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +207 -0
  46. data/ext/ffi_c/libffi/include/Makefile.am +3 -3
  47. data/ext/ffi_c/libffi/include/Makefile.in +188 -71
  48. data/ext/ffi_c/libffi/include/ffi.h.in +107 -50
  49. data/ext/ffi_c/libffi/include/ffi_cfi.h +55 -0
  50. data/ext/ffi_c/libffi/include/ffi_common.h +32 -11
  51. data/ext/ffi_c/libffi/install-sh +190 -202
  52. data/ext/ffi_c/libffi/libffi.map.in +80 -0
  53. data/ext/ffi_c/libffi/libffi.pc.in +3 -2
  54. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +637 -0
  55. data/ext/ffi_c/libffi/libtool-ldflags +106 -0
  56. data/ext/ffi_c/libffi/libtool-version +1 -1
  57. data/ext/ffi_c/libffi/ltmain.sh +3553 -2033
  58. data/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
  59. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +69 -0
  60. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +13 -8
  61. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +31 -104
  62. data/ext/ffi_c/libffi/m4/{ax_check_compiler_flags.m4 → ax_check_compile_flag.m4} +30 -34
  63. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +32 -11
  64. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +6 -5
  65. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +31 -21
  66. data/ext/ffi_c/libffi/m4/libtool.m4 +1691 -1135
  67. data/ext/ffi_c/libffi/m4/ltoptions.m4 +104 -36
  68. data/ext/ffi_c/libffi/m4/ltsugar.m4 +4 -3
  69. data/ext/ffi_c/libffi/m4/ltversion.m4 +6 -6
  70. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +4 -3
  71. data/ext/ffi_c/libffi/man/Makefile.am +2 -2
  72. data/ext/ffi_c/libffi/man/Makefile.in +141 -49
  73. data/ext/ffi_c/libffi/man/ffi.3 +10 -0
  74. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +6 -4
  75. data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
  76. data/ext/ffi_c/libffi/missing +150 -311
  77. data/ext/ffi_c/libffi/msvcc.sh +72 -9
  78. data/ext/ffi_c/libffi/src/aarch64/ffi.c +941 -0
  79. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +81 -0
  80. data/ext/ffi_c/libffi/src/aarch64/internal.h +67 -0
  81. data/ext/ffi_c/libffi/src/aarch64/sysv.S +438 -0
  82. data/ext/ffi_c/libffi/src/alpha/ffi.c +335 -98
  83. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +10 -1
  84. data/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
  85. data/ext/ffi_c/libffi/src/alpha/osf.S +161 -266
  86. data/ext/ffi_c/libffi/src/arc/arcompact.S +135 -0
  87. data/ext/ffi_c/libffi/src/arc/ffi.c +266 -0
  88. data/ext/ffi_c/libffi/src/arc/ffitarget.h +53 -0
  89. data/ext/ffi_c/libffi/src/arm/ffi.c +597 -517
  90. data/ext/ffi_c/libffi/src/arm/ffitarget.h +24 -7
  91. data/ext/ffi_c/libffi/src/arm/internal.h +7 -0
  92. data/ext/ffi_c/libffi/src/arm/sysv.S +303 -417
  93. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +6 -1
  94. data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
  95. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
  96. data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
  97. data/ext/ffi_c/libffi/src/closures.c +319 -44
  98. data/ext/ffi_c/libffi/src/cris/ffi.c +10 -7
  99. data/ext/ffi_c/libffi/src/cris/ffitarget.h +6 -1
  100. data/ext/ffi_c/libffi/src/debug.c +6 -1
  101. data/ext/ffi_c/libffi/src/dlmalloc.c +16 -11
  102. data/ext/ffi_c/libffi/src/frv/ffi.c +1 -1
  103. data/ext/ffi_c/libffi/src/frv/ffitarget.h +6 -1
  104. data/ext/ffi_c/libffi/src/ia64/ffi.c +11 -7
  105. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +6 -1
  106. data/ext/ffi_c/libffi/src/java_raw_api.c +23 -5
  107. data/ext/ffi_c/libffi/src/m32r/ffi.c +1 -1
  108. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +6 -1
  109. data/ext/ffi_c/libffi/src/m68k/ffi.c +87 -13
  110. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +6 -1
  111. data/ext/ffi_c/libffi/src/m68k/sysv.S +119 -32
  112. data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
  113. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
  114. data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
  115. data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
  116. data/ext/ffi_c/libffi/{fficonfig.hw → src/metag/ffitarget.h} +22 -26
  117. data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
  118. data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
  119. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
  120. data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
  121. data/ext/ffi_c/libffi/src/mips/ffi.c +95 -28
  122. data/ext/ffi_c/libffi/src/mips/ffitarget.h +9 -2
  123. data/ext/ffi_c/libffi/src/mips/n32.S +126 -56
  124. data/ext/ffi_c/libffi/src/mips/o32.S +148 -27
  125. data/ext/ffi_c/libffi/src/moxie/eabi.S +55 -82
  126. data/ext/ffi_c/libffi/src/moxie/ffi.c +40 -44
  127. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
  128. data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
  129. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
  130. data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
  131. data/ext/ffi_c/libffi/src/or1k/ffi.c +328 -0
  132. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
  133. data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
  134. data/ext/ffi_c/libffi/src/pa/ffitarget.h +8 -1
  135. data/ext/ffi_c/libffi/src/powerpc/aix.S +6 -6
  136. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +3 -1
  137. data/ext/ffi_c/libffi/src/powerpc/asm.h +2 -2
  138. data/ext/ffi_c/libffi/src/powerpc/darwin.S +2 -7
  139. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +22 -26
  140. data/ext/ffi_c/libffi/src/powerpc/ffi.c +103 -1378
  141. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +25 -25
  142. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +945 -0
  143. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +94 -0
  144. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
  145. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +100 -44
  146. data/ext/ffi_c/libffi/src/powerpc/linux64.S +100 -59
  147. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +360 -108
  148. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +138 -68
  149. data/ext/ffi_c/libffi/src/powerpc/sysv.S +68 -112
  150. data/ext/ffi_c/libffi/src/prep_cif.c +108 -24
  151. data/ext/ffi_c/libffi/src/raw_api.c +18 -5
  152. data/ext/ffi_c/libffi/src/s390/ffi.c +294 -318
  153. data/ext/ffi_c/libffi/src/s390/ffitarget.h +9 -1
  154. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  155. data/ext/ffi_c/libffi/src/s390/sysv.S +257 -366
  156. data/ext/ffi_c/libffi/src/sh/ffi.c +4 -3
  157. data/ext/ffi_c/libffi/src/sh/ffitarget.h +6 -1
  158. data/ext/ffi_c/libffi/src/sh64/ffi.c +3 -2
  159. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +6 -1
  160. data/ext/ffi_c/libffi/src/sparc/ffi.c +326 -527
  161. data/ext/ffi_c/libffi/src/sparc/ffi64.c +608 -0
  162. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +20 -7
  163. data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
  164. data/ext/ffi_c/libffi/src/sparc/v8.S +364 -234
  165. data/ext/ffi_c/libffi/src/sparc/v9.S +340 -207
  166. data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
  167. data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
  168. data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
  169. data/ext/ffi_c/libffi/src/types.c +43 -14
  170. data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
  171. data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
  172. data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
  173. data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
  174. data/ext/ffi_c/libffi/src/x86/ffi.c +589 -500
  175. data/ext/ffi_c/libffi/src/x86/ffi64.c +338 -116
  176. data/ext/ffi_c/libffi/src/x86/ffitarget.h +55 -35
  177. data/ext/ffi_c/libffi/src/x86/ffiw64.c +287 -0
  178. data/ext/ffi_c/libffi/src/x86/internal.h +29 -0
  179. data/ext/ffi_c/libffi/src/x86/internal64.h +22 -0
  180. data/ext/ffi_c/libffi/src/x86/sysv.S +975 -400
  181. data/ext/ffi_c/libffi/src/x86/unix64.S +398 -299
  182. data/ext/ffi_c/libffi/src/x86/win64.S +222 -458
  183. data/ext/ffi_c/libffi/src/x86/win64_intel.S +237 -0
  184. data/ext/ffi_c/libffi/src/xtensa/ffi.c +298 -0
  185. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +53 -0
  186. data/ext/ffi_c/libffi/src/xtensa/sysv.S +253 -0
  187. data/ext/ffi_c/libffi/stamp-h.in +1 -0
  188. data/ext/ffi_c/libffi/testsuite/Makefile.am +78 -73
  189. data/ext/ffi_c/libffi/testsuite/Makefile.in +218 -111
  190. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +120 -25
  191. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +21 -1
  192. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
  193. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +4 -6
  194. data/ext/ffi_c/libffi/testsuite/libffi.call/{closure_stdcall.c → closure_simple.c} +7 -16
  195. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +4 -4
  196. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +4 -4
  197. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +4 -4
  198. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +4 -4
  199. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +4 -4
  200. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +4 -4
  201. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +4 -4
  202. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +5 -5
  203. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +4 -4
  204. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +4 -4
  205. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +4 -4
  206. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +4 -4
  207. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +4 -4
  208. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +4 -4
  209. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +4 -4
  210. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +4 -4
  211. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +5 -5
  212. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +4 -4
  213. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +4 -4
  214. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +4 -4
  215. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +4 -4
  216. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +4 -4
  217. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +4 -4
  218. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +4 -4
  219. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +4 -4
  220. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +4 -4
  221. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +4 -4
  222. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +4 -6
  223. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +4 -6
  224. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +4 -4
  225. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +4 -4
  226. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +4 -4
  227. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +4 -4
  228. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +4 -4
  229. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +4 -4
  230. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +4 -4
  231. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +4 -4
  232. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +10 -9
  233. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +3 -3
  234. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +10 -9
  235. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c +70 -0
  236. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c +55 -0
  237. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +1 -1
  238. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +11 -9
  239. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c +114 -0
  240. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c +44 -0
  241. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c +45 -0
  242. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c +45 -0
  243. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +5 -5
  244. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c +44 -0
  245. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +2 -2
  246. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +23 -40
  247. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +3 -1
  248. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +6 -4
  249. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +4 -2
  250. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +107 -0
  251. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +18 -19
  252. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +6 -16
  253. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
  254. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
  255. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
  256. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -1
  257. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +6 -6
  258. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +8 -8
  259. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +6 -6
  260. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c +121 -0
  261. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +5 -5
  262. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +5 -5
  263. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +5 -5
  264. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +5 -5
  265. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +6 -6
  266. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +5 -5
  267. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +6 -6
  268. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +6 -6
  269. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
  270. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
  271. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +1 -0
  272. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
  273. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +1 -1
  274. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +1 -1
  275. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +7 -7
  276. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +7 -7
  277. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +5 -5
  278. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +5 -5
  279. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +2 -2
  280. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
  281. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
  282. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
  283. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +9 -7
  284. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +7 -7
  285. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +7 -6
  286. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +9 -8
  287. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +9 -8
  288. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +9 -9
  289. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +9 -9
  290. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +9 -8
  291. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +9 -8
  292. data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +2 -2
  293. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
  294. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest.cc +3 -10
  295. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest_ffi_call.cc +2 -1
  296. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +196 -0
  297. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +121 -0
  298. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +123 -0
  299. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +125 -0
  300. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
  301. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
  302. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
  303. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
  304. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
  305. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
  306. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
  307. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
  308. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
  309. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
  310. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
  311. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
  312. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
  313. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
  314. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
  315. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
  316. data/ext/ffi_c/libffi/testsuite/{libffi.special/special.exp → libffi.complex/complex.exp} +9 -8
  317. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
  318. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
  319. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
  320. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
  321. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
  322. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
  323. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
  324. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
  325. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
  326. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
  327. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
  328. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
  329. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
  330. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
  331. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
  332. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
  333. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
  334. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
  335. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
  336. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
  337. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
  338. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
  339. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
  340. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
  341. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
  342. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
  343. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
  344. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
  345. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
  346. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
  347. data/ffi.gemspec +2 -2
  348. data/lib/2.0/ffi_c.so +0 -0
  349. data/lib/2.1/ffi_c.so +0 -0
  350. data/lib/2.2/ffi_c.so +0 -0
  351. data/lib/2.3/ffi_c.so +0 -0
  352. data/lib/2.4/ffi_c.so +0 -0
  353. data/lib/2.5/ffi_c.so +0 -0
  354. data/lib/ffi/enum.rb +124 -0
  355. data/lib/ffi/library.rb +65 -13
  356. data/lib/ffi/platform.rb +7 -2
  357. data/lib/ffi/platform/sparc64-linux/types.conf +102 -0
  358. data/lib/ffi/platform/x86_64-windows/types.conf +113 -20
  359. data/lib/ffi/pointer.rb +1 -0
  360. data/lib/ffi/struct.rb +0 -2
  361. data/lib/ffi/version.rb +1 -1
  362. data/spec/ffi/bitmask_spec.rb +575 -0
  363. data/spec/ffi/embed-test/ext/Makefile +242 -0
  364. data/spec/ffi/fixtures/BitmaskTest.c +51 -0
  365. data/spec/ffi/rbx/memory_pointer_spec.rb +4 -0
  366. data/spec/ffi/struct_spec.rb +0 -4
  367. metadata +158 -32
  368. data/ext/ffi_c/libffi/Makefile.vc +0 -141
  369. data/ext/ffi_c/libffi/Makefile.vc64 +0 -141
  370. data/ext/ffi_c/libffi/build-ios.sh +0 -67
  371. data/ext/ffi_c/libffi/doc/libffi.info +0 -593
  372. data/ext/ffi_c/libffi/doc/stamp-vti +0 -4
  373. data/ext/ffi_c/libffi/include/ffi.h.vc +0 -427
  374. data/ext/ffi_c/libffi/include/ffi.h.vc64 +0 -427
  375. data/ext/ffi_c/libffi/src/arm/gentramp.sh +0 -118
  376. data/ext/ffi_c/libffi/src/arm/trampoline.S +0 -4450
  377. data/ext/ffi_c/libffi/src/x86/darwin.S +0 -444
  378. data/ext/ffi_c/libffi/src/x86/darwin64.S +0 -416
  379. data/ext/ffi_c/libffi/src/x86/freebsd.S +0 -458
  380. data/ext/ffi_c/libffi/src/x86/win32.S +0 -1065
  381. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -300
  382. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -63
  383. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -44
  384. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -96
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check complex types.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_longdouble.inc"
10
+ #include "complex.inc"
@@ -0,0 +1 @@
1
+ #include "../libffi.call/ffitest.h"
@@ -0,0 +1,78 @@
1
+ /* -*-c-*- */
2
+ #include "ffitest.h"
3
+
4
+ #include <stdlib.h>
5
+ #include <complex.h>
6
+
7
+ static _Complex T_C_TYPE many(_Complex T_C_TYPE c1,
8
+ _Complex T_C_TYPE c2,
9
+ _Complex T_C_TYPE c3,
10
+ _Complex T_C_TYPE c4,
11
+ _Complex T_C_TYPE c5,
12
+ _Complex T_C_TYPE c6,
13
+ _Complex T_C_TYPE c7,
14
+ _Complex T_C_TYPE c8,
15
+ _Complex T_C_TYPE c9,
16
+ _Complex T_C_TYPE c10,
17
+ _Complex T_C_TYPE c11,
18
+ _Complex T_C_TYPE c12,
19
+ _Complex T_C_TYPE c13)
20
+ {
21
+ printf("0 :%f,%fi\n"
22
+ "1 :%f,%fi\n"
23
+ "2 :%f,%fi\n"
24
+ "3 :%f,%fi\n"
25
+ "4 :%f,%fi\n"
26
+ "5 :%f,%fi\n"
27
+ "6 :%f,%fi\n"
28
+ "7 :%f,%fi\n"
29
+ "8 :%f,%fi\n"
30
+ "9 :%f,%fi\n"
31
+ "10:%f,%fi\n"
32
+ "11:%f,%fi\n"
33
+ "12:%f,%fi\n",
34
+ T_CONV creal (c1), T_CONV cimag (c1),
35
+ T_CONV creal (c2), T_CONV cimag (c2),
36
+ T_CONV creal (c3), T_CONV cimag (c3),
37
+ T_CONV creal (c4), T_CONV cimag (c4),
38
+ T_CONV creal (c5), T_CONV cimag (c5),
39
+ T_CONV creal (c6), T_CONV cimag (c6),
40
+ T_CONV creal (c7), T_CONV cimag (c7),
41
+ T_CONV creal (c8), T_CONV cimag (c8),
42
+ T_CONV creal (c9), T_CONV cimag (c9),
43
+ T_CONV creal (c10), T_CONV cimag (c10),
44
+ T_CONV creal (c11), T_CONV cimag (c11),
45
+ T_CONV creal (c12), T_CONV cimag (c12),
46
+ T_CONV creal (c13), T_CONV cimag (c13));
47
+
48
+ return (c1+c2-c3-c4+c5+c6+c7-c8-c9-c10-c11+c12+c13);
49
+ }
50
+
51
+ int main (void)
52
+ {
53
+ ffi_cif cif;
54
+ ffi_type *args[13];
55
+ void *values[13];
56
+ _Complex T_C_TYPE ca[13];
57
+ _Complex T_C_TYPE c, cc;
58
+ int i;
59
+
60
+ for (i = 0; i < 13; i++)
61
+ {
62
+ args[i] = &T_FFI_TYPE;
63
+ values[i] = &ca[i];
64
+ ca[i] = i + (-20 - i) * I;
65
+ }
66
+
67
+ /* Initialize the cif */
68
+ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 13, &T_FFI_TYPE, args) == FFI_OK);
69
+
70
+ ffi_call(&cif, FFI_FN(many), &c, values);
71
+
72
+ cc = many(ca[0], ca[1], ca[2], ca[3], ca[4], ca[5], ca[6], ca[7], ca[8],
73
+ ca[9], ca[10], ca[11], ca[12]);
74
+ CHECK(creal (cc) == creal (c));
75
+ CHECK(cimag (cc) == cimag (c));
76
+
77
+ exit(0);
78
+ }
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check return value complex, with many arguments
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_double.inc"
10
+ #include "many_complex.inc"
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check return value complex, with many arguments
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_float.inc"
10
+ #include "many_complex.inc"
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check return value complex, with many arguments
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_longdouble.inc"
10
+ #include "many_complex.inc"
@@ -0,0 +1,37 @@
1
+ /* -*-c-*- */
2
+ #include "ffitest.h"
3
+ #include <complex.h>
4
+
5
+ static _Complex T_C_TYPE return_c(_Complex T_C_TYPE c)
6
+ {
7
+ printf ("%f,%fi\n", T_CONV creal (c), T_CONV cimag (c));
8
+ return 2 * c;
9
+ }
10
+ int main (void)
11
+ {
12
+ ffi_cif cif;
13
+ ffi_type *args[MAX_ARGS];
14
+ void *values[MAX_ARGS];
15
+ _Complex T_C_TYPE c, rc, rc2;
16
+ T_C_TYPE cr, ci;
17
+
18
+ args[0] = &T_FFI_TYPE;
19
+ values[0] = &c;
20
+
21
+ /* Initialize the cif */
22
+ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
23
+ &T_FFI_TYPE, args) == FFI_OK);
24
+
25
+ for (cr = -127.0; cr < 127; cr++)
26
+ {
27
+ ci = 1000.0 - cr;
28
+ c = cr + ci * I;
29
+ ffi_call(&cif, FFI_FN(return_c), &rc, values);
30
+ rc2 = return_c(c);
31
+ printf ("%f,%fi vs %f,%fi\n",
32
+ T_CONV creal (rc), T_CONV cimag (rc),
33
+ T_CONV creal (rc2), T_CONV cimag (rc2));
34
+ CHECK(rc == 2 * c);
35
+ }
36
+ exit(0);
37
+ }
@@ -0,0 +1,41 @@
1
+ /* -*-c-*- */
2
+ #include "ffitest.h"
3
+ #include <complex.h>
4
+
5
+ static _Complex T_C_TYPE return_c(_Complex T_C_TYPE c1, float fl2, unsigned int in3, _Complex T_C_TYPE c4)
6
+ {
7
+ return c1 + fl2 + in3 + c4;
8
+ }
9
+ int main (void)
10
+ {
11
+ ffi_cif cif;
12
+ ffi_type *args[MAX_ARGS];
13
+ void *values[MAX_ARGS];
14
+ _Complex T_C_TYPE c1, c4, rc, rc2;
15
+ float fl2;
16
+ unsigned int in3;
17
+ args[0] = &T_FFI_TYPE;
18
+ args[1] = &ffi_type_float;
19
+ args[2] = &ffi_type_uint;
20
+ args[3] = &T_FFI_TYPE;
21
+ values[0] = &c1;
22
+ values[1] = &fl2;
23
+ values[2] = &in3;
24
+ values[3] = &c4;
25
+
26
+ /* Initialize the cif */
27
+ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4,
28
+ &T_FFI_TYPE, args) == FFI_OK);
29
+ c1 = 127.0 + 255.0 * I;
30
+ fl2 = 128.0;
31
+ in3 = 255;
32
+ c4 = 512.7 + 1024.1 * I;
33
+
34
+ ffi_call(&cif, FFI_FN(return_c), &rc, values);
35
+ rc2 = return_c(c1, fl2, in3, c4);
36
+ printf ("%f,%fi vs %f,%fi\n",
37
+ T_CONV creal (rc), T_CONV cimag (rc),
38
+ T_CONV creal (rc2), T_CONV cimag (rc2));
39
+ CHECK(rc == rc2);
40
+ exit(0);
41
+ }
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check return value complex.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_double.inc"
10
+ #include "return_complex1.inc"
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check return value complex.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_float.inc"
10
+ #include "return_complex1.inc"
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check return value complex.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_longdouble.inc"
10
+ #include "return_complex1.inc"
@@ -0,0 +1,44 @@
1
+ /* -*-c-*- */
2
+ #include "ffitest.h"
3
+ #include <complex.h>
4
+
5
+ _Complex T_C_TYPE
6
+ return_c(_Complex T_C_TYPE c1, _Complex T_C_TYPE c2,
7
+ unsigned int in3, _Complex T_C_TYPE c4)
8
+ {
9
+ volatile _Complex T_C_TYPE r = c1 + c2 + in3 + c4;
10
+ return r;
11
+ }
12
+
13
+ int main (void)
14
+ {
15
+ ffi_cif cif;
16
+ ffi_type *args[MAX_ARGS];
17
+ void *values[MAX_ARGS];
18
+ _Complex T_C_TYPE c1, c2, c4, rc, rc2;
19
+ unsigned int in3;
20
+ args[0] = &T_FFI_TYPE;
21
+ args[1] = &T_FFI_TYPE;
22
+ args[2] = &ffi_type_uint;
23
+ args[3] = &T_FFI_TYPE;
24
+ values[0] = &c1;
25
+ values[1] = &c2;
26
+ values[2] = &in3;
27
+ values[3] = &c4;
28
+
29
+ /* Initialize the cif */
30
+ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4,
31
+ &T_FFI_TYPE, args) == FFI_OK);
32
+ c1 = 127.0 + 255.0 * I;
33
+ c2 = 128.0 + 256.0;
34
+ in3 = 255;
35
+ c4 = 512.7 + 1024.1 * I;
36
+
37
+ ffi_call(&cif, FFI_FN(return_c), &rc, values);
38
+ rc2 = return_c(c1, c2, in3, c4);
39
+ printf ("%f,%fi vs %f,%fi\n",
40
+ T_CONV creal (rc), T_CONV cimag (rc),
41
+ T_CONV creal (rc2), T_CONV cimag (rc2));
42
+ CHECK(rc == rc2);
43
+ exit(0);
44
+ }
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check return value complex.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_double.inc"
10
+ #include "return_complex2.inc"
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check return value complex.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_float.inc"
10
+ #include "return_complex2.inc"
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check return value complex.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_longdouble.inc"
10
+ #include "return_complex2.inc"
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check return value complex.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_double.inc"
10
+ #include "return_complex.inc"
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check return value complex.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_float.inc"
10
+ #include "return_complex.inc"
@@ -0,0 +1,10 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check return value complex.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: <vogt@linux.vnet.ibm.com>. */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "complex_defs_longdouble.inc"
10
+ #include "return_complex.inc"
@@ -0,0 +1,34 @@
1
+ /* { dg-do run } */
2
+
3
+ #include "static-chain.h"
4
+
5
+ #if defined(__GNUC__) && !defined(__clang__) && defined(STATIC_CHAIN_REG)
6
+
7
+ #include "ffitest.h"
8
+
9
+ /* Blatent assumption here that the prologue doesn't clobber the
10
+ static chain for trivial functions. If this is not true, don't
11
+ define STATIC_CHAIN_REG, and we'll test what we can via other tests. */
12
+ void *doit(void)
13
+ {
14
+ register void *chain __asm__(STATIC_CHAIN_REG);
15
+ return chain;
16
+ }
17
+
18
+ int main()
19
+ {
20
+ ffi_cif cif;
21
+ void *result;
22
+
23
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 0, &ffi_type_pointer, NULL) == FFI_OK);
24
+
25
+ ffi_call_go(&cif, FFI_FN(doit), &result, NULL, &result);
26
+
27
+ CHECK(result == &result);
28
+
29
+ return 0;
30
+ }
31
+
32
+ #else /* UNSUPPORTED */
33
+ int main() { return 0; }
34
+ #endif
@@ -0,0 +1,28 @@
1
+ /* { dg-do run } */
2
+
3
+ #include "ffitest.h"
4
+
5
+ void doit(ffi_cif *cif, void *rvalue, void **avalue, void *closure)
6
+ {
7
+ (void)cif;
8
+ (void)avalue;
9
+ *(void **)rvalue = closure;
10
+ }
11
+
12
+ typedef void * (*FN)(void);
13
+
14
+ int main()
15
+ {
16
+ ffi_cif cif;
17
+ ffi_go_closure cl;
18
+ void *result;
19
+
20
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 0, &ffi_type_pointer, NULL) == FFI_OK);
21
+ CHECK(ffi_prep_go_closure(&cl, &cif, doit) == FFI_OK);
22
+
23
+ ffi_call_go(&cif, FFI_FN(*(FN *)&cl), &result, NULL, &cl);
24
+
25
+ CHECK(result == &cl);
26
+
27
+ exit(0);
28
+ }
@@ -0,0 +1 @@
1
+ #include "../libffi.call/ffitest.h"
@@ -0,0 +1,36 @@
1
+ # Copyright (C) 2003, 2006, 2009, 2010, 2014 Free Software Foundation, Inc.
2
+
3
+ # This program is free software; you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation; either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with this program; see the file COPYING3. If not see
15
+ # <http://www.gnu.org/licenses/>.
16
+
17
+ dg-init
18
+ libffi-init
19
+
20
+ global srcdir subdir
21
+
22
+ set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.{c,cc}]]
23
+
24
+ if { [libffi_feature_test "#ifdef FFI_GO_CLOSURES"] } {
25
+ run-many-tests $tlist ""
26
+ } else {
27
+ foreach test $tlist {
28
+ unsupported "$test"
29
+ }
30
+ }
31
+
32
+ dg-finish
33
+
34
+ # Local Variables:
35
+ # tcl-indent-level:4
36
+ # End: