ffi 1.9.18 → 1.9.23

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 (468) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +22 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +52 -0
  5. data/.yardopts +5 -0
  6. data/Gemfile +15 -0
  7. data/{spec/ffi/LICENSE.SPECS → LICENSE.SPECS} +1 -1
  8. data/README.md +3 -4
  9. data/Rakefile +41 -5
  10. data/appveyor.yml +22 -0
  11. data/ext/ffi_c/AbstractMemory.c +6 -1
  12. data/ext/ffi_c/Call.c +1 -22
  13. data/ext/ffi_c/Call.h +0 -9
  14. data/ext/ffi_c/Closure.c +54 -0
  15. data/ext/ffi_c/{ClosurePool.h → Closure.h} +13 -23
  16. data/ext/ffi_c/Function.c +16 -25
  17. data/ext/ffi_c/Function.h +1 -2
  18. data/ext/ffi_c/FunctionInfo.c +0 -4
  19. data/ext/ffi_c/MethodHandle.c +33 -268
  20. data/ext/ffi_c/Platform.c +10 -2
  21. data/ext/ffi_c/extconf.rb +10 -5
  22. data/ext/ffi_c/ffi.c +2 -2
  23. data/ext/ffi_c/libffi/.appveyor.yml +48 -0
  24. data/ext/ffi_c/libffi/.gitignore +36 -0
  25. data/ext/ffi_c/libffi/.travis/install.sh +14 -0
  26. data/ext/ffi_c/libffi/.travis.yml +30 -0
  27. data/ext/ffi_c/libffi/ChangeLog.libffi +2 -2
  28. data/ext/ffi_c/libffi/{ChangeLog → ChangeLog.libffi-3.1} +1402 -2
  29. data/ext/ffi_c/libffi/ChangeLog.v1 +1 -1
  30. data/ext/ffi_c/libffi/LICENSE +1 -1
  31. data/ext/ffi_c/libffi/Makefile.am +169 -158
  32. data/ext/ffi_c/libffi/Makefile.in +927 -938
  33. data/ext/ffi_c/libffi/README +164 -52
  34. data/ext/ffi_c/libffi/acinclude.m4 +387 -0
  35. data/ext/ffi_c/libffi/autogen.sh +2 -0
  36. data/ext/ffi_c/libffi/config.guess +336 -371
  37. data/ext/ffi_c/libffi/config.sub +246 -115
  38. data/ext/ffi_c/libffi/configure +6976 -2189
  39. data/ext/ffi_c/libffi/configure.ac +148 -256
  40. data/ext/ffi_c/libffi/configure.host +277 -4
  41. data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
  42. data/ext/ffi_c/libffi/doc/Makefile.in +811 -0
  43. data/ext/ffi_c/libffi/doc/libffi.texi +430 -45
  44. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  45. data/ext/ffi_c/libffi/fficonfig.h.in +24 -13
  46. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +203 -0
  47. data/ext/ffi_c/libffi/include/Makefile.am +3 -3
  48. data/ext/ffi_c/libffi/include/Makefile.in +188 -71
  49. data/ext/ffi_c/libffi/include/ffi.h.in +112 -50
  50. data/ext/ffi_c/libffi/include/ffi_cfi.h +55 -0
  51. data/ext/ffi_c/libffi/include/ffi_common.h +32 -11
  52. data/ext/ffi_c/libffi/install-sh +190 -202
  53. data/ext/ffi_c/libffi/libffi.map.in +80 -0
  54. data/ext/ffi_c/libffi/libffi.pc.in +3 -2
  55. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +1043 -0
  56. data/ext/ffi_c/libffi/libtool-ldflags +106 -0
  57. data/ext/ffi_c/libffi/libtool-version +1 -1
  58. data/ext/ffi_c/libffi/ltmain.sh +3553 -2033
  59. data/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
  60. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +69 -0
  61. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +13 -8
  62. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +31 -104
  63. data/ext/ffi_c/libffi/m4/{ax_check_compiler_flags.m4 → ax_check_compile_flag.m4} +30 -34
  64. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +32 -11
  65. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +6 -5
  66. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +31 -21
  67. data/ext/ffi_c/libffi/man/Makefile.am +2 -2
  68. data/ext/ffi_c/libffi/man/Makefile.in +141 -49
  69. data/ext/ffi_c/libffi/man/ffi.3 +10 -0
  70. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +6 -4
  71. data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
  72. data/ext/ffi_c/libffi/missing +150 -311
  73. data/ext/ffi_c/libffi/msvcc.sh +72 -9
  74. data/ext/ffi_c/libffi/src/aarch64/ffi.c +964 -0
  75. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +81 -0
  76. data/ext/ffi_c/libffi/src/aarch64/internal.h +67 -0
  77. data/ext/ffi_c/libffi/src/aarch64/sysv.S +438 -0
  78. data/ext/ffi_c/libffi/src/alpha/ffi.c +335 -98
  79. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +10 -1
  80. data/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
  81. data/ext/ffi_c/libffi/src/alpha/osf.S +161 -266
  82. data/ext/ffi_c/libffi/src/arc/arcompact.S +135 -0
  83. data/ext/ffi_c/libffi/src/arc/ffi.c +266 -0
  84. data/ext/ffi_c/libffi/src/arc/ffitarget.h +53 -0
  85. data/ext/ffi_c/libffi/src/arm/ffi.c +608 -517
  86. data/ext/ffi_c/libffi/src/arm/ffitarget.h +24 -7
  87. data/ext/ffi_c/libffi/src/arm/internal.h +7 -0
  88. data/ext/ffi_c/libffi/src/arm/sysv.S +303 -417
  89. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +6 -1
  90. data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
  91. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
  92. data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
  93. data/ext/ffi_c/libffi/src/closures.c +366 -45
  94. data/ext/ffi_c/libffi/src/cris/ffi.c +10 -7
  95. data/ext/ffi_c/libffi/src/cris/ffitarget.h +6 -1
  96. data/ext/ffi_c/libffi/src/debug.c +6 -1
  97. data/ext/ffi_c/libffi/src/dlmalloc.c +16 -11
  98. data/ext/ffi_c/libffi/src/frv/ffi.c +1 -1
  99. data/ext/ffi_c/libffi/src/frv/ffitarget.h +6 -1
  100. data/ext/ffi_c/libffi/src/ia64/ffi.c +11 -7
  101. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +6 -1
  102. data/ext/ffi_c/libffi/src/ia64/unix.S +2 -0
  103. data/ext/ffi_c/libffi/src/java_raw_api.c +23 -5
  104. data/ext/ffi_c/libffi/src/m32r/ffi.c +1 -1
  105. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +6 -1
  106. data/ext/ffi_c/libffi/src/m68k/ffi.c +87 -13
  107. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +6 -1
  108. data/ext/ffi_c/libffi/src/m68k/sysv.S +119 -32
  109. data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
  110. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
  111. data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
  112. data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
  113. data/ext/ffi_c/libffi/{fficonfig.hw → src/metag/ffitarget.h} +22 -26
  114. data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
  115. data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
  116. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
  117. data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
  118. data/ext/ffi_c/libffi/src/mips/ffi.c +103 -28
  119. data/ext/ffi_c/libffi/src/mips/ffitarget.h +10 -3
  120. data/ext/ffi_c/libffi/src/mips/n32.S +128 -56
  121. data/ext/ffi_c/libffi/src/mips/o32.S +148 -27
  122. data/ext/ffi_c/libffi/src/moxie/eabi.S +55 -82
  123. data/ext/ffi_c/libffi/src/moxie/ffi.c +40 -44
  124. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
  125. data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
  126. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
  127. data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
  128. data/ext/ffi_c/libffi/src/or1k/ffi.c +328 -0
  129. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
  130. data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
  131. data/ext/ffi_c/libffi/src/pa/ffitarget.h +8 -1
  132. data/ext/ffi_c/libffi/src/powerpc/aix.S +245 -7
  133. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +253 -4
  134. data/ext/ffi_c/libffi/src/powerpc/asm.h +2 -2
  135. data/ext/ffi_c/libffi/src/powerpc/darwin.S +2 -7
  136. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +22 -26
  137. data/ext/ffi_c/libffi/src/powerpc/ffi.c +103 -1378
  138. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +111 -30
  139. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +945 -0
  140. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +94 -0
  141. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
  142. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +103 -44
  143. data/ext/ffi_c/libffi/src/powerpc/linux64.S +100 -59
  144. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +360 -108
  145. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +138 -68
  146. data/ext/ffi_c/libffi/src/powerpc/sysv.S +68 -112
  147. data/ext/ffi_c/libffi/src/prep_cif.c +108 -24
  148. data/ext/ffi_c/libffi/src/raw_api.c +18 -5
  149. data/ext/ffi_c/libffi/src/s390/ffi.c +294 -318
  150. data/ext/ffi_c/libffi/src/s390/ffitarget.h +9 -1
  151. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  152. data/ext/ffi_c/libffi/src/s390/sysv.S +257 -366
  153. data/ext/ffi_c/libffi/src/sh/ffi.c +4 -3
  154. data/ext/ffi_c/libffi/src/sh/ffitarget.h +6 -1
  155. data/ext/ffi_c/libffi/src/sh64/ffi.c +3 -2
  156. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +6 -1
  157. data/ext/ffi_c/libffi/src/sparc/ffi.c +326 -527
  158. data/ext/ffi_c/libffi/src/sparc/ffi64.c +608 -0
  159. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +20 -7
  160. data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
  161. data/ext/ffi_c/libffi/src/sparc/v8.S +364 -234
  162. data/ext/ffi_c/libffi/src/sparc/v9.S +340 -207
  163. data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
  164. data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
  165. data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
  166. data/ext/ffi_c/libffi/src/types.c +43 -14
  167. data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
  168. data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
  169. data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
  170. data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
  171. data/ext/ffi_c/libffi/src/x86/ffi.c +591 -500
  172. data/ext/ffi_c/libffi/src/x86/ffi64.c +359 -116
  173. data/ext/ffi_c/libffi/src/x86/ffitarget.h +55 -35
  174. data/ext/ffi_c/libffi/src/x86/ffiw64.c +287 -0
  175. data/ext/ffi_c/libffi/src/x86/internal.h +29 -0
  176. data/ext/ffi_c/libffi/src/x86/internal64.h +22 -0
  177. data/ext/ffi_c/libffi/src/x86/sysv.S +975 -400
  178. data/ext/ffi_c/libffi/src/x86/unix64.S +398 -299
  179. data/ext/ffi_c/libffi/src/x86/win64.S +222 -458
  180. data/ext/ffi_c/libffi/src/x86/win64_intel.S +237 -0
  181. data/ext/ffi_c/libffi/src/xtensa/ffi.c +298 -0
  182. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +53 -0
  183. data/ext/ffi_c/libffi/src/xtensa/sysv.S +253 -0
  184. data/ext/ffi_c/libffi/stamp-h.in +1 -0
  185. data/ext/ffi_c/libffi/testsuite/Makefile.am +79 -73
  186. data/ext/ffi_c/libffi/testsuite/Makefile.in +219 -111
  187. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +121 -25
  188. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +21 -1
  189. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
  190. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +4 -6
  191. data/ext/ffi_c/libffi/testsuite/libffi.call/{closure_stdcall.c → closure_simple.c} +7 -16
  192. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +4 -4
  193. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +4 -4
  194. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +4 -4
  195. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +4 -4
  196. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +4 -4
  197. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +4 -4
  198. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +4 -4
  199. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +5 -5
  200. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +4 -4
  201. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +4 -4
  202. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +4 -4
  203. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +4 -4
  204. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3float.c +95 -0
  205. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +4 -4
  206. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +4 -4
  207. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +4 -4
  208. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +4 -4
  209. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +5 -5
  210. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +4 -4
  211. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +4 -4
  212. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +4 -4
  213. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +4 -4
  214. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +4 -4
  215. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +4 -4
  216. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +4 -4
  217. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +4 -4
  218. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +4 -4
  219. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +4 -4
  220. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +4 -6
  221. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +4 -6
  222. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +4 -4
  223. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +4 -4
  224. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +4 -4
  225. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +4 -4
  226. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +4 -4
  227. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +4 -4
  228. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +4 -4
  229. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +4 -4
  230. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +10 -9
  231. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +3 -3
  232. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +10 -9
  233. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c +70 -0
  234. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c +55 -0
  235. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +1 -1
  236. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +11 -9
  237. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c +114 -0
  238. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c +44 -0
  239. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c +45 -0
  240. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c +45 -0
  241. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +5 -5
  242. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c +44 -0
  243. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +2 -2
  244. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +23 -40
  245. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +3 -1
  246. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +6 -4
  247. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +4 -2
  248. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +107 -0
  249. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +18 -19
  250. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +6 -16
  251. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
  252. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
  253. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
  254. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -1
  255. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +6 -6
  256. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +8 -8
  257. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +6 -6
  258. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c +121 -0
  259. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +5 -5
  260. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +5 -5
  261. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +5 -5
  262. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +5 -5
  263. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +6 -6
  264. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +5 -5
  265. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +6 -6
  266. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +6 -6
  267. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
  268. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
  269. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +1 -0
  270. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
  271. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +1 -1
  272. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +1 -1
  273. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +7 -7
  274. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +7 -7
  275. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +5 -5
  276. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +5 -5
  277. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +2 -2
  278. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
  279. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
  280. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
  281. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +9 -7
  282. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +7 -7
  283. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +7 -6
  284. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +9 -8
  285. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +9 -8
  286. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +9 -9
  287. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +9 -9
  288. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +9 -8
  289. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +9 -8
  290. data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +2 -2
  291. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
  292. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest.cc +3 -10
  293. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest_ffi_call.cc +2 -1
  294. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +196 -0
  295. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +121 -0
  296. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +123 -0
  297. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +125 -0
  298. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
  299. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
  300. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
  301. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
  302. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
  303. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
  304. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
  305. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
  306. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
  307. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
  308. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
  309. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
  310. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
  311. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
  312. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
  313. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
  314. data/ext/ffi_c/libffi/testsuite/{libffi.special/special.exp → libffi.complex/complex.exp} +9 -8
  315. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
  316. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
  317. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
  318. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
  319. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
  320. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
  321. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
  322. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
  323. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
  324. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
  325. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
  326. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
  327. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
  328. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
  329. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
  330. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
  331. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
  332. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
  333. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
  334. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
  335. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
  336. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
  337. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
  338. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
  339. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
  340. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
  341. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
  342. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
  343. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
  344. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
  345. data/ext/ffi_c/libffi.bsd.mk +11 -5
  346. data/ext/ffi_c/libffi.darwin.mk +14 -4
  347. data/ext/ffi_c/libffi.gnu.mk +3 -2
  348. data/ext/ffi_c/libffi.mk +10 -5
  349. data/ext/ffi_c/libffi.vc.mk +1 -1
  350. data/ext/ffi_c/libffi.vc64.mk +1 -1
  351. data/ffi.gemspec +16 -3
  352. data/lib/ffi/enum.rb +124 -0
  353. data/lib/ffi/library.rb +66 -14
  354. data/lib/ffi/platform/sparc64-linux/types.conf +102 -0
  355. data/lib/ffi/platform/x86_64-windows/types.conf +113 -20
  356. data/lib/ffi/platform.rb +7 -2
  357. data/lib/ffi/pointer.rb +1 -0
  358. data/lib/ffi/struct.rb +0 -2
  359. data/lib/ffi/version.rb +1 -2
  360. data/samples/getlogin.rb +8 -0
  361. data/samples/getpid.rb +8 -0
  362. data/samples/gettimeofday.rb +18 -0
  363. data/samples/hello.rb +7 -0
  364. data/samples/inotify.rb +60 -0
  365. data/samples/pty.rb +76 -0
  366. data/samples/qsort.rb +21 -0
  367. data/samples/sample_helper.rb +6 -0
  368. metadata +164 -115
  369. data/ext/ffi_c/ClosurePool.c +0 -283
  370. data/ext/ffi_c/libffi/Makefile.vc +0 -141
  371. data/ext/ffi_c/libffi/Makefile.vc64 +0 -141
  372. data/ext/ffi_c/libffi/aclocal.m4 +0 -1873
  373. data/ext/ffi_c/libffi/build-ios.sh +0 -67
  374. data/ext/ffi_c/libffi/compile +0 -143
  375. data/ext/ffi_c/libffi/depcomp +0 -630
  376. data/ext/ffi_c/libffi/doc/libffi.info +0 -593
  377. data/ext/ffi_c/libffi/doc/stamp-vti +0 -4
  378. data/ext/ffi_c/libffi/include/ffi.h.vc +0 -427
  379. data/ext/ffi_c/libffi/include/ffi.h.vc64 +0 -427
  380. data/ext/ffi_c/libffi/m4/libtool.m4 +0 -7831
  381. data/ext/ffi_c/libffi/m4/ltoptions.m4 +0 -369
  382. data/ext/ffi_c/libffi/m4/ltsugar.m4 +0 -123
  383. data/ext/ffi_c/libffi/m4/ltversion.m4 +0 -23
  384. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +0 -98
  385. data/ext/ffi_c/libffi/mdate-sh +0 -201
  386. data/ext/ffi_c/libffi/src/arm/gentramp.sh +0 -118
  387. data/ext/ffi_c/libffi/src/arm/trampoline.S +0 -4450
  388. data/ext/ffi_c/libffi/src/x86/darwin.S +0 -444
  389. data/ext/ffi_c/libffi/src/x86/darwin64.S +0 -416
  390. data/ext/ffi_c/libffi/src/x86/freebsd.S +0 -458
  391. data/ext/ffi_c/libffi/src/x86/win32.S +0 -1065
  392. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -300
  393. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -63
  394. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -44
  395. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -96
  396. data/ext/ffi_c/libffi/texinfo.tex +0 -7210
  397. data/gen/Rakefile +0 -30
  398. data/libtest/Benchmark.c +0 -52
  399. data/libtest/BoolTest.c +0 -34
  400. data/libtest/BufferTest.c +0 -31
  401. data/libtest/ClosureTest.c +0 -205
  402. data/libtest/EnumTest.c +0 -51
  403. data/libtest/FunctionTest.c +0 -70
  404. data/libtest/GNUmakefile +0 -149
  405. data/libtest/GlobalVariable.c +0 -62
  406. data/libtest/LastErrorTest.c +0 -21
  407. data/libtest/NumberTest.c +0 -132
  408. data/libtest/PointerTest.c +0 -63
  409. data/libtest/ReferenceTest.c +0 -23
  410. data/libtest/StringTest.c +0 -34
  411. data/libtest/StructTest.c +0 -243
  412. data/libtest/UnionTest.c +0 -43
  413. data/libtest/VariadicTest.c +0 -99
  414. data/spec/ffi/async_callback_spec.rb +0 -35
  415. data/spec/ffi/bool_spec.rb +0 -32
  416. data/spec/ffi/buffer_spec.rb +0 -279
  417. data/spec/ffi/callback_spec.rb +0 -773
  418. data/spec/ffi/custom_param_type.rb +0 -37
  419. data/spec/ffi/custom_type_spec.rb +0 -74
  420. data/spec/ffi/dup_spec.rb +0 -52
  421. data/spec/ffi/enum_spec.rb +0 -423
  422. data/spec/ffi/errno_spec.rb +0 -20
  423. data/spec/ffi/ffi_spec.rb +0 -28
  424. data/spec/ffi/fixtures/Benchmark.c +0 -52
  425. data/spec/ffi/fixtures/BoolTest.c +0 -34
  426. data/spec/ffi/fixtures/BufferTest.c +0 -31
  427. data/spec/ffi/fixtures/ClosureTest.c +0 -205
  428. data/spec/ffi/fixtures/EnumTest.c +0 -51
  429. data/spec/ffi/fixtures/FunctionTest.c +0 -142
  430. data/spec/ffi/fixtures/GNUmakefile +0 -149
  431. data/spec/ffi/fixtures/GlobalVariable.c +0 -62
  432. data/spec/ffi/fixtures/LastErrorTest.c +0 -21
  433. data/spec/ffi/fixtures/NumberTest.c +0 -132
  434. data/spec/ffi/fixtures/PipeHelper.h +0 -21
  435. data/spec/ffi/fixtures/PipeHelperPosix.c +0 -41
  436. data/spec/ffi/fixtures/PipeHelperWindows.c +0 -72
  437. data/spec/ffi/fixtures/PointerTest.c +0 -63
  438. data/spec/ffi/fixtures/ReferenceTest.c +0 -23
  439. data/spec/ffi/fixtures/StringTest.c +0 -34
  440. data/spec/ffi/fixtures/StructTest.c +0 -243
  441. data/spec/ffi/fixtures/UnionTest.c +0 -43
  442. data/spec/ffi/fixtures/VariadicTest.c +0 -99
  443. data/spec/ffi/fixtures/classes.rb +0 -438
  444. data/spec/ffi/function_spec.rb +0 -97
  445. data/spec/ffi/io_spec.rb +0 -16
  446. data/spec/ffi/library_spec.rb +0 -286
  447. data/spec/ffi/long_double.rb +0 -30
  448. data/spec/ffi/managed_struct_spec.rb +0 -68
  449. data/spec/ffi/memorypointer_spec.rb +0 -78
  450. data/spec/ffi/number_spec.rb +0 -247
  451. data/spec/ffi/platform_spec.rb +0 -114
  452. data/spec/ffi/pointer_spec.rb +0 -285
  453. data/spec/ffi/rbx/attach_function_spec.rb +0 -34
  454. data/spec/ffi/rbx/memory_pointer_spec.rb +0 -194
  455. data/spec/ffi/rbx/spec_helper.rb +0 -6
  456. data/spec/ffi/rbx/struct_spec.rb +0 -18
  457. data/spec/ffi/spec_helper.rb +0 -93
  458. data/spec/ffi/string_spec.rb +0 -118
  459. data/spec/ffi/strptr_spec.rb +0 -50
  460. data/spec/ffi/struct_by_ref_spec.rb +0 -43
  461. data/spec/ffi/struct_callback_spec.rb +0 -69
  462. data/spec/ffi/struct_initialize_spec.rb +0 -35
  463. data/spec/ffi/struct_packed_spec.rb +0 -50
  464. data/spec/ffi/struct_spec.rb +0 -886
  465. data/spec/ffi/typedef_spec.rb +0 -91
  466. data/spec/ffi/union_spec.rb +0 -67
  467. data/spec/ffi/variadic_spec.rb +0 -132
  468. data/spec/spec.opts +0 -4
