ffi 1.9.18 → 1.9.21

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (366) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/Rakefile +14 -3
  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/README +164 -52
  17. data/ext/ffi_c/libffi/acinclude.m4 +381 -0
  18. data/ext/ffi_c/libffi/autogen.sh +2 -0
  19. data/ext/ffi_c/libffi/configure.ac +148 -256
  20. data/ext/ffi_c/libffi/configure.host +265 -4
  21. data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
  22. data/ext/ffi_c/libffi/doc/libffi.texi +430 -45
  23. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  24. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +207 -0
  25. data/ext/ffi_c/libffi/include/Makefile.am +3 -3
  26. data/ext/ffi_c/libffi/include/ffi.h.in +107 -50
  27. data/ext/ffi_c/libffi/include/ffi_cfi.h +55 -0
  28. data/ext/ffi_c/libffi/include/ffi_common.h +32 -11
  29. data/ext/ffi_c/libffi/libffi.map.in +80 -0
  30. data/ext/ffi_c/libffi/libffi.pc.in +3 -2
  31. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +637 -0
  32. data/ext/ffi_c/libffi/libtool-ldflags +106 -0
  33. data/ext/ffi_c/libffi/libtool-version +1 -1
  34. data/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
  35. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +69 -0
  36. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +13 -8
  37. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +31 -104
  38. data/ext/ffi_c/libffi/m4/{ax_check_compiler_flags.m4 → ax_check_compile_flag.m4} +30 -34
  39. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +32 -11
  40. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +6 -5
  41. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +31 -21
  42. data/ext/ffi_c/libffi/man/Makefile.am +2 -2
  43. data/ext/ffi_c/libffi/man/ffi.3 +10 -0
  44. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +6 -4
  45. data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
  46. data/ext/ffi_c/libffi/msvcc.sh +72 -9
  47. data/ext/ffi_c/libffi/src/aarch64/ffi.c +941 -0
  48. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +81 -0
  49. data/ext/ffi_c/libffi/src/aarch64/internal.h +67 -0
  50. data/ext/ffi_c/libffi/src/aarch64/sysv.S +438 -0
  51. data/ext/ffi_c/libffi/src/alpha/ffi.c +335 -98
  52. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +10 -1
  53. data/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
  54. data/ext/ffi_c/libffi/src/alpha/osf.S +161 -266
  55. data/ext/ffi_c/libffi/src/arc/arcompact.S +135 -0
  56. data/ext/ffi_c/libffi/src/arc/ffi.c +266 -0
  57. data/ext/ffi_c/libffi/src/arc/ffitarget.h +53 -0
  58. data/ext/ffi_c/libffi/src/arm/ffi.c +597 -517
  59. data/ext/ffi_c/libffi/src/arm/ffitarget.h +24 -7
  60. data/ext/ffi_c/libffi/src/arm/internal.h +7 -0
  61. data/ext/ffi_c/libffi/src/arm/sysv.S +303 -417
  62. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +6 -1
  63. data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
  64. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
  65. data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
  66. data/ext/ffi_c/libffi/src/closures.c +319 -44
  67. data/ext/ffi_c/libffi/src/cris/ffi.c +10 -7
  68. data/ext/ffi_c/libffi/src/cris/ffitarget.h +6 -1
  69. data/ext/ffi_c/libffi/src/debug.c +6 -1
  70. data/ext/ffi_c/libffi/src/dlmalloc.c +16 -11
  71. data/ext/ffi_c/libffi/src/frv/ffi.c +1 -1
  72. data/ext/ffi_c/libffi/src/frv/ffitarget.h +6 -1
  73. data/ext/ffi_c/libffi/src/ia64/ffi.c +11 -7
  74. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +6 -1
  75. data/ext/ffi_c/libffi/src/java_raw_api.c +23 -5
  76. data/ext/ffi_c/libffi/src/m32r/ffi.c +1 -1
  77. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +6 -1
  78. data/ext/ffi_c/libffi/src/m68k/ffi.c +87 -13
  79. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +6 -1
  80. data/ext/ffi_c/libffi/src/m68k/sysv.S +119 -32
  81. data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
  82. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
  83. data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
  84. data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
  85. data/ext/ffi_c/libffi/{fficonfig.hw → src/metag/ffitarget.h} +22 -26
  86. data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
  87. data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
  88. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
  89. data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
  90. data/ext/ffi_c/libffi/src/mips/ffi.c +95 -28
  91. data/ext/ffi_c/libffi/src/mips/ffitarget.h +9 -2
  92. data/ext/ffi_c/libffi/src/mips/n32.S +126 -56
  93. data/ext/ffi_c/libffi/src/mips/o32.S +148 -27
  94. data/ext/ffi_c/libffi/src/moxie/eabi.S +55 -82
  95. data/ext/ffi_c/libffi/src/moxie/ffi.c +40 -44
  96. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
  97. data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
  98. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
  99. data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
  100. data/ext/ffi_c/libffi/src/or1k/ffi.c +328 -0
  101. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
  102. data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
  103. data/ext/ffi_c/libffi/src/pa/ffitarget.h +8 -1
  104. data/ext/ffi_c/libffi/src/powerpc/aix.S +6 -6
  105. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +3 -1
  106. data/ext/ffi_c/libffi/src/powerpc/asm.h +2 -2
  107. data/ext/ffi_c/libffi/src/powerpc/darwin.S +2 -7
  108. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +22 -26
  109. data/ext/ffi_c/libffi/src/powerpc/ffi.c +103 -1378
  110. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +25 -25
  111. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +945 -0
  112. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +94 -0
  113. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
  114. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +100 -44
  115. data/ext/ffi_c/libffi/src/powerpc/linux64.S +100 -59
  116. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +360 -108
  117. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +138 -68
  118. data/ext/ffi_c/libffi/src/powerpc/sysv.S +68 -112
  119. data/ext/ffi_c/libffi/src/prep_cif.c +108 -24
  120. data/ext/ffi_c/libffi/src/raw_api.c +18 -5
  121. data/ext/ffi_c/libffi/src/s390/ffi.c +294 -318
  122. data/ext/ffi_c/libffi/src/s390/ffitarget.h +9 -1
  123. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  124. data/ext/ffi_c/libffi/src/s390/sysv.S +257 -366
  125. data/ext/ffi_c/libffi/src/sh/ffi.c +4 -3
  126. data/ext/ffi_c/libffi/src/sh/ffitarget.h +6 -1
  127. data/ext/ffi_c/libffi/src/sh64/ffi.c +3 -2
  128. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +6 -1
  129. data/ext/ffi_c/libffi/src/sparc/ffi.c +326 -527
  130. data/ext/ffi_c/libffi/src/sparc/ffi64.c +608 -0
  131. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +20 -7
  132. data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
  133. data/ext/ffi_c/libffi/src/sparc/v8.S +364 -234
  134. data/ext/ffi_c/libffi/src/sparc/v9.S +340 -207
  135. data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
  136. data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
  137. data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
  138. data/ext/ffi_c/libffi/src/types.c +43 -14
  139. data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
  140. data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
  141. data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
  142. data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
  143. data/ext/ffi_c/libffi/src/x86/ffi.c +589 -500
  144. data/ext/ffi_c/libffi/src/x86/ffi64.c +338 -116
  145. data/ext/ffi_c/libffi/src/x86/ffitarget.h +55 -35
  146. data/ext/ffi_c/libffi/src/x86/ffiw64.c +287 -0
  147. data/ext/ffi_c/libffi/src/x86/internal.h +29 -0
  148. data/ext/ffi_c/libffi/src/x86/internal64.h +22 -0
  149. data/ext/ffi_c/libffi/src/x86/sysv.S +975 -400
  150. data/ext/ffi_c/libffi/src/x86/unix64.S +398 -299
  151. data/ext/ffi_c/libffi/src/x86/win64.S +222 -458
  152. data/ext/ffi_c/libffi/src/x86/win64_intel.S +237 -0
  153. data/ext/ffi_c/libffi/src/xtensa/ffi.c +298 -0
  154. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +53 -0
  155. data/ext/ffi_c/libffi/src/xtensa/sysv.S +253 -0
  156. data/ext/ffi_c/libffi/stamp-h.in +1 -0
  157. data/ext/ffi_c/libffi/testsuite/Makefile.am +78 -73
  158. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +120 -25
  159. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +21 -1
  160. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
  161. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +4 -6
  162. data/ext/ffi_c/libffi/testsuite/libffi.call/{closure_stdcall.c → closure_simple.c} +7 -16
  163. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +4 -4
  164. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +4 -4
  165. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +4 -4
  166. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +4 -4
  167. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +4 -4
  168. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +4 -4
  169. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +4 -4
  170. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +5 -5
  171. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +4 -4
  172. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +4 -4
  173. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +4 -4
  174. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +4 -4
  175. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +4 -4
  176. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +4 -4
  177. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +4 -4
  178. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +4 -4
  179. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +5 -5
  180. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +4 -4
  181. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +4 -4
  182. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +4 -4
  183. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +4 -4
  184. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +4 -4
  185. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +4 -4
  186. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +4 -4
  187. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +4 -4
  188. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +4 -4
  189. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +4 -4
  190. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +4 -6
  191. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +4 -6
  192. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +4 -4
  193. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +4 -4
  194. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +4 -4
  195. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +4 -4
  196. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +4 -4
  197. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +4 -4
  198. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +4 -4
  199. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +4 -4
  200. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +10 -9
  201. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +3 -3
  202. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +10 -9
  203. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c +70 -0
  204. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c +55 -0
  205. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +1 -1
  206. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +11 -9
  207. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c +114 -0
  208. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c +44 -0
  209. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c +45 -0
  210. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c +45 -0
  211. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +5 -5
  212. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c +44 -0
  213. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +2 -2
  214. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +23 -40
  215. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +3 -1
  216. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +6 -4
  217. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +4 -2
  218. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +107 -0
  219. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +18 -19
  220. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +6 -16
  221. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
  222. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
  223. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
  224. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -1
  225. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +6 -6
  226. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +8 -8
  227. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +6 -6
  228. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c +121 -0
  229. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +5 -5
  230. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +5 -5
  231. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +5 -5
  232. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +5 -5
  233. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +6 -6
  234. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +5 -5
  235. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +6 -6
  236. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +6 -6
  237. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
  238. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
  239. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +1 -0
  240. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
  241. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +1 -1
  242. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +1 -1
  243. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +7 -7
  244. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +7 -7
  245. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +5 -5
  246. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +5 -5
  247. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +2 -2
  248. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
  249. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
  250. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
  251. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +9 -7
  252. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +7 -7
  253. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +7 -6
  254. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +9 -8
  255. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +9 -8
  256. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +9 -9
  257. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +9 -9
  258. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +9 -8
  259. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +9 -8
  260. data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +2 -2
  261. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
  262. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest.cc +3 -10
  263. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest_ffi_call.cc +2 -1
  264. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +196 -0
  265. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +121 -0
  266. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +123 -0
  267. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +125 -0
  268. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
  269. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
  270. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
  271. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
  272. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
  273. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
  274. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
  275. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
  276. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
  277. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
  278. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
  279. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
  280. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
  281. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
  282. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
  283. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
  284. data/ext/ffi_c/libffi/testsuite/{libffi.special/special.exp → libffi.complex/complex.exp} +9 -8
  285. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
  286. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
  287. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
  288. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
  289. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
  290. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
  291. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
  292. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
  293. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
  294. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
  295. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
  296. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
  297. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
  298. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
  299. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
  300. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
  301. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
  302. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
  303. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
  304. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
  305. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
  306. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
  307. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
  308. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
  309. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
  310. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
  311. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
  312. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
  313. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
  314. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
  315. data/ffi.gemspec +2 -2
  316. data/lib/ffi/enum.rb +124 -0
  317. data/lib/ffi/library.rb +65 -13
  318. data/lib/ffi/platform.rb +7 -2
  319. data/lib/ffi/platform/sparc64-linux/types.conf +102 -0
  320. data/lib/ffi/platform/x86_64-windows/types.conf +113 -20
  321. data/lib/ffi/pointer.rb +1 -0
  322. data/lib/ffi/struct.rb +0 -2
  323. data/lib/ffi/version.rb +1 -1
  324. data/spec/ffi/bitmask_spec.rb +575 -0
  325. data/spec/ffi/fixtures/BitmaskTest.c +51 -0
  326. data/spec/ffi/rbx/memory_pointer_spec.rb +4 -0
  327. data/spec/ffi/struct_spec.rb +0 -4
  328. metadata +143 -51
  329. data/ext/ffi_c/libffi/Makefile.in +0 -1820
  330. data/ext/ffi_c/libffi/Makefile.vc +0 -141
  331. data/ext/ffi_c/libffi/Makefile.vc64 +0 -141
  332. data/ext/ffi_c/libffi/aclocal.m4 +0 -1873
  333. data/ext/ffi_c/libffi/build-ios.sh +0 -67
  334. data/ext/ffi_c/libffi/compile +0 -143
  335. data/ext/ffi_c/libffi/config.guess +0 -1501
  336. data/ext/ffi_c/libffi/config.sub +0 -1705
  337. data/ext/ffi_c/libffi/configure +0 -17191
  338. data/ext/ffi_c/libffi/depcomp +0 -630
  339. data/ext/ffi_c/libffi/doc/libffi.info +0 -593
  340. data/ext/ffi_c/libffi/doc/stamp-vti +0 -4
  341. data/ext/ffi_c/libffi/fficonfig.h.in +0 -199
  342. data/ext/ffi_c/libffi/include/Makefile.in +0 -487
  343. data/ext/ffi_c/libffi/include/ffi.h.vc +0 -427
  344. data/ext/ffi_c/libffi/include/ffi.h.vc64 +0 -427
  345. data/ext/ffi_c/libffi/install-sh +0 -520
  346. data/ext/ffi_c/libffi/ltmain.sh +0 -9636
  347. data/ext/ffi_c/libffi/m4/libtool.m4 +0 -7831
  348. data/ext/ffi_c/libffi/m4/ltoptions.m4 +0 -369
  349. data/ext/ffi_c/libffi/m4/ltsugar.m4 +0 -123
  350. data/ext/ffi_c/libffi/m4/ltversion.m4 +0 -23
  351. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +0 -98
  352. data/ext/ffi_c/libffi/man/Makefile.in +0 -466
  353. data/ext/ffi_c/libffi/mdate-sh +0 -201
  354. data/ext/ffi_c/libffi/missing +0 -376
  355. data/ext/ffi_c/libffi/src/arm/gentramp.sh +0 -118
  356. data/ext/ffi_c/libffi/src/arm/trampoline.S +0 -4450
  357. data/ext/ffi_c/libffi/src/x86/darwin.S +0 -444
  358. data/ext/ffi_c/libffi/src/x86/darwin64.S +0 -416
  359. data/ext/ffi_c/libffi/src/x86/freebsd.S +0 -458
  360. data/ext/ffi_c/libffi/src/x86/win32.S +0 -1065
  361. data/ext/ffi_c/libffi/testsuite/Makefile.in +0 -500
  362. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -300
  363. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -63
  364. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -44
  365. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -96
  366. data/ext/ffi_c/libffi/texinfo.tex +0 -7210