@@ -0,0 +1,95 @@
1
+ /* Area: ffi_call, closure_call
2
+ Purpose: Check structure passing with different structure size.
3
+ Depending on the ABI. Check overlapping.
4
+ Limitations:>none.
5
+ PR: none.
6
+ Originator: <compnerd@compnerd.org> 20171026 */
7
+
8
+ /* { dg-do run } */
9
+
10
+ #include "ffitest.h"
11
+
12
+ typedef struct cls_struct_3float {
13
+ float f;
14
+ float g;
15
+ float h;
16
+ } cls_struct_3float;
17
+
18
+ cls_struct_3float cls_struct_3float_fn(struct cls_struct_3float a1,
19
+ struct cls_struct_3float a2)
20
+ {
21
+ struct cls_struct_3float result;
22
+
23
+ result.f = a1.f + a2.f;
24
+ result.g = a1.g + a2.g;
25
+ result.h = a1.h + a2.h;
26
+
27
+ printf("%g %g %g %g %g %g: %g %g %g\n", a1.f, a1.g, a1.h,
28
+ a2.f, a2.g, a2.h, result.f, result.g, result.h);
29
+
30
+ return result;
31
+ }
32
+
33
+ static void
34
+ cls_struct_3float_gn(ffi_cif *cif __UNUSED__, void* resp, void **args,
35
+ void* userdata __UNUSED__)
36
+ {
37
+ struct cls_struct_3float a1, a2;
38
+
39
+ a1 = *(struct cls_struct_3float*)(args[0]);
40
+ a2 = *(struct cls_struct_3float*)(args[1]);
41
+
42
+ *(cls_struct_3float*)resp = cls_struct_3float_fn(a1, a2);
43
+ }
44
+
45
+ int main (void)
46
+ {
47
+ ffi_cif cif;
48
+ void *code;
49
+ ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
50
+ void *args_dbl[3];
51
+ ffi_type* cls_struct_fields[4];
52
+ ffi_type cls_struct_type;
53
+ ffi_type* dbl_arg_types[3];
54
+
55
+ struct cls_struct_3float g_dbl = { 1.0f, 2.0f, 3.0f };
56
+ struct cls_struct_3float f_dbl = { 1.0f, 2.0f, 3.0f };
57
+ struct cls_struct_3float res_dbl;
58
+
59
+ cls_struct_fields[0] = &ffi_type_float;
60
+ cls_struct_fields[1] = &ffi_type_float;
61
+ cls_struct_fields[2] = &ffi_type_float;
62
+ cls_struct_fields[3] = NULL;
63
+
64
+ cls_struct_type.size = 0;
65
+ cls_struct_type.alignment = 0;
66
+ cls_struct_type.type = FFI_TYPE_STRUCT;
67
+ cls_struct_type.elements = cls_struct_fields;
68
+
69
+ dbl_arg_types[0] = &cls_struct_type;
70
+ dbl_arg_types[1] = &cls_struct_type;
71
+ dbl_arg_types[2] = NULL;
72
+
73
+ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type,
74
+ dbl_arg_types) == FFI_OK);
75
+
76
+ args_dbl[0] = &g_dbl;
77
+ args_dbl[1] = &f_dbl;
78
+ args_dbl[2] = NULL;
79
+
80
+ ffi_call(&cif, FFI_FN(cls_struct_3float_fn), &res_dbl, args_dbl);
81
+ /* { dg-output "1 2 3 1 2 3: 2 4 6" } */
82
+ printf("res: %g %g %g\n", res_dbl.f, res_dbl.g, res_dbl.h);
83
+ /* { dg-output "\nres: 2 4 6" } */
84
+
85
+ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3float_gn, NULL, code) ==
86
+ FFI_OK);
87
+
88
+ res_dbl = ((cls_struct_3float(*)(cls_struct_3float,
89
+ cls_struct_3float))(code))(g_dbl, f_dbl);
90
+ /* { dg-output "\n1 2 3 1 2 3: 2 4 6" } */
91
+ printf("res: %g %g %g\n", res_dbl.f, res_dbl.g, res_dbl.h);
92
+ /* { dg-output "\nres: 2 4 6" } */
93
+
94
+ exit(0);
95
+ }
@@ -56,15 +56,15 @@ int main (void)
56
56
  ffi_type cls_struct_type;
57
57
  ffi_type* dbl_arg_types[5];
58
58
 
59
+ struct cls_struct_4_1byte g_dbl = { 12, 13, 14, 15 };
60
+ struct cls_struct_4_1byte f_dbl = { 178, 179, 180, 181 };
61
+ struct cls_struct_4_1byte res_dbl;
62
+
59
63
  cls_struct_type.size = 0;
60
64
  cls_struct_type.alignment = 0;
61
65
  cls_struct_type.type = FFI_TYPE_STRUCT;
62
66
  cls_struct_type.elements = cls_struct_fields;
63
67
 
64
- struct cls_struct_4_1byte g_dbl = { 12, 13, 14, 15 };
65
- struct cls_struct_4_1byte f_dbl = { 178, 179, 180, 181 };
66
- struct cls_struct_4_1byte res_dbl;
67
-
68
68
  cls_struct_fields[0] = &ffi_type_uchar;
69
69
  cls_struct_fields[1] = &ffi_type_uchar;
70
70
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -50,15 +50,15 @@ int main (void)
50
50
  ffi_type cls_struct_type;
51
51
  ffi_type* dbl_arg_types[5];
52
52
 
53
+ struct cls_struct_4byte g_dbl = { 127, 120 };
54
+ struct cls_struct_4byte f_dbl = { 12, 128 };
55
+ struct cls_struct_4byte res_dbl;
56
+
53
57
  cls_struct_type.size = 0;