@@ -0,0 +1,49 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check strlen function call with additional arguments.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: From the original ffitest.c */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "ffitest.h"
10
+
11
+ static size_t ABI_ATTR my_f(char *s, float a)
12
+ {
13
+ return (size_t) ((int) strlen(s) + (int) a);
14
+ }
15
+
16
+ int main (void)
17
+ {
18
+ ffi_cif cif;
19
+ ffi_type *args[MAX_ARGS];
20
+ void *values[MAX_ARGS];
21
+ ffi_arg rint;
22
+ char *s;
23
+ float v2;
24
+ args[0] = &ffi_type_pointer;
25
+ args[1] = &ffi_type_float;
26
+ values[0] = (void*) &s;
27
+ values[1] = (void*) &v2;
28
+
29
+ /* Initialize the cif */
30
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 2,
31
+ &ffi_type_sint, args) == FFI_OK);
32
+
33
+ s = "a";
34
+ v2 = 0.0;
35
+ ffi_call(&cif, FFI_FN(my_f), &rint, values);
36
+ CHECK(rint == 1);
37
+
38
+ s = "1234567";
39
+ v2 = -1.0;
40
+ ffi_call(&cif, FFI_FN(my_f), &rint, values);
41
+ CHECK(rint == 6);
42
+
43
+ s = "1234567890123456789012345";
44
+ v2 = 1.0;
45
+ ffi_call(&cif, FFI_FN(my_f), &rint, values);
46
+ CHECK(rint == 26);
47
+
48
+ exit(0);
49
+ }
@@ -0,0 +1,49 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check strlen function call with additional arguments.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: From the original ffitest.c */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "ffitest.h"
10
+
11
+ static size_t ABI_ATTR my_f(float a, char *s)
12
+ {
13
+ return (size_t) ((int) strlen(s) + (int) a);
14
+ }
15
+
16
+ int main (void)
17
+ {
18
+ ffi_cif cif;
19
+ ffi_type *args[MAX_ARGS];
20
+ void *values[MAX_ARGS];
21
+ ffi_arg rint;
22
+ char *s;
23
+ float v2;
24
+ args[1] = &ffi_type_pointer;
25
+ args[0] = &ffi_type_float;
26
+ values[1] = (void*) &s;
27
+ values[0] = (void*) &v2;
28
+
29
+ /* Initialize the cif */
30
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 2,
31
+ &ffi_type_sint, args) == FFI_OK);
32
+
33
+ s = "a";
34
+ v2 = 0.0;
35
+ ffi_call(&cif, FFI_FN(my_f), &rint, values);
36
+ CHECK(rint == 1);
37
+
38
+ s = "1234567";
39
+ v2 = -1.0;
40
+ ffi_call(&cif, FFI_FN(my_f), &rint, values);
41
+ CHECK(rint == 6);
42
+
43
+ s = "1234567890123456789012345";
44
+ v2 = 1.0;
45
+ ffi_call(&cif, FFI_FN(my_f), &rint, values);
46
+ CHECK(rint == 26);
47
+
48
+ exit(0);
49
+ }
@@ -0,0 +1,55 @@
1
+ /* Area: ffi_call
2
+ Purpose: Check strlen function call with additional arguments.
3
+ Limitations: none.
4
+ PR: none.
5
+ Originator: From the original ffitest.c */
6
+
7
+ /* { dg-do run } */
8
+
9
+ #include "ffitest.h"
10
+
11
+ static size_t ABI_ATTR my_f(float a, char *s, int i)
12
+ {
13
+ return (size_t) ((int) strlen(s) + (int) a + i);
14
+ }
15
+
16
+ int main (void)
17
+ {
18
+ ffi_cif cif;
19
+ ffi_type *args[MAX_ARGS];
20
+ void *values[MAX_ARGS];
21
+ ffi_arg rint;
22
+ char *s;
23
+ int v1;
24
+ float v2;
25
+ args[2] = &ffi_type_sint;
26
+ args[1] = &ffi_type_pointer;
27
+ args[0] = &ffi_type_float;
28
+ values[2] = (void*) &v1;
29
+ values[1] = (void*) &s;
30
+ values[0] = (void*) &v2;
31
+
32
+ /* Initialize the cif */
33
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 3,
34
+ &ffi_type_sint, args) == FFI_OK);
35
+
36
+ s = "a";
37
+ v1 = 1;
38
+ v2 = 0.0;
39
+ ffi_call(&cif, FFI_FN(my_f), &rint, values);
40
+ CHECK(rint == 2);
41
+
42
+ s = "1234567";
43
+ v2 = -1.0;
44
+ v1 = -2;
45
+ ffi_call(&cif, FFI_FN(my_f), &rint, values);
46
+ CHECK(rint == 4);
47
+
48
+ s = "1234567890123456789012345";
49
+ v2 = 1.0;
50
+ v1 = 2;
51
+ ffi_call(&cif, FFI_FN(my_f), &rint, values);
52
+ CHECK(rint == 28);
53
+
54
+ exit(0);
55
+ }
@@ -14,7 +14,7 @@ typedef struct
14
14
  unsigned int ui;