54
58
  cls_struct_type.alignment = 0;
55
59
  cls_struct_type.type = FFI_TYPE_STRUCT;
56
60
  cls_struct_type.elements = cls_struct_fields;
57
61
 
58
- struct cls_struct_4byte g_dbl = { 127, 120 };
59
- struct cls_struct_4byte f_dbl = { 12, 128 };
60
- struct cls_struct_4byte res_dbl;
61
-
62
62
  cls_struct_fields[0] = &ffi_type_ushort;
63
63
  cls_struct_fields[1] = &ffi_type_ushort;
64
64
  cls_struct_fields[2] = NULL;
@@ -58,15 +58,15 @@ int main (void)
58
58
  ffi_type cls_struct_type;
59
59
  ffi_type* dbl_arg_types[5];
60
60
 
61
+ struct cls_struct_5byte g_dbl = { 127, 120, 1, 3, 4 };
62
+ struct cls_struct_5byte f_dbl = { 12, 128, 9, 3, 4 };
63
+ struct cls_struct_5byte res_dbl = { 0, 0, 0, 0, 0 };
64
+
61
65
  cls_struct_type.size = 0;
62
66
  cls_struct_type.alignment = 0;
63
67
  cls_struct_type.type = FFI_TYPE_STRUCT;
64
68
  cls_struct_type.elements = cls_struct_fields;