15
15
  } test_structure_1;
16
16
 
17
- static test_structure_1 struct1(test_structure_1 ts)
17
+ static test_structure_1 ABI_ATTR struct1(test_structure_1 ts)
18
18
  {
19
19
  ts.uc++;
20
20
  ts.d--;
@@ -30,6 +30,13 @@ int main (void)
30
30
  void *values[MAX_ARGS];
31
31
  ffi_type ts1_type;
32
32
  ffi_type *ts1_type_elements[4];
33
+
34
+ test_structure_1 ts1_arg;
35
+
36
+ /* This is a hack to get a properly aligned result buffer */
37
+ test_structure_1 *ts1_result =
38
+ (test_structure_1 *) malloc (sizeof(test_structure_1));
39
+
33
40
  ts1_type.size = 0;
34
41
  ts1_type.alignment = 0;
35
42
  ts1_type.type = FFI_TYPE_STRUCT;
@@ -39,16 +46,11 @@ int main (void)
39
46
  ts1_type_elements[2] = &ffi_type_uint;
40
47
  ts1_type_elements[3] = NULL;
41
48
 
42
- test_structure_1 ts1_arg;
43
- /* This is a hack to get a properly aligned result buffer */
44
- test_structure_1 *ts1_result =
45
- (test_structure_1 *) malloc (sizeof(test_structure_1));
46
-
47
49
  args[0] = &ts1_type;
48
50
  values[0] = &ts1_arg;
49
51
 
50
52
  /* Initialize the cif */
51
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
53
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
52
54
  &ts1_type, args) == FFI_OK);
53
55
 
54
56
  ts1_arg.uc = '\x01';
@@ -13,7 +13,7 @@ typedef struct
13
13
  double d2;
14
14
  } test_structure_2;
15
15
 
16
- static test_structure_2 struct2(test_structure_2 ts)
16
+ static test_structure_2 ABI_ATTR struct2(test_structure_2 ts)
17
17
  {
18
18
  ts.d1--;
19
19
  ts.d2--;
@@ -29,6 +29,11 @@ int main (void)
29
29
  test_structure_2 ts2_arg;
30
30
  ffi_type ts2_type;
31
31
  ffi_type *ts2_type_elements[3];
32
+
33
+ /* This is a hack to get a properly aligned result buffer */
34
+ test_structure_2 *ts2_result =
35
+ (test_structure_2 *) malloc (sizeof(test_structure_2));
36
+
32
37
  ts2_type.size = 0;
33
38
  ts2_type.alignment = 0;
34
39
  ts2_type.type = FFI_TYPE_STRUCT;
@@ -37,16 +42,11 @@ int main (void)
37
42
  ts2_type_elements[1] = &ffi_type_double;
38
43
  ts2_type_elements[2] = NULL;
39
44
 
40
-
41
- /* This is a hack to get a properly aligned result buffer */
42
- test_structure_2 *ts2_result =
43
- (test_structure_2 *) malloc (sizeof(test_structure_2));
44
-
45
45
  args[0] = &ts2_type;
46
46
  values[0] = &ts2_arg;
47
47
 
48
48
  /* Initialize the cif */
49
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts2_type, args) == FFI_OK);
49
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts2_type, args) == FFI_OK);
50
50
 