65
69
 
66
- struct cls_struct_5byte g_dbl = { 127, 120, 1, 3, 4 };
67
- struct cls_struct_5byte f_dbl = { 12, 128, 9, 3, 4 };
68
- struct cls_struct_5byte res_dbl = { 0, 0, 0, 0, 0 };
69
-
70
70
  cls_struct_fields[0] = &ffi_type_uchar;
71
71
  cls_struct_fields[1] = &ffi_type_uchar;
72
72
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -53,15 +53,15 @@ int main (void)
53
53
  ffi_type cls_struct_type;
54
54
  ffi_type* dbl_arg_types[5];
55
55
 
56
+ struct cls_struct_5byte g_dbl = { 127, 120, 1 };
57
+ struct cls_struct_5byte f_dbl = { 12, 128, 9 };
58
+ struct cls_struct_5byte res_dbl = { 0, 0, 0 };
59
+
56
60
  cls_struct_type.size = 0;
57
61
  cls_struct_type.alignment = 0;
58
62
  cls_struct_type.type = FFI_TYPE_STRUCT;
59
63
  cls_struct_type.elements = cls_struct_fields;
60
64
 
61
- struct cls_struct_5byte g_dbl = { 127, 120, 1 };
62
- struct cls_struct_5byte f_dbl = { 12, 128, 9 };
63
- struct cls_struct_5byte res_dbl = { 0, 0, 0 };
64
-
65
65
  cls_struct_fields[0] = &ffi_type_ushort;
66
66
  cls_struct_fields[1] = &ffi_type_ushort;
67
67
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -66,17 +66,17 @@ int main (void)
66
66
  ffi_type cls_struct_type;
67
67
  ffi_type* dbl_arg_types[5];
68
68
 
69
- cls_struct_type.size = 0;
70
- cls_struct_type.alignment = 0;
71
- cls_struct_type.type = FFI_TYPE_STRUCT;
72
- cls_struct_type.elements = cls_struct_fields;
73
-
74
69
  struct cls_struct_64byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0 };
75
70
  struct cls_struct_64byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0 };
76
71
  struct cls_struct_64byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0 };
77
72
  struct cls_struct_64byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0 };
78
73
  struct cls_struct_64byte res_dbl;
79
74
 
75
+ cls_struct_type.size = 0;
76
+ cls_struct_type.alignment = 0;
77
+ cls_struct_type.type = FFI_TYPE_STRUCT;
78
+ cls_struct_type.elements = cls_struct_fields;
79
+
80
80
  cls_struct_fields[0] = &ffi_type_double;
81
81
  cls_struct_fields[1] = &ffi_type_double;
82
82
  cls_struct_fields[2] = &ffi_type_double;
@@ -60,15 +60,15 @@ int main (void)
60
60
  ffi_type cls_struct_type;
61
61
  ffi_type* dbl_arg_types[5];
62
62
 
63
+ struct cls_struct_6byte g_dbl = { 127, 120, 1, 3, 4, 5 };
64
+ struct cls_struct_6byte f_dbl = { 12, 128, 9, 3, 4, 5 };
65
+ struct cls_struct_6byte res_dbl = { 0, 0, 0, 0, 0, 0 };
66
+
63
67
  cls_struct_type.size = 0;
64
68
  cls_struct_type.alignment = 0;
65
69
  cls_struct_type.type = FFI_TYPE_STRUCT;
66
70
  cls_struct_type.elements = cls_struct_fields;
67
71
 
68
- struct cls_struct_6byte g_dbl = { 127, 120, 1, 3, 4, 5 };
69
- struct cls_struct_6byte f_dbl = { 12, 128, 9, 3, 4, 5 };
70
- struct cls_struct_6byte res_dbl = { 0, 0, 0, 0, 0, 0 };
71
-
72
72
  cls_struct_fields[0] = &ffi_type_uchar;
73
73
  cls_struct_fields[1] = &ffi_type_uchar;
74
74
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -56,15 +56,15 @@ int main (void)
56
56
  ffi_type cls_struct_type;
57
57
  ffi_type* dbl_arg_types[5];