51
51
  ts2_arg.d1 = 5.55;
52
52
  ts2_arg.d2 = 6.66;
@@ -12,7 +12,7 @@ typedef struct
12
12
  int si;
13
13
  } test_structure_3;
14
14
 
15
- static test_structure_3 struct3(test_structure_3 ts)
15
+ static test_structure_3 ABI_ATTR struct3(test_structure_3 ts)
16
16
  {
17
17
  ts.si = -(ts.si*2);
18
18
 
@@ -27,6 +27,11 @@ int main (void)
27
27
  int compare_value;
28
28
  ffi_type ts3_type;
29
29
  ffi_type *ts3_type_elements[2];
30
+
31
+ test_structure_3 ts3_arg;
32
+ test_structure_3 *ts3_result =
33
+ (test_structure_3 *) malloc (sizeof(test_structure_3));
34
+
30
35
  ts3_type.size = 0;
31
36
  ts3_type.alignment = 0;
32
37
  ts3_type.type = FFI_TYPE_STRUCT;
@@ -34,15 +39,11 @@ int main (void)
34
39
  ts3_type_elements[0] = &ffi_type_sint;
35
40
  ts3_type_elements[1] = NULL;
36
41
 
37
- test_structure_3 ts3_arg;
38
- test_structure_3 *ts3_result =
39
- (test_structure_3 *) malloc (sizeof(test_structure_3));
40
-
41
42
  args[0] = &ts3_type;
42
43
  values[0] = &ts3_arg;
43
44
 
44
45
  /* Initialize the cif */
45
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
46
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
46
47
  &ts3_type, args) == FFI_OK);