58
58
 
59
+ struct cls_struct_6byte g_dbl = { 127, 120, 1, 128 };
60
+ struct cls_struct_6byte f_dbl = { 12, 128, 9, 127 };
61
+ struct cls_struct_6byte res_dbl;
62
+
59
63
  cls_struct_type.size = 0;
60
64
  cls_struct_type.alignment = 0;
61
65
  cls_struct_type.type = FFI_TYPE_STRUCT;
62
66
  cls_struct_type.elements = cls_struct_fields;
63
67
 
64
- struct cls_struct_6byte g_dbl = { 127, 120, 1, 128 };
65
- struct cls_struct_6byte f_dbl = { 12, 128, 9, 127 };
66
- struct cls_struct_6byte res_dbl;
67
-
68
68
  cls_struct_fields[0] = &ffi_type_ushort;
69
69
  cls_struct_fields[1] = &ffi_type_ushort;
70
70
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -62,15 +62,15 @@ int main (void)
62
62
  ffi_type cls_struct_type;
63
63
  ffi_type* dbl_arg_types[5];
64
64
 
65
+ struct cls_struct_7byte g_dbl = { 127, 120, 1, 3, 4, 5, 6 };
66
+ struct cls_struct_7byte f_dbl = { 12, 128, 9, 3, 4, 5, 6 };
67
+ struct cls_struct_7byte res_dbl = { 0, 0, 0, 0, 0, 0, 0 };
68
+
65
69
  cls_struct_type.size = 0;
66
70
  cls_struct_type.alignment = 0;
67
71
  cls_struct_type.type = FFI_TYPE_STRUCT;
68
72
  cls_struct_type.elements = cls_struct_fields;
69
73
 
70
- struct cls_struct_7byte g_dbl = { 127, 120, 1, 3, 4, 5, 6 };
71
- struct cls_struct_7byte f_dbl = { 12, 128, 9, 3, 4, 5, 6 };
72
- struct cls_struct_7byte res_dbl = { 0, 0, 0, 0, 0, 0, 0 };
73
-
74
74
  cls_struct_fields[0] = &ffi_type_uchar;
75
75
  cls_struct_fields[1] = &ffi_type_uchar;
76
76
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -55,15 +55,15 @@ int main (void)
55
55
  ffi_type cls_struct_type;
56
56
  ffi_type* dbl_arg_types[5];
57
57
 
58
+ struct cls_struct_7byte g_dbl = { 127, 120, 1, 254 };
59
+ struct cls_struct_7byte f_dbl = { 12, 128, 9, 255 };
60
+ struct cls_struct_7byte res_dbl;
61
+
58
62
  cls_struct_type.size = 0;
59
63
  cls_struct_type.alignment = 0;
60
64
  cls_struct_type.type = FFI_TYPE_STRUCT;
61
65
  cls_struct_type.elements = cls_struct_fields;
62
66
 
63
- struct cls_struct_7byte g_dbl = { 127, 120, 1, 254 };
64
- struct cls_struct_7byte f_dbl = { 12, 128, 9, 255 };
65
- struct cls_struct_7byte res_dbl;
66
-
67
67
  cls_struct_fields[0] = &ffi_type_ushort;
68
68
  cls_struct_fields[1] = &ffi_type_ushort;
69
69
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -49,15 +49,15 @@ int main (void)
49
49
  ffi_type cls_struct_type;
50
50
  ffi_type* dbl_arg_types[5];
51
51
 
52
+ struct cls_struct_8byte g_dbl = { 1, 2.0 };
53
+ struct cls_struct_8byte f_dbl = { 4, 5.0 };
54
+ struct cls_struct_8byte res_dbl;
55
+
52
56
  cls_struct_type.size = 0;
53
57
  cls_struct_type.alignment = 0;
54
58
  cls_struct_type.type = FFI_TYPE_STRUCT;
55
59
  cls_struct_type.elements = cls_struct_fields;
56
60
 
57
- struct cls_struct_8byte g_dbl = { 1, 2.0 };
58
- struct cls_struct_8byte f_dbl = { 4, 5.0 };
59
- struct cls_struct_8byte res_dbl;
60
-
61
61
  cls_struct_fields[0] = &ffi_type_sint;
62
62
  cls_struct_fields[1] = &ffi_type_float;
63
63
  cls_struct_fields[2] = NULL;
@@ -50,15 +50,15 @@ int main (void)
50
50
  ffi_type cls_struct_type;
51
51
  ffi_type* dbl_arg_types[3];
52
52
 
53
+ struct cls_struct_9byte h_dbl = { 7, 8.0};
54
+ struct cls_struct_9byte j_dbl = { 1, 9.0};
55
+ struct cls_struct_9byte res_dbl;
56
+
53
57
  cls_struct_type.size = 0;
54
58
  cls_struct_type.alignment = 0;
55
59
  cls_struct_type.type = FFI_TYPE_STRUCT;
56
60
  cls_struct_type.elements = cls_struct_fields;
57
61
 
58
- struct cls_struct_9byte h_dbl = { 7, 8.0};
59
- struct cls_struct_9byte j_dbl = { 1, 9.0};
60
- struct cls_struct_9byte res_dbl;
61
-
62
62
  cls_struct_fields[0] = &ffi_type_sint;
63
63
  cls_struct_fields[1] = &ffi_type_double;
64
64
  cls_struct_fields[2] = NULL;
@@ -50,15 +50,15 @@ int main (void)
50
50
  ffi_type cls_struct_type;
51
51
  ffi_type* dbl_arg_types[3];
52
52
 
53
+ struct cls_struct_9byte h_dbl = { 7.0, 8};
54
+ struct cls_struct_9byte j_dbl = { 1.0, 9};
55
+ struct cls_struct_9byte res_dbl;
56
+
53
57
  cls_struct_type.size = 0;
54
58
  cls_struct_type.alignment = 0;
55
59
  cls_struct_type.type = FFI_TYPE_STRUCT;
56
60
  cls_struct_type.elements = cls_struct_fields;
57
61
 
58
- struct cls_struct_9byte h_dbl = { 7.0, 8};
59
- struct cls_struct_9byte j_dbl = { 1.0, 9};
60
- struct cls_struct_9byte res_dbl;
61
-
62
62
  cls_struct_fields[0] = &ffi_type_double;
63
63
  cls_struct_fields[1] = &ffi_type_sint;
64
64
  cls_struct_fields[2] = NULL;
@@ -52,15 +52,15 @@ int main (void)
52
52
  ffi_type cls_struct_type;
53
53
  ffi_type* dbl_arg_types[5];
54
54
 
55
+ struct cls_struct_align g_dbl = { 12, 4951, 127 };
56
+ struct cls_struct_align f_dbl = { 1, 9320, 13 };
57
+ struct cls_struct_align res_dbl;
58
+
55
59
  cls_struct_type.size = 0;