47
48
 
48
49
  ts3_arg.si = -123;
@@ -14,7 +14,7 @@ typedef struct
14
14
  unsigned ui3;
15
15
  } test_structure_4;
16
16
 
17
- static test_structure_4 struct4(test_structure_4 ts)
17
+ static test_structure_4 ABI_ATTR struct4(test_structure_4 ts)
18
18
  {
19
19
  ts.ui3 = ts.ui1 * ts.ui2 * ts.ui3;
20
20
 
@@ -28,26 +28,27 @@ int main (void)
28
28
  void *values[MAX_ARGS];
29
29
  ffi_type ts4_type;
30
30
  ffi_type *ts4_type_elements[4];
31
+
32
+ test_structure_4 ts4_arg;
33
+
34
+ /* This is a hack to get a properly aligned result buffer */
35
+ test_structure_4 *ts4_result =
36
+ (test_structure_4 *) malloc (sizeof(test_structure_4));
37
+
31
38
  ts4_type.size = 0;
32
39
  ts4_type.alignment = 0;
33
40
  ts4_type.type = FFI_TYPE_STRUCT;
34
- test_structure_4 ts4_arg;
35
41
  ts4_type.elements = ts4_type_elements;
36
42
  ts4_type_elements[0] = &ffi_type_uint;
37
43
  ts4_type_elements[1] = &ffi_type_uint;
38
44
  ts4_type_elements[2] = &ffi_type_uint;
39
45
  ts4_type_elements[3] = NULL;
40
46
 
41
-
42
- /* This is a hack to get a properly aligned result buffer */
43
- test_structure_4 *ts4_result =
44
- (test_structure_4 *) malloc (sizeof(test_structure_4));
45
-
46
47
  args[0] = &ts4_type;
47
48
  values[0] = &ts4_arg;
48
49
 
49
50
  /* Initialize the cif */
50
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts4_type, args) == FFI_OK);
51
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts4_type, args) == FFI_OK);
51
52
 