56
60
  cls_struct_type.alignment = 0;
57
61
  cls_struct_type.type = FFI_TYPE_STRUCT;
58
62
  cls_struct_type.elements = cls_struct_fields;
59
63
 
60
- struct cls_struct_align g_dbl = { 12, 4951, 127 };
61
- struct cls_struct_align f_dbl = { 1, 9320, 13 };
62
- struct cls_struct_align res_dbl;
63
-
64
64
  cls_struct_fields[0] = &ffi_type_uchar;
65
65
  cls_struct_fields[1] = &ffi_type_double;
66
66
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -50,15 +50,15 @@ int main (void)
50
50
  ffi_type cls_struct_type;
51
51
  ffi_type* dbl_arg_types[5];
52
52
 
53
+ struct cls_struct_align g_dbl = { 12, 4951, 127 };
54
+ struct cls_struct_align f_dbl = { 1, 9320, 13 };
55
+ struct cls_struct_align res_dbl;
56
+
53
57
  cls_struct_type.size = 0;
54
58
  cls_struct_type.alignment = 0;
55
59
  cls_struct_type.type = FFI_TYPE_STRUCT;
56
60
  cls_struct_type.elements = cls_struct_fields;
57
61
 
58
- struct cls_struct_align g_dbl = { 12, 4951, 127 };
59
- struct cls_struct_align f_dbl = { 1, 9320, 13 };
60
- struct cls_struct_align res_dbl;
61
-
62
62
  cls_struct_fields[0] = &ffi_type_uchar;
63
63
  cls_struct_fields[1] = &ffi_type_float;
64
64
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -51,15 +51,15 @@ int main (void)
51
51
  ffi_type cls_struct_type;
52
52
  ffi_type* dbl_arg_types[5];
53
53
 
54
+ struct cls_struct_align g_dbl = { 12, 4951, 127 };
55
+ struct cls_struct_align f_dbl = { 1, 9320, 13 };
56
+ struct cls_struct_align res_dbl;
57
+
54
58
  cls_struct_type.size = 0;
55
59
  cls_struct_type.alignment = 0;
56
60
  cls_struct_type.type = FFI_TYPE_STRUCT;
57
61
  cls_struct_type.elements = cls_struct_fields;
58
62
 
59
- struct cls_struct_align g_dbl = { 12, 4951, 127 };
60
- struct cls_struct_align f_dbl = { 1, 9320, 13 };
61
- struct cls_struct_align res_dbl;
62
-
63
63
  cls_struct_fields[0] = &ffi_type_uchar;
64
64
  cls_struct_fields[1] = &ffi_type_longdouble;
65
65
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -4,10 +4,8 @@
4
4
  PR: none.
5
5
  Originator: <hos@tamanegi.org> 20031203 */
6
6
 
7
- /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
8
7
  /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
9
8
  /* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
10
- /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
11
9
 
12
10
  #include "ffitest.h"
13
11
 
@@ -87,15 +85,15 @@ int main (void)
87
85
  ffi_type cls_struct_type;
88
86
  ffi_type* dbl_arg_types[3];
89
87
 
88
+ struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
89
+ struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
90
+ struct cls_struct_align res_dbl;
91
+
90
92
  cls_struct_type.size = 0;
91
93
  cls_struct_type.alignment = 0;
92
94
  cls_struct_type.type = FFI_TYPE_STRUCT;
93
95
  cls_struct_type.elements = cls_struct_fields;
94
96
 
95
- struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
96
- struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
97
- struct cls_struct_align res_dbl;
98
-
99
97
  cls_struct_fields[0] = &ffi_type_longdouble;
100
98
  cls_struct_fields[1] = &ffi_type_longdouble;
101
99
  cls_struct_fields[2] = &ffi_type_longdouble;
@@ -5,10 +5,8 @@
5
5
  Originator: Blake Chaffin 6/18/2007
6
6
  */
7
7
 
8
- /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
9
8
  /* { dg-do run { xfail strongarm*-*-* } } */
10
9
  /* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
11
- /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
12
10
 
13
11
  #include "ffitest.h"
14
12
 
@@ -67,15 +65,15 @@ int main (void)
67
65
  ffi_type cls_struct_type;
68
66
  ffi_type* dbl_arg_types[3];
69
67
 
68
+ struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
69
+ struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
70
+ struct cls_struct_align res_dbl;
71
+
70
72
  cls_struct_type.size = 0;
71
73
  cls_struct_type.alignment = 0;
72
74
  cls_struct_type.type = FFI_TYPE_STRUCT;
73
75
  cls_struct_type.elements = cls_struct_fields;
74
76
 
75
- struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
76
- struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
77
- struct cls_struct_align res_dbl;
78
-
79
77
  cls_struct_fields[0] = &ffi_type_longdouble;
80
78
  cls_struct_fields[1] = &ffi_type_longdouble;
81
79
  cls_struct_fields[2] = &ffi_type_longdouble;
@@ -54,15 +54,15 @@ int main (void)
54
54
  ffi_type cls_struct_type;
55
55
  ffi_type* dbl_arg_types[5];
56
56
 
57
+ struct cls_struct_align g_dbl = { 12, (void *)4951, 127 };
58
+ struct cls_struct_align f_dbl = { 1, (void *)9320, 13 };
59
+ struct cls_struct_align res_dbl;
60
+
57
61
  cls_struct_type.size = 0;
58
62
  cls_struct_type.alignment = 0;
59
63
  cls_struct_type.type = FFI_TYPE_STRUCT;
60
64
  cls_struct_type.elements = cls_struct_fields;
61
65
 
62
- struct cls_struct_align g_dbl = { 12, (void *)4951, 127 };
63
- struct cls_struct_align f_dbl = { 1, (void *)9320, 13 };
64
- struct cls_struct_align res_dbl;
65
-
66
66
  cls_struct_fields[0] = &ffi_type_uchar;
67
67
  cls_struct_fields[1] = &ffi_type_pointer;
68
68
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -50,15 +50,15 @@ int main (void)
50
50
  ffi_type cls_struct_type;
51
51
  ffi_type* dbl_arg_types[5];
52
52
 
53
+ struct cls_struct_align g_dbl = { 12, 4951, 127 };
54
+ struct cls_struct_align f_dbl = { 1, 9320, 13 };
55
+ struct cls_struct_align res_dbl;
56
+
53
57
  cls_struct_type.size = 0;
54
58
  cls_struct_type.alignment = 0;
55
59
  cls_struct_type.type = FFI_TYPE_STRUCT;
56
60
  cls_struct_type.elements = cls_struct_fields;
57
61
 
58
- struct cls_struct_align g_dbl = { 12, 4951, 127 };
59
- struct cls_struct_align f_dbl = { 1, 9320, 13 };
60
- struct cls_struct_align res_dbl;
61
-
62
62
  cls_struct_fields[0] = &ffi_type_uchar;
63
63
  cls_struct_fields[1] = &ffi_type_sshort;
64
64
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -50,15 +50,15 @@ int main (void)
50
50
  ffi_type cls_struct_type;
51
51
  ffi_type* dbl_arg_types[5];
52
52
 
53
+ struct cls_struct_align g_dbl = { 12, 4951, 127 };
54
+ struct cls_struct_align f_dbl = { 1, 9320, 13 };
55
+ struct cls_struct_align res_dbl;
56
+
53
57
  cls_struct_type.size = 0;
54
58
  cls_struct_type.alignment = 0;
55
59
  cls_struct_type.type = FFI_TYPE_STRUCT;
56
60
  cls_struct_type.elements = cls_struct_fields;
57
61
 
58
- struct cls_struct_align g_dbl = { 12, 4951, 127 };
59
- struct cls_struct_align f_dbl = { 1, 9320, 13 };
60
- struct cls_struct_align res_dbl;
61
-
62
62
  cls_struct_fields[0] = &ffi_type_uchar;
63
63
  cls_struct_fields[1] = &ffi_type_sint;
64
64
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -51,15 +51,15 @@ int main (void)
51
51
  ffi_type cls_struct_type;
52
52
  ffi_type* dbl_arg_types[5];
53
53
 
54
+ struct cls_struct_align g_dbl = { 12, 4951, 127 };
55
+ struct cls_struct_align f_dbl = { 1, 9320, 13 };
56
+ struct cls_struct_align res_dbl;
57
+
54
58
  cls_struct_type.size = 0;
55
59
  cls_struct_type.alignment = 0;
56
60
  cls_struct_type.type = FFI_TYPE_STRUCT;
57
61
  cls_struct_type.elements = cls_struct_fields;
58
62
 
59
- struct cls_struct_align g_dbl = { 12, 4951, 127 };
60
- struct cls_struct_align f_dbl = { 1, 9320, 13 };
61
- struct cls_struct_align res_dbl;
62
-
63
63
  cls_struct_fields[0] = &ffi_type_uchar;
64
64
  cls_struct_fields[1] = &ffi_type_sint64;
65
65
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -50,15 +50,15 @@ int main (void)
50
50
  ffi_type cls_struct_type;
51
51
  ffi_type* dbl_arg_types[5];
52
52
 
53
+ struct cls_struct_align g_dbl = { 12, 4951, 127 };
54
+ struct cls_struct_align f_dbl = { 1, 9320, 13 };
55
+ struct cls_struct_align res_dbl;
56
+
53
57
  cls_struct_type.size = 0;
54
58
  cls_struct_type.alignment = 0;
55
59
  cls_struct_type.type = FFI_TYPE_STRUCT;
56
60
  cls_struct_type.elements = cls_struct_fields;
57
61
 
58
- struct cls_struct_align g_dbl = { 12, 4951, 127 };
59
- struct cls_struct_align f_dbl = { 1, 9320, 13 };
60
- struct cls_struct_align res_dbl;
61
-
62
62
  cls_struct_fields[0] = &ffi_type_uchar;
63
63
  cls_struct_fields[1] = &ffi_type_ushort;
64
64
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -50,15 +50,15 @@ int main (void)
50
50
  ffi_type cls_struct_type;
51
51
  ffi_type* dbl_arg_types[5];
52
52
 
53
+ struct cls_struct_align g_dbl = { 12, 4951, 127 };
54
+ struct cls_struct_align f_dbl = { 1, 9320, 13 };
55
+ struct cls_struct_align res_dbl;
56
+
53
57
  cls_struct_type.size = 0;
54
58
  cls_struct_type.alignment = 0;
55
59
  cls_struct_type.type = FFI_TYPE_STRUCT;
56
60
  cls_struct_type.elements = cls_struct_fields;
57
61
 
58
- struct cls_struct_align g_dbl = { 12, 4951, 127 };
59
- struct cls_struct_align f_dbl = { 1, 9320, 13 };
60
- struct cls_struct_align res_dbl;
61
-
62
62
  cls_struct_fields[0] = &ffi_type_uchar;
63
63
  cls_struct_fields[1] = &ffi_type_uint;
64
64
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -52,15 +52,15 @@ int main (void)
52
52
  ffi_type cls_struct_type;
53
53
  ffi_type* dbl_arg_types[5];
54
54
 
55
+ struct cls_struct_align g_dbl = { 12, 4951, 127 };
56
+ struct cls_struct_align f_dbl = { 1, 9320, 13 };
57
+ struct cls_struct_align res_dbl;
58
+
55
59
  cls_struct_type.size = 0;
56
60
  cls_struct_type.alignment = 0;
57
61
  cls_struct_type.type = FFI_TYPE_STRUCT;
58
62
  cls_struct_type.elements = cls_struct_fields;
59
63
 
60
- struct cls_struct_align g_dbl = { 12, 4951, 127 };
61
- struct cls_struct_align f_dbl = { 1, 9320, 13 };
62
- struct cls_struct_align res_dbl;
63
-
64
64
  cls_struct_fields[0] = &ffi_type_uchar;
65
65
  cls_struct_fields[1] = &ffi_type_uint64;
66
66
  cls_struct_fields[2] = &ffi_type_uchar;
@@ -37,6 +37,8 @@ int main(int argc __UNUSED__, char** argv __UNUSED__)
37
37
  ffi_type ts1_type;
38
38
  ffi_type* ts1_type_elements[4];
39
39
 
40
+ Dbls arg = { 1.0, 2.0 };
41
+
40
42
  ts1_type.size = 0;
41
43
  ts1_type.alignment = 0;
42
44
  ts1_type.type = FFI_TYPE_STRUCT;
@@ -48,8 +50,6 @@ int main(int argc __UNUSED__, char** argv __UNUSED__)
48
50
 
49
51
  cl_arg_types[0] = &ts1_type;
50
52
 
51
- Dbls arg = { 1.0, 2.0 };
52
-
53
53
  /* Initialize the cif */
54
54
  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
55
55
  &ffi_type_void, cl_arg_types) == FFI_OK);
@@ -57,10 +57,10 @@ int main(int argc __UNUSED__, char** argv __UNUSED__)
57
57
  CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_gn, NULL, code) == FFI_OK);
58
58
 
59
59
  ((void*(*)(Dbls))(code))(arg);
60
- /* { dg-output "1.0 2.0\n" } */
60
+ /* { dg-output "1.0 2.0" } */
61
61
 
62
62
  closure_test_fn(arg);
63
- /* { dg-output "1.0 2.0\n" } */
63
+ /* { dg-output "\n1.0 2.0" } */
64
64
 
65
65
  return 0;
66
66
  }