52
53
  ts4_arg.ui1 = 2;
53
54
  ts4_arg.ui2 = 3;
@@ -12,7 +12,7 @@ typedef struct
12
12
  char c2;
13
13
  } test_structure_5;
14
14
 
15
- static test_structure_5 struct5(test_structure_5 ts1, test_structure_5 ts2)
15
+ static test_structure_5 ABI_ATTR struct5(test_structure_5 ts1, test_structure_5 ts2)
16
16
  {
17
17
  ts1.c1 += ts2.c1;
18
18
  ts1.c2 -= ts2.c2;
@@ -27,6 +27,13 @@ int main (void)
27
27
  void *values[MAX_ARGS];
28
28
  ffi_type ts5_type;
29
29
  ffi_type *ts5_type_elements[3];
30
+
31
+ test_structure_5 ts5_arg1, ts5_arg2;
32
+
33
+ /* This is a hack to get a properly aligned result buffer */
34
+ test_structure_5 *ts5_result =
35
+ (test_structure_5 *) malloc (sizeof(test_structure_5));
36
+
30
37
  ts5_type.size = 0;
31
38
  ts5_type.alignment = 0;
32
39
  ts5_type.type = FFI_TYPE_STRUCT;
@@ -35,19 +42,13 @@ int main (void)
35
42
  ts5_type_elements[1] = &ffi_type_schar;
36
43
  ts5_type_elements[2] = NULL;
37
44
 
38
- test_structure_5 ts5_arg1, ts5_arg2;
39
-
40
- /* This is a hack to get a properly aligned result buffer */
41
- test_structure_5 *ts5_result =
42
- (test_structure_5 *) malloc (sizeof(test_structure_5));
43
-
44
45
  args[0] = &ts5_type;
45
46
  args[1] = &ts5_type;
46
47
  values[0] = &ts5_arg1;
47
48
  values[1] = &ts5_arg2;
48
49
 
49
50
  /* Initialize the cif */
50
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ts5_type, args) == FFI_OK);
51
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts5_type, args) == FFI_OK);
51
52
 
52
53
  ts5_arg1.c1 = 2;
53
54
  ts5_arg1.c2 = 6;
@@ -12,7 +12,7 @@ typedef struct
12
12
  double d;
13
13
  } test_structure_6;
14
14
 
15
- static test_structure_6 struct6 (test_structure_6 ts)
15
+ static test_structure_6 ABI_ATTR struct6 (test_structure_6 ts)
16
16
  {
17
17
  ts.f += 1;
18
18
  ts.d += 1;
@@ -27,6 +27,13 @@ int main (void)
27
27
  void *values[MAX_ARGS];
28
28
  ffi_type ts6_type;
29
29
  ffi_type *ts6_type_elements[3];
30
+
31
+ test_structure_6 ts6_arg;
32
+
33
+ /* This is a hack to get a properly aligned result buffer */
34
+ test_structure_6 *ts6_result =
35
+ (test_structure_6 *) malloc (sizeof(test_structure_6));
36
+
30
37
  ts6_type.size = 0;
31
38
  ts6_type.alignment = 0;
32
39
  ts6_type.type = FFI_TYPE_STRUCT;
@@ -35,18 +42,11 @@ int main (void)
35
42
  ts6_type_elements[1] = &ffi_type_double;
36
43
  ts6_type_elements[2] = NULL;
37
44
 
38
-
39
- test_structure_6 ts6_arg;
40
-
41
- /* This is a hack to get a properly aligned result buffer */
42
- test_structure_6 *ts6_result =
43
- (test_structure_6 *) malloc (sizeof(test_structure_6));
44
-
45
45
  args[0] = &ts6_type;
46
46
  values[0] = &ts6_arg;
47
47
 
48
48
  /* Initialize the cif */
49
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts6_type, args) == FFI_OK);
49
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts6_type, args) == FFI_OK);
50
50
 
51
51
  ts6_arg.f = 5.55f;
52
52
  ts6_arg.d = 6.66;
@@ -13,7 +13,7 @@ typedef struct
13
13
  double d;
14
14
  } test_structure_7;
15
15
 
16
- static test_structure_7 struct7 (test_structure_7 ts)
16
+ static test_structure_7 ABI_ATTR struct7 (test_structure_7 ts)
17
17
  {
18
18
  ts.f1 += 1;
19
19
  ts.f2 += 1;
@@ -29,6 +29,13 @@ int main (void)
29
29
  void *values[MAX_ARGS];
30
30
  ffi_type ts7_type;
31
31
  ffi_type *ts7_type_elements[4];
32
+
33
+ test_structure_7 ts7_arg;
34
+
35
+ /* This is a hack to get a properly aligned result buffer */
36
+ test_structure_7 *ts7_result =
37
+ (test_structure_7 *) malloc (sizeof(test_structure_7));
38
+
32
39
  ts7_type.size = 0;
33
40
  ts7_type.alignment = 0;
34
41
  ts7_type.type = FFI_TYPE_STRUCT;
@@ -38,18 +45,11 @@ int main (void)
38
45
  ts7_type_elements[2] = &ffi_type_double;
39
46
  ts7_type_elements[3] = NULL;
40
47
 
41
-
42
- test_structure_7 ts7_arg;
43
-
44
- /* This is a hack to get a properly aligned result buffer */
45
- test_structure_7 *ts7_result =
46
- (test_structure_7 *) malloc (sizeof(test_structure_7));
47
-
48
48
  args[0] = &ts7_type;
49
49
  values[0] = &ts7_arg;
50
50
 
51
51
  /* Initialize the cif */
52
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts7_type, args) == FFI_OK);
52
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts7_type, args) == FFI_OK);
53
53
 
54
54
  ts7_arg.f1 = 5.55f;
55
55
  ts7_arg.f2 = 55.5f;
@@ -14,7 +14,7 @@ typedef struct
14
14
  float f4;
15
15
  } test_structure_8;
16
16
 
17
- static test_structure_8 struct8 (test_structure_8 ts)
17
+ static test_structure_8 ABI_ATTR struct8 (test_structure_8 ts)
18
18
  {
19
19
  ts.f1 += 1;
20
20
  ts.f2 += 1;
@@ -31,6 +31,13 @@ int main (void)
31
31
  void *values[MAX_ARGS];
32
32
  ffi_type ts8_type;
33
33
  ffi_type *ts8_type_elements[5];
34
+
35
+ test_structure_8 ts8_arg;
36
+
37
+ /* This is a hack to get a properly aligned result buffer */
38
+ test_structure_8 *ts8_result =
39
+ (test_structure_8 *) malloc (sizeof(test_structure_8));
40
+
34
41
  ts8_type.size = 0;
35
42
  ts8_type.alignment = 0;
36
43
  ts8_type.type = FFI_TYPE_STRUCT;
@@ -41,17 +48,11 @@ int main (void)
41
48
  ts8_type_elements[3] = &ffi_type_float;
42
49
  ts8_type_elements[4] = NULL;
43
50
 
44
- test_structure_8 ts8_arg;
45
-
46
- /* This is a hack to get a properly aligned result buffer */
47
- test_structure_8 *ts8_result =
48
- (test_structure_8 *) malloc (sizeof(test_structure_8));
49
-
50
51
  args[0] = &ts8_type;
51
52
  values[0] = &ts8_arg;
52
53
 
53
54
  /* Initialize the cif */
54
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts8_type, args) == FFI_OK);
55
+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts8_type, args) == FFI_OK);
55
56
 
56
57
  ts8_arg.f1 = 5.55f;
57
58
  ts8_arg.f2 = 55.5f;