ffi 1.15.5 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +118 -0
  4. data/Gemfile +10 -3
  5. data/README.md +4 -3
  6. data/Rakefile +25 -10
  7. data/ext/ffi_c/AbstractMemory.c +99 -74
  8. data/ext/ffi_c/AbstractMemory.h +3 -2
  9. data/ext/ffi_c/ArrayType.c +51 -15
  10. data/ext/ffi_c/ArrayType.h +1 -0
  11. data/ext/ffi_c/Buffer.c +90 -33
  12. data/ext/ffi_c/Call.c +29 -12
  13. data/ext/ffi_c/Call.h +3 -2
  14. data/ext/ffi_c/DynamicLibrary.c +90 -27
  15. data/ext/ffi_c/Function.c +244 -98
  16. data/ext/ffi_c/Function.h +1 -0
  17. data/ext/ffi_c/FunctionInfo.c +81 -25
  18. data/ext/ffi_c/LastError.c +29 -11
  19. data/ext/ffi_c/MappedType.c +66 -23
  20. data/ext/ffi_c/MappedType.h +0 -2
  21. data/ext/ffi_c/MemoryPointer.c +36 -9
  22. data/ext/ffi_c/MethodHandle.c +3 -1
  23. data/ext/ffi_c/Pointer.c +82 -40
  24. data/ext/ffi_c/Pointer.h +1 -0
  25. data/ext/ffi_c/Struct.c +166 -84
  26. data/ext/ffi_c/Struct.h +7 -4
  27. data/ext/ffi_c/StructByValue.c +48 -16
  28. data/ext/ffi_c/StructLayout.c +130 -61
  29. data/ext/ffi_c/Type.c +120 -51
  30. data/ext/ffi_c/Type.h +3 -1
  31. data/ext/ffi_c/Types.c +8 -2
  32. data/ext/ffi_c/Types.h +0 -1
  33. data/ext/ffi_c/Variadic.c +71 -26
  34. data/ext/ffi_c/compat.h +22 -22
  35. data/ext/ffi_c/extconf.rb +19 -2
  36. data/ext/ffi_c/ffi.c +4 -0
  37. data/ext/ffi_c/libffi/.allow-ai-service +0 -0
  38. data/ext/ffi_c/libffi/.appveyor/site.exp +16 -0
  39. data/ext/ffi_c/libffi/.appveyor/unix-noexec.exp +7 -0
  40. data/ext/ffi_c/libffi/.appveyor.yml +27 -9
  41. data/ext/ffi_c/libffi/.ci/build-cross-in-container.sh +18 -0
  42. data/ext/ffi_c/libffi/{.travis → .ci}/build-in-container.sh +4 -6
  43. data/ext/ffi_c/libffi/.ci/build.sh +124 -0
  44. data/ext/ffi_c/libffi/{.travis → .ci}/install.sh +14 -7
  45. data/ext/ffi_c/libffi/.ci/msvs-detect +1103 -0
  46. data/ext/ffi_c/libffi/{.travis → .ci}/site.exp +5 -3
  47. data/ext/ffi_c/libffi/.circleci/config.yml +156 -0
  48. data/ext/ffi_c/libffi/.github/workflows/build.yml +479 -0
  49. data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +172 -0
  50. data/ext/ffi_c/libffi/.gitignore +10 -2
  51. data/ext/ffi_c/libffi/LICENSE +1 -1
  52. data/ext/ffi_c/libffi/Makefile.am +12 -5
  53. data/ext/ffi_c/libffi/Makefile.in +118 -51
  54. data/ext/ffi_c/libffi/README.md +150 -105
  55. data/ext/ffi_c/libffi/acinclude.m4 +10 -112
  56. data/ext/ffi_c/libffi/compile +348 -0
  57. data/ext/ffi_c/libffi/config.guess +623 -556
  58. data/ext/ffi_c/libffi/config.sub +75 -34
  59. data/ext/ffi_c/libffi/configure +4571 -3830
  60. data/ext/ffi_c/libffi/configure.ac +64 -28
  61. data/ext/ffi_c/libffi/configure.host +26 -7
  62. data/ext/ffi_c/libffi/doc/Makefile.in +9 -6
  63. data/ext/ffi_c/libffi/doc/libffi.texi +82 -33
  64. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  65. data/ext/ffi_c/libffi/fficonfig.h.in +12 -47
  66. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +163 -52
  67. data/ext/ffi_c/libffi/include/Makefile.am +1 -1
  68. data/ext/ffi_c/libffi/include/Makefile.in +10 -9
  69. data/ext/ffi_c/libffi/include/ffi.h.in +55 -60
  70. data/ext/ffi_c/libffi/include/ffi_cfi.h +21 -0
  71. data/ext/ffi_c/libffi/include/ffi_common.h +33 -2
  72. data/ext/ffi_c/libffi/include/tramp.h +45 -0
  73. data/ext/ffi_c/libffi/install-sh +92 -69
  74. data/ext/ffi_c/libffi/libffi.map.in +5 -0
  75. data/ext/ffi_c/libffi/libtool-version +2 -2
  76. data/ext/ffi_c/libffi/ltmain.sh +518 -333
  77. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +18 -14
  78. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +108 -72
  79. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +76 -45
  80. data/ext/ffi_c/libffi/m4/ax_prepend_flag.m4 +51 -0
  81. data/ext/ffi_c/libffi/man/Makefile.in +9 -6
  82. data/ext/ffi_c/libffi/missing +1 -1
  83. data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/ffi.h +2 -2
  84. data/ext/ffi_c/libffi/msvcc.sh +1 -1
  85. data/ext/ffi_c/libffi/src/aarch64/ffi.c +172 -55
  86. data/ext/ffi_c/libffi/src/aarch64/internal.h +32 -0
  87. data/ext/ffi_c/libffi/src/aarch64/sysv.S +331 -87
  88. data/ext/ffi_c/libffi/src/arc/arcompact.S +169 -94
  89. data/ext/ffi_c/libffi/src/arc/ffi.c +325 -148
  90. data/ext/ffi_c/libffi/src/arc/ffitarget.h +14 -0
  91. data/ext/ffi_c/libffi/src/arm/ffi.c +62 -17
  92. data/ext/ffi_c/libffi/src/arm/ffitarget.h +3 -3
  93. data/ext/ffi_c/libffi/src/arm/internal.h +10 -0
  94. data/ext/ffi_c/libffi/src/arm/sysv.S +113 -42
  95. data/ext/ffi_c/libffi/src/closures.c +136 -50
  96. data/ext/ffi_c/libffi/src/debug.c +2 -2
  97. data/ext/ffi_c/libffi/src/dlmalloc.c +6 -1
  98. data/ext/ffi_c/libffi/src/ia64/ffi.c +12 -0
  99. data/ext/ffi_c/libffi/src/ia64/unix.S +20 -2
  100. data/ext/ffi_c/libffi/src/loongarch64/ffi.c +624 -0
  101. data/ext/ffi_c/libffi/src/loongarch64/ffitarget.h +82 -0
  102. data/ext/ffi_c/libffi/src/loongarch64/sysv.S +327 -0
  103. data/ext/ffi_c/libffi/src/m32r/ffi.c +31 -14
  104. data/ext/ffi_c/libffi/src/mips/ffi.c +250 -67
  105. data/ext/ffi_c/libffi/src/mips/ffitarget.h +7 -0
  106. data/ext/ffi_c/libffi/src/mips/n32.S +193 -33
  107. data/ext/ffi_c/libffi/src/mips/o32.S +61 -4
  108. data/ext/ffi_c/libffi/src/moxie/ffi.c +47 -22
  109. data/ext/ffi_c/libffi/src/or1k/ffi.c +25 -12
  110. data/ext/ffi_c/libffi/src/pa/ffi.c +32 -33
  111. data/ext/ffi_c/libffi/src/pa/ffi64.c +614 -0
  112. data/ext/ffi_c/libffi/src/pa/ffitarget.h +22 -8
  113. data/ext/ffi_c/libffi/src/pa/hpux32.S +83 -36
  114. data/ext/ffi_c/libffi/src/pa/hpux64.S +681 -0
  115. data/ext/ffi_c/libffi/src/pa/linux.S +82 -35
  116. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +36 -24
  117. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +1 -1
  118. data/ext/ffi_c/libffi/src/powerpc/linux64.S +2 -0
  119. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +2 -0
  120. data/ext/ffi_c/libffi/src/powerpc/t-aix +5 -0
  121. data/ext/ffi_c/libffi/src/prep_cif.c +22 -2
  122. data/ext/ffi_c/libffi/src/riscv/ffi.c +37 -4
  123. data/ext/ffi_c/libffi/src/sparc/ffi64.c +23 -1
  124. data/ext/ffi_c/libffi/src/tramp.c +716 -0
  125. data/ext/ffi_c/libffi/src/types.c +4 -6
  126. data/ext/ffi_c/libffi/src/wasm32/ffi.c +947 -0
  127. data/ext/ffi_c/libffi/src/wasm32/ffitarget.h +62 -0
  128. data/ext/ffi_c/libffi/src/x86/ffi.c +99 -37
  129. data/ext/ffi_c/libffi/src/x86/ffi64.c +67 -12
  130. data/ext/ffi_c/libffi/src/x86/ffitarget.h +9 -5
  131. data/ext/ffi_c/libffi/src/x86/ffiw64.c +44 -1
  132. data/ext/ffi_c/libffi/src/x86/internal.h +14 -0
  133. data/ext/ffi_c/libffi/src/x86/internal64.h +14 -0
  134. data/ext/ffi_c/libffi/src/x86/sysv.S +172 -38
  135. data/ext/ffi_c/libffi/src/x86/sysv_intel.S +91 -88
  136. data/ext/ffi_c/libffi/src/x86/unix64.S +96 -6
  137. data/ext/ffi_c/libffi/src/x86/win64.S +20 -7
  138. data/ext/ffi_c/libffi/src/xtensa/ffi.c +16 -8
  139. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +4 -0
  140. data/ext/ffi_c/libffi/src/xtensa/sysv.S +26 -16
  141. data/ext/ffi_c/libffi/testsuite/Makefile.am +79 -114
  142. data/ext/ffi_c/libffi/testsuite/Makefile.in +89 -121
  143. data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +54 -0
  144. data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +63 -0
  145. data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +86 -0
  146. data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +48 -0
  147. data/ext/ffi_c/libffi/testsuite/emscripten/test.html +7 -0
  148. data/ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py +51 -0
  149. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +43 -21
  150. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +2 -2
  151. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +1 -0
  152. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +5 -1
  153. data/ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c +41 -0
  154. data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +99 -0
  155. data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +108 -0
  156. data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +114 -0
  157. data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +119 -0
  158. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +28 -3
  159. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +3 -0
  160. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +5 -0
  161. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +4 -0
  162. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +4 -0
  163. data/ext/ffi_c/libffi/testsuite/libffi.call/s55.c +60 -0
  164. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +8 -9
  165. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +2 -2
  166. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +2 -2
  167. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +2 -2
  168. data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +1 -1
  169. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c +63 -0
  170. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c +65 -0
  171. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c +65 -0
  172. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c +67 -0
  173. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c +67 -0
  174. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c +93 -0
  175. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c +61 -0
  176. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c +63 -0
  177. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c +90 -0
  178. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +1 -119
  179. data/ext/ffi_c/libffi/testsuite/libffi.call/va_2.c +220 -0
  180. data/ext/ffi_c/libffi/testsuite/libffi.call/va_3.c +154 -0
  181. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +13 -0
  182. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +11 -0
  183. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +15 -0
  184. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn0.c +3 -2
  185. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn1.c +2 -0
  186. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn2.c +2 -0
  187. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn3.c +21 -1
  188. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn4.c +2 -0
  189. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn5.c +2 -0
  190. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn6.c +2 -0
  191. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_loc_fn0.c +7 -6
  192. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_simple.c +6 -0
  193. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_12byte.c +18 -0
  194. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_16byte.c +22 -0
  195. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_18byte.c +24 -0
  196. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_19byte.c +29 -0
  197. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_1_1byte.c +4 -0
  198. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte.c +19 -1
  199. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte1.c +21 -1
  200. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_24byte.c +35 -3
  201. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_2byte.c +13 -0
  202. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3_1byte.c +19 -0
  203. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte1.c +13 -0
  204. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte2.c +13 -0
  205. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +18 -0
  206. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4_1byte.c +22 -0
  207. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4byte.c +13 -0
  208. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5_1_byte.c +29 -1
  209. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5byte.c +19 -1
  210. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_64byte.c +24 -0
  211. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6_1_byte.c +28 -1
  212. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6byte.c +24 -2
  213. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7_1_byte.c +39 -1
  214. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7byte.c +25 -1
  215. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_8byte.c +14 -0
  216. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte1.c +14 -1
  217. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte2.c +14 -2
  218. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_double.c +19 -1
  219. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_float.c +19 -1
  220. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble.c +20 -1
  221. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c +40 -25
  222. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c +40 -3
  223. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_pointer.c +19 -1
  224. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint16.c +18 -1
  225. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint32.c +18 -3
  226. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint64.c +18 -1
  227. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint16.c +18 -1
  228. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint32.c +19 -1
  229. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint64.c +19 -1
  230. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_dbls_struct.c +3 -1
  231. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double_va.c +9 -1
  232. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_float.c +4 -0
  233. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble.c +11 -1
  234. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble_va.c +22 -3
  235. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_schar.c +5 -1
  236. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshort.c +6 -1
  237. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +9 -1
  238. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_uchar.c +9 -1
  239. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushort.c +6 -2
  240. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +9 -1
  241. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer.c +5 -0
  242. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer_stack.c +10 -0
  243. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_schar.c +3 -0
  244. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sint.c +2 -0
  245. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sshort.c +3 -0
  246. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +11 -0
  247. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar.c +3 -0
  248. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint.c +4 -0
  249. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +4 -0
  250. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +4 -0
  251. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulonglong.c +2 -0
  252. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort.c +3 -0
  253. data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +1 -138
  254. data/ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c +21 -21
  255. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct.c +32 -9
  256. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct1.c +1 -1
  257. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct10.c +12 -0
  258. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +21 -5
  259. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c +86 -0
  260. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c +115 -0
  261. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct2.c +10 -1
  262. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct3.c +10 -1
  263. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct4.c +9 -0
  264. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct5.c +9 -0
  265. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct6.c +11 -0
  266. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct7.c +9 -0
  267. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct8.c +11 -0
  268. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct9.c +11 -0
  269. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c +86 -0
  270. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c +102 -0
  271. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c +101 -0
  272. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium.c +1 -1
  273. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium2.c +1 -1
  274. data/ext/ffi_c/libffi/testsuite/libffi.closures/testclosure.c +6 -1
  275. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest.cc +2 -1
  276. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc +1 -0
  277. data/ext/ffi_c/libffi.bsd.mk +2 -2
  278. data/ext/ffi_c/libffi.darwin.mk +2 -2
  279. data/ext/ffi_c/libffi.gnu.mk +2 -2
  280. data/ext/ffi_c/rbffi.h +1 -1
  281. data/ffi.gemspec +3 -3
  282. data/lib/ffi/autopointer.rb +8 -31
  283. data/lib/ffi/compat.rb +43 -0
  284. data/lib/ffi/data_converter.rb +2 -2
  285. data/lib/ffi/dynamic_library.rb +118 -0
  286. data/lib/ffi/enum.rb +18 -12
  287. data/lib/ffi/ffi.rb +3 -0
  288. data/lib/ffi/function.rb +71 -0
  289. data/lib/ffi/io.rb +2 -2
  290. data/lib/ffi/library.rb +72 -88
  291. data/lib/ffi/library_path.rb +109 -0
  292. data/lib/ffi/managedstruct.rb +1 -1
  293. data/lib/ffi/platform/aarch64-linux/types.conf +74 -3
  294. data/lib/ffi/platform/aarch64-windows/types.conf +52 -0
  295. data/lib/ffi/platform/hppa1.1-linux/types.conf +178 -0
  296. data/lib/ffi/platform/hppa2.0-linux/types.conf +178 -0
  297. data/lib/ffi/platform/loongarch64-linux/types.conf +141 -0
  298. data/lib/ffi/platform/sw_64-linux/types.conf +141 -0
  299. data/lib/ffi/platform.rb +15 -13
  300. data/lib/ffi/pointer.rb +6 -6
  301. data/lib/ffi/struct.rb +6 -5
  302. data/lib/ffi/struct_layout.rb +3 -3
  303. data/lib/ffi/struct_layout_builder.rb +9 -9
  304. data/lib/ffi/types.rb +65 -37
  305. data/lib/ffi/variadic.rb +19 -8
  306. data/lib/ffi/version.rb +1 -1
  307. data/samples/hello_ractor.rb +11 -0
  308. data/samples/qsort_ractor.rb +28 -0
  309. data/sig/ffi/abstract_memory.rbs +165 -0
  310. data/sig/ffi/auto_pointer.rbs +27 -0
  311. data/sig/ffi/buffer.rbs +18 -0
  312. data/sig/ffi/data_converter.rbs +10 -0
  313. data/sig/ffi/dynamic_library.rbs +9 -0
  314. data/sig/ffi/enum.rbs +38 -0
  315. data/sig/ffi/function.rbs +39 -0
  316. data/sig/ffi/library.rbs +42 -0
  317. data/sig/ffi/native_type.rbs +86 -0
  318. data/sig/ffi/pointer.rbs +42 -0
  319. data/sig/ffi/struct.rbs +76 -0
  320. data/sig/ffi/struct_by_reference.rbs +11 -0
  321. data/sig/ffi/struct_by_value.rbs +7 -0
  322. data/sig/ffi/struct_layout.rbs +9 -0
  323. data/sig/ffi/struct_layout_builder.rbs +5 -0
  324. data/sig/ffi/type.rbs +39 -0
  325. data/sig/ffi.rbs +26 -0
  326. data.tar.gz.sig +0 -0
  327. metadata +122 -28
  328. metadata.gz.sig +1 -0
  329. data/ext/ffi_c/libffi/.travis/build-cross-in-container.sh +0 -14
  330. data/ext/ffi_c/libffi/.travis/build.sh +0 -142
  331. data/ext/ffi_c/libffi/.travis.yml +0 -83
  332. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar_va.c +0 -44
  333. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort_va.c +0 -44
  334. /data/ext/ffi_c/libffi/{.travis → .ci}/ar-lib +0 -0
  335. /data/ext/ffi_c/libffi/{.travis → .ci}/bfin-sim.exp +0 -0
  336. /data/ext/ffi_c/libffi/{.travis → .ci}/compile +0 -0
  337. /data/ext/ffi_c/libffi/{.travis → .ci}/m32r-sim.exp +0 -0
  338. /data/ext/ffi_c/libffi/{.travis → .ci}/moxie-sim.exp +0 -0
  339. /data/ext/ffi_c/libffi/{.travis → .ci}/or1k-sim.exp +0 -0
  340. /data/ext/ffi_c/libffi/{.travis → .ci}/powerpc-eabisim.exp +0 -0
  341. /data/ext/ffi_c/libffi/{.travis → .ci}/wine-sim.exp +0 -0
  342. /data/ext/ffi_c/libffi/testsuite/libffi.call/{pyobjc-tc.c → pyobjc_tc.c} +0 -0
  343. /data/lib/ffi/platform/{sparc64-linux → sparcv9-linux}/types.conf +0 -0
metadata CHANGED
@@ -1,14 +1,38 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.15.5
4
+ version: 1.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wayne Meissner
8
- autorequire:
9
8
  bindir: bin
10
- cert_chain: []
11
- date: 2022-01-10 00:00:00.000000000 Z
9
+ cert_chain:
10
+ - |
11
+ -----BEGIN CERTIFICATE-----
12
+ MIIEBDCCAmygAwIBAgIBAzANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB1sYXJz
13
+ L0RDPWdyZWl6LXJlaW5zZG9yZi9EQz1kZTAeFw0yNDAyMjgxOTMxNDdaFw0yNTAy
14
+ MjcxOTMxNDdaMCgxJjAkBgNVBAMMHWxhcnMvREM9Z3JlaXotcmVpbnNkb3JmL0RD
15
+ PWRlMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAwum6Y1KznfpzXOT/
16
+ mZgJTBbxZuuZF49Fq3K0WA67YBzNlDv95qzSp7V/7Ek3NCcnT7G+2kSuhNo1FhdN
17
+ eSDO/moYebZNAcu3iqLsuzuULXPLuoU0GsMnVMqV9DZPh7cQHE5EBZ7hlzDBK7k/
18
+ 8nBMvR0mHo77kIkapHc26UzVq/G0nKLfDsIHXVylto3PjzOumjG6GhmFN4r3cP6e
19
+ SDfl1FSeRYVpt4kmQULz/zdSaOH3AjAq7PM2Z91iGwQvoUXMANH2v89OWjQO/NHe
20
+ JMNDFsmHK/6Ji4Kk48Z3TyscHQnipAID5GhS1oD21/WePdj7GhmbF5gBzkV5uepd
21
+ eJQPgWGwrQW/Z2oPjRuJrRofzWfrMWqbOahj9uth6WSxhNexUtbjk6P8emmXOJi5
22
+ chQPnWX+N3Gj+jjYxqTFdwT7Mj3pv1VHa+aNUbqSPpvJeDyxRIuo9hvzDaBHb/Cg
23
+ 9qRVcm8a96n4t7y2lrX1oookY6bkBaxWOMtWlqIprq8JZXM9AgMBAAGjOTA3MAkG
24
+ A1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQ4h1tIyvdUWtMI739xMzTR
25
+ 7EfMFzANBgkqhkiG9w0BAQsFAAOCAYEArBmHSfnUyNWf3R1Fx0mMHloWGdcKn2D2
26
+ BsqTApXU2nADiyppIqRq4b9e7hw342uzadSLkoQcEFOxThLRhAcijoWfQVBcsbV/
27
+ ZsCY1qlUTIJuSWxaSyS4efUX+N4eMNyPM9oW/sphlWFo0DgI34Y9WB6HDzH+O71y
28
+ R7PARke3f4kYnRJf5yRQLPDrH9UYt9KlBQm6l7XMtr5EMnQt0EfcmZEi9H4t/vS2
29
+ haxvpFMdAKo4H46GBYNO96r6b74t++vgQSBTg/AFVwvRZwNSrPPcBfb4xxeEAhRR
30
+ x+LU7feIH7lZ//3buiyD03gLAEtHXai0Y+/VfuWIpwYJAl2BO/tU7FS/dtbJq9oc
31
+ dI36Yyzy+BrCM0WT4oCsagePNb97FaNhl4F6sM5JEPT0ZPxRx0i3G4TNNIYziVos
32
+ 5wFER6XhvvLDFAMh/jMg+s7Wd5SbSHgHNSUaUGVtdWkVPOer6oF0aLdZUR3CETkn
33
+ 5nWXZma/BUd3YgYA/Xumc6QQqIS4p7mr
34
+ -----END CERTIFICATE-----
35
+ date: 2024-06-02 00:00:00.000000000 Z
12
36
  dependencies:
13
37
  - !ruby/object:Gem::Dependency
14
38
  name: rake
@@ -30,14 +54,14 @@ dependencies:
30
54
  requirements:
31
55
  - - "~>"
32
56
  - !ruby/object:Gem::Version
33
- version: '1.0'
57
+ version: '1.1'
34
58
  type: :development
35
59
  prerelease: false
36
60
  version_requirements: !ruby/object:Gem::Requirement
37
61
  requirements:
38
62
  - - "~>"
39
63
  - !ruby/object:Gem::Version
40
- version: '1.0'
64
+ version: '1.1'
41
65
  - !ruby/object:Gem::Dependency
42
66
  name: rake-compiler-dock
43
67
  requirement: !ruby/object:Gem::Requirement
@@ -129,24 +153,30 @@ files:
129
153
  - ext/ffi_c/libffi.mk
130
154
  - ext/ffi_c/libffi.vc.mk
131
155
  - ext/ffi_c/libffi.vc64.mk
156
+ - ext/ffi_c/libffi/.allow-ai-service
132
157
  - ext/ffi_c/libffi/.appveyor.yml
158
+ - ext/ffi_c/libffi/.appveyor/site.exp
159
+ - ext/ffi_c/libffi/.appveyor/unix-noexec.exp
160
+ - ext/ffi_c/libffi/.ci/ar-lib
161
+ - ext/ffi_c/libffi/.ci/bfin-sim.exp
162
+ - ext/ffi_c/libffi/.ci/build-cross-in-container.sh
163
+ - ext/ffi_c/libffi/.ci/build-in-container.sh
164
+ - ext/ffi_c/libffi/.ci/build.sh
165
+ - ext/ffi_c/libffi/.ci/compile
166
+ - ext/ffi_c/libffi/.ci/install.sh
167
+ - ext/ffi_c/libffi/.ci/m32r-sim.exp
168
+ - ext/ffi_c/libffi/.ci/moxie-sim.exp
169
+ - ext/ffi_c/libffi/.ci/msvs-detect
170
+ - ext/ffi_c/libffi/.ci/or1k-sim.exp
171
+ - ext/ffi_c/libffi/.ci/powerpc-eabisim.exp
172
+ - ext/ffi_c/libffi/.ci/site.exp
173
+ - ext/ffi_c/libffi/.ci/wine-sim.exp
174
+ - ext/ffi_c/libffi/.circleci/config.yml
133
175
  - ext/ffi_c/libffi/.gitattributes
134
176
  - ext/ffi_c/libffi/.github/issue_template.md
177
+ - ext/ffi_c/libffi/.github/workflows/build.yml
178
+ - ext/ffi_c/libffi/.github/workflows/emscripten.yml
135
179
  - ext/ffi_c/libffi/.gitignore
136
- - ext/ffi_c/libffi/.travis.yml
137
- - ext/ffi_c/libffi/.travis/ar-lib
138
- - ext/ffi_c/libffi/.travis/bfin-sim.exp
139
- - ext/ffi_c/libffi/.travis/build-cross-in-container.sh
140
- - ext/ffi_c/libffi/.travis/build-in-container.sh
141
- - ext/ffi_c/libffi/.travis/build.sh
142
- - ext/ffi_c/libffi/.travis/compile
143
- - ext/ffi_c/libffi/.travis/install.sh
144
- - ext/ffi_c/libffi/.travis/m32r-sim.exp
145
- - ext/ffi_c/libffi/.travis/moxie-sim.exp
146
- - ext/ffi_c/libffi/.travis/or1k-sim.exp
147
- - ext/ffi_c/libffi/.travis/powerpc-eabisim.exp
148
- - ext/ffi_c/libffi/.travis/site.exp
149
- - ext/ffi_c/libffi/.travis/wine-sim.exp
150
180
  - ext/ffi_c/libffi/ChangeLog.old
151
181
  - ext/ffi_c/libffi/LICENSE
152
182
  - ext/ffi_c/libffi/LICENSE-BUILDTOOLS
@@ -155,6 +185,7 @@ files:
155
185
  - ext/ffi_c/libffi/README.md
156
186
  - ext/ffi_c/libffi/acinclude.m4
157
187
  - ext/ffi_c/libffi/autogen.sh
188
+ - ext/ffi_c/libffi/compile
158
189
  - ext/ffi_c/libffi/config.guess
159
190
  - ext/ffi_c/libffi/config.sub
160
191
  - ext/ffi_c/libffi/configure
@@ -171,6 +202,7 @@ files:
171
202
  - ext/ffi_c/libffi/include/ffi.h.in
172
203
  - ext/ffi_c/libffi/include/ffi_cfi.h
173
204
  - ext/ffi_c/libffi/include/ffi_common.h
205
+ - ext/ffi_c/libffi/include/tramp.h
174
206
  - ext/ffi_c/libffi/install-sh
175
207
  - ext/ffi_c/libffi/libffi.map.in
176
208
  - ext/ffi_c/libffi/libffi.pc.in
@@ -188,6 +220,7 @@ files:
188
220
  - ext/ffi_c/libffi/m4/ax_enable_builddir.m4
189
221
  - ext/ffi_c/libffi/m4/ax_gcc_archflag.m4
190
222
  - ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4
223
+ - ext/ffi_c/libffi/m4/ax_prepend_flag.m4
191
224
  - ext/ffi_c/libffi/m4/ax_require_defined.m4
192
225
  - ext/ffi_c/libffi/make_sunver.pl
193
226
  - ext/ffi_c/libffi/man/Makefile.am
@@ -248,6 +281,9 @@ files:
248
281
  - ext/ffi_c/libffi/src/kvx/ffi.c
249
282
  - ext/ffi_c/libffi/src/kvx/ffitarget.h
250
283
  - ext/ffi_c/libffi/src/kvx/sysv.S
284
+ - ext/ffi_c/libffi/src/loongarch64/ffi.c
285
+ - ext/ffi_c/libffi/src/loongarch64/ffitarget.h
286
+ - ext/ffi_c/libffi/src/loongarch64/sysv.S
251
287
  - ext/ffi_c/libffi/src/m32r/ffi.c
252
288
  - ext/ffi_c/libffi/src/m32r/ffitarget.h
253
289
  - ext/ffi_c/libffi/src/m32r/sysv.S
@@ -277,8 +313,10 @@ files:
277
313
  - ext/ffi_c/libffi/src/or1k/ffitarget.h
278
314
  - ext/ffi_c/libffi/src/or1k/sysv.S
279
315
  - ext/ffi_c/libffi/src/pa/ffi.c
316
+ - ext/ffi_c/libffi/src/pa/ffi64.c
280
317
  - ext/ffi_c/libffi/src/pa/ffitarget.h
281
318
  - ext/ffi_c/libffi/src/pa/hpux32.S
319
+ - ext/ffi_c/libffi/src/pa/hpux64.S
282
320
  - ext/ffi_c/libffi/src/pa/linux.S
283
321
  - ext/ffi_c/libffi/src/powerpc/aix.S
284
322
  - ext/ffi_c/libffi/src/powerpc/aix_closure.S
@@ -295,6 +333,7 @@ files:
295
333
  - ext/ffi_c/libffi/src/powerpc/linux64_closure.S
296
334
  - ext/ffi_c/libffi/src/powerpc/ppc_closure.S
297
335
  - ext/ffi_c/libffi/src/powerpc/sysv.S
336
+ - ext/ffi_c/libffi/src/powerpc/t-aix
298
337
  - ext/ffi_c/libffi/src/prep_cif.c
299
338
  - ext/ffi_c/libffi/src/raw_api.c
300
339
  - ext/ffi_c/libffi/src/riscv/ffi.c
@@ -319,10 +358,13 @@ files:
319
358
  - ext/ffi_c/libffi/src/tile/ffi.c
320
359
  - ext/ffi_c/libffi/src/tile/ffitarget.h
321
360
  - ext/ffi_c/libffi/src/tile/tile.S
361
+ - ext/ffi_c/libffi/src/tramp.c
322
362
  - ext/ffi_c/libffi/src/types.c
323
363
  - ext/ffi_c/libffi/src/vax/elfbsd.S
324
364
  - ext/ffi_c/libffi/src/vax/ffi.c
325
365
  - ext/ffi_c/libffi/src/vax/ffitarget.h
366
+ - ext/ffi_c/libffi/src/wasm32/ffi.c
367
+ - ext/ffi_c/libffi/src/wasm32/ffitarget.h
326
368
  - ext/ffi_c/libffi/src/x86/asmnames.h
327
369
  - ext/ffi_c/libffi/src/x86/ffi.c
328
370
  - ext/ffi_c/libffi/src/x86/ffi64.c
@@ -342,6 +384,12 @@ files:
342
384
  - ext/ffi_c/libffi/testsuite/Makefile.am
343
385
  - ext/ffi_c/libffi/testsuite/Makefile.in
344
386
  - ext/ffi_c/libffi/testsuite/config/default.exp
387
+ - ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh
388
+ - ext/ffi_c/libffi/testsuite/emscripten/build.sh
389
+ - ext/ffi_c/libffi/testsuite/emscripten/conftest.py
390
+ - ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh
391
+ - ext/ffi_c/libffi/testsuite/emscripten/test.html
392
+ - ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py
345
393
  - ext/ffi_c/libffi/testsuite/lib/libffi.exp
346
394
  - ext/ffi_c/libffi/testsuite/lib/target-libpath.exp
347
395
  - ext/ffi_c/libffi/testsuite/lib/wrapper.exp
@@ -354,7 +402,12 @@ files:
354
402
  - ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c
355
403
  - ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c
356
404
  - ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c
405
+ - ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c
357
406
  - ext/ffi_c/libffi/testsuite/libffi.call/call.exp
407
+ - ext/ffi_c/libffi/testsuite/libffi.call/callback.c
408
+ - ext/ffi_c/libffi/testsuite/libffi.call/callback2.c
409
+ - ext/ffi_c/libffi/testsuite/libffi.call/callback3.c
410
+ - ext/ffi_c/libffi/testsuite/libffi.call/callback4.c
358
411
  - ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c
359
412
  - ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h
360
413
  - ext/ffi_c/libffi/testsuite/libffi.call/float.c
@@ -371,7 +424,7 @@ files:
371
424
  - ext/ffi_c/libffi/testsuite/libffi.call/offsets.c
372
425
  - ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c
373
426
  - ext/ffi_c/libffi/testsuite/libffi.call/promotion.c
374
- - ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c
427
+ - ext/ffi_c/libffi/testsuite/libffi.call/pyobjc_tc.c
375
428
  - ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c
376
429
  - ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c
377
430
  - ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c
@@ -386,6 +439,7 @@ files:
386
439
  - ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c
387
440
  - ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c
388
441
  - ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c
442
+ - ext/ffi_c/libffi/testsuite/libffi.call/s55.c
389
443
  - ext/ffi_c/libffi/testsuite/libffi.call/strlen.c
390
444
  - ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c
391
445
  - ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c
@@ -400,8 +454,19 @@ files:
400
454
  - ext/ffi_c/libffi/testsuite/libffi.call/struct7.c
401
455
  - ext/ffi_c/libffi/testsuite/libffi.call/struct8.c
402
456
  - ext/ffi_c/libffi/testsuite/libffi.call/struct9.c
457
+ - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c
458
+ - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c
459
+ - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c
460
+ - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c
461
+ - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c
462
+ - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c
463
+ - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c
464
+ - ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c
465
+ - ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c
403
466
  - ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c
404
467
  - ext/ffi_c/libffi/testsuite/libffi.call/va_1.c
468
+ - ext/ffi_c/libffi/testsuite/libffi.call/va_2.c
469
+ - ext/ffi_c/libffi/testsuite/libffi.call/va_3.c
405
470
  - ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c
406
471
  - ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c
407
472
  - ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c
@@ -473,13 +538,11 @@ files:
473
538
  - ext/ffi_c/libffi/testsuite/libffi.closures/cls_sshort.c
474
539
  - ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c
475
540
  - ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar.c
476
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar_va.c
477
541
  - ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint.c
478
542
  - ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c
479
543
  - ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c
480
544
  - ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulonglong.c
481
545
  - ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort.c
482
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort_va.c
483
546
  - ext/ffi_c/libffi/testsuite/libffi.closures/err_bad_abi.c
484
547
  - ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h
485
548
  - ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c
@@ -487,6 +550,8 @@ files:
487
550
  - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct1.c
488
551
  - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct10.c
489
552
  - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c
553
+ - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c
554
+ - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c
490
555
  - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct2.c
491
556
  - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct3.c
492
557
  - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct4.c
@@ -496,6 +561,9 @@ files:
496
561
  - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct8.c
497
562
  - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct9.c
498
563
  - ext/ffi_c/libffi/testsuite/libffi.closures/problem1.c
564
+ - ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c
565
+ - ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c
566
+ - ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c
499
567
  - ext/ffi_c/libffi/testsuite/libffi.closures/stret_large.c
500
568
  - ext/ffi_c/libffi/testsuite/libffi.closures/stret_large2.c
501
569
  - ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium.c
@@ -558,12 +626,16 @@ files:
558
626
  - lib/ffi/autopointer.rb
559
627
  - lib/ffi/buffer.rb
560
628
  - lib/ffi/callback.rb
629
+ - lib/ffi/compat.rb
561
630
  - lib/ffi/data_converter.rb
631
+ - lib/ffi/dynamic_library.rb
562
632
  - lib/ffi/enum.rb
563
633
  - lib/ffi/errno.rb
564
634
  - lib/ffi/ffi.rb
635
+ - lib/ffi/function.rb
565
636
  - lib/ffi/io.rb
566
637
  - lib/ffi/library.rb
638
+ - lib/ffi/library_path.rb
567
639
  - lib/ffi/managedstruct.rb
568
640
  - lib/ffi/memorypointer.rb
569
641
  - lib/ffi/platform.rb
@@ -572,9 +644,12 @@ files:
572
644
  - lib/ffi/platform/aarch64-freebsd12/types.conf
573
645
  - lib/ffi/platform/aarch64-linux/types.conf
574
646
  - lib/ffi/platform/aarch64-openbsd/types.conf
647
+ - lib/ffi/platform/aarch64-windows/types.conf
575
648
  - lib/ffi/platform/arm-freebsd/types.conf
576
649
  - lib/ffi/platform/arm-freebsd12/types.conf
577
650
  - lib/ffi/platform/arm-linux/types.conf
651
+ - lib/ffi/platform/hppa1.1-linux/types.conf
652
+ - lib/ffi/platform/hppa2.0-linux/types.conf
578
653
  - lib/ffi/platform/i386-cygwin/types.conf
579
654
  - lib/ffi/platform/i386-darwin/types.conf
580
655
  - lib/ffi/platform/i386-freebsd/types.conf
@@ -586,6 +661,7 @@ files:
586
661
  - lib/ffi/platform/i386-solaris/types.conf
587
662
  - lib/ffi/platform/i386-windows/types.conf
588
663
  - lib/ffi/platform/ia64-linux/types.conf
664
+ - lib/ffi/platform/loongarch64-linux/types.conf
589
665
  - lib/ffi/platform/mips-linux/types.conf
590
666
  - lib/ffi/platform/mips64-linux/types.conf
591
667
  - lib/ffi/platform/mips64el-linux/types.conf
@@ -605,9 +681,10 @@ files:
605
681
  - lib/ffi/platform/s390x-linux/types.conf
606
682
  - lib/ffi/platform/sparc-linux/types.conf
607
683
  - lib/ffi/platform/sparc-solaris/types.conf
608
- - lib/ffi/platform/sparc64-linux/types.conf
684
+ - lib/ffi/platform/sparcv9-linux/types.conf
609
685
  - lib/ffi/platform/sparcv9-openbsd/types.conf
610
686
  - lib/ffi/platform/sparcv9-solaris/types.conf
687
+ - lib/ffi/platform/sw_64-linux/types.conf
611
688
  - lib/ffi/platform/x86_64-cygwin/types.conf
612
689
  - lib/ffi/platform/x86_64-darwin/types.conf
613
690
  - lib/ffi/platform/x86_64-dragonflybsd/types.conf
@@ -639,9 +716,28 @@ files:
639
716
  - samples/getpid.rb
640
717
  - samples/gettimeofday.rb
641
718
  - samples/hello.rb
719
+ - samples/hello_ractor.rb
642
720
  - samples/inotify.rb
643
721
  - samples/pty.rb
644
722
  - samples/qsort.rb
723
+ - samples/qsort_ractor.rb
724
+ - sig/ffi.rbs
725
+ - sig/ffi/abstract_memory.rbs
726
+ - sig/ffi/auto_pointer.rbs
727
+ - sig/ffi/buffer.rbs
728
+ - sig/ffi/data_converter.rbs
729
+ - sig/ffi/dynamic_library.rbs
730
+ - sig/ffi/enum.rbs
731
+ - sig/ffi/function.rbs
732
+ - sig/ffi/library.rbs
733
+ - sig/ffi/native_type.rbs
734
+ - sig/ffi/pointer.rbs
735
+ - sig/ffi/struct.rbs
736
+ - sig/ffi/struct_by_reference.rbs
737
+ - sig/ffi/struct_by_value.rbs
738
+ - sig/ffi/struct_layout.rbs
739
+ - sig/ffi/struct_layout_builder.rbs
740
+ - sig/ffi/type.rbs
645
741
  homepage: https://github.com/ffi/ffi/wiki
646
742
  licenses:
647
743
  - BSD-3-Clause
@@ -652,7 +748,6 @@ metadata:
652
748
  wiki_uri: https://github.com/ffi/ffi/wiki
653
749
  source_code_uri: https://github.com/ffi/ffi/
654
750
  mailing_list_uri: http://groups.google.com/group/ruby-ffi
655
- post_install_message:
656
751
  rdoc_options:
657
752
  - "--exclude=ext/ffi_c/.*\\.o$"
658
753
  - "--exclude=ffi_c\\.(bundle|so)$"
@@ -662,15 +757,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
662
757
  requirements:
663
758
  - - ">="
664
759
  - !ruby/object:Gem::Version
665
- version: '2.3'
760
+ version: '2.5'
666
761
  required_rubygems_version: !ruby/object:Gem::Requirement
667
762
  requirements:
668
763
  - - ">="
669
764
  - !ruby/object:Gem::Version
670
765
  version: '0'
671
766
  requirements: []
672
- rubygems_version: 3.3.4
673
- signing_key:
767
+ rubygems_version: 3.6.0.dev
674
768
  specification_version: 4
675
769
  summary: Ruby FFI
676
770
  test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1 @@
1
+ �'44�Y�f���}q憻-@v2f�v"�7ZG��^9�Sӯ�r��J�Qw�j4�+5�������#�}�i�����%��:�}��%���8g�d:kv���7�Sg=]?�9״:{4����9��xԌ4�F��$�d�>�˱���ۀ
2
  ��h~��G-QF�F��y���ׅ��� l�ZU ~5el�n����|뻆_c�௓2�u���R�f�Q��SE>5���X w��˰���xM�Z//�ޑ�S�`�|�������<g$/rb�U�dzY���i���^�¼�hz;�hj��p#���Mc�V��aJ���Թ��_ϭ��7 h�Ν9�����I���݂����� Ȅ�f���?Γ��
@@ -1,14 +0,0 @@
1
- #!/bin/bash
2
-
3
- cd /opt
4
-
5
- echo $PATH
6
- export PATH=/usr/local/bin:$PATH
7
- echo $PATH
8
-
9
- ./configure --host=${HOST} || cat */config.log
10
- make
11
- make dist
12
- make check RUNTESTFLAGS="-a $RUNTESTFLAGS" || true
13
-
14
-
@@ -1,142 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -x
4
-
5
- # This is a policy bound API key. It can only be used with
6
- # https://github.com/libffi/rlgl-policy.git.
7
- RLGL_KEY=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI
8
-
9
- if [ -z ${QEMU_CPU+x} ]; then
10
- export SET_QEMU_CPU=
11
- else
12
- export SET_QEMU_CPU="-e QEMU_CPU=${QEMU_CPU}"
13
- fi
14
-
15
- export DOCKER=docker
16
-
17
- function build_cfarm()
18
- {
19
- curl -u ${CFARM_AUTH} https://cfarm-test-libffi-libffi.apps.home.labdroid.net/test?host=${HOST}\&commit=${TRAVIS_COMMIT} | tee build.log
20
- echo :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
21
- echo $(tail build.log | grep '^==LOGFILE==')
22
- echo $(tail build.log | grep '^==LOGFILE==' | cut -b13-)
23
- echo :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
24
- curl -u ${CFARM_AUTH} "$(tail build.log | grep '^==LOGFILE==' | cut -b13-)" > libffi.log
25
-
26
- ./rlgl l --key=${RLGL_KEY} https://rl.gl
27
- ID=$(./rlgl start)
28
- ./rlgl e --id=$ID --policy=https://github.com/libffi/rlgl-policy.git libffi.log
29
- exit $?
30
- }
31
-
32
- function build_linux()
33
- {
34
- ./autogen.sh
35
- ./configure ${HOST+--host=$HOST} ${CONFIGURE_OPTIONS} || cat */config.log
36
- make
37
- make dist
38
- make check RUNTESTFLAGS="-a $RUNTESTFLAGS"
39
-
40
- ./rlgl l --key=${RLGL_KEY} https://rl.gl
41
- ID=$(./rlgl start)
42
- ./rlgl e --id=$ID --policy=https://github.com/libffi/rlgl-policy.git */testsuite/libffi.log
43
- exit $?
44
- }
45
-
46
- function build_foreign_linux()
47
- {
48
- ${DOCKER} run --rm -t -i -v $(pwd):/opt ${SET_QEMU_CPU} -e LIBFFI_TEST_OPTIMIZATION="${LIBFFI_TEST_OPTIMIZATION}" $2 bash -c /opt/.travis/build-in-container.sh
49
-
50
- ./rlgl l --key=${RLGL_KEY} https://rl.gl
51
- ID=$(./rlgl start)
52
- ./rlgl e --id=$ID --policy=https://github.com/libffi/rlgl-policy.git */testsuite/libffi.log
53
- exit $?
54
- }
55
-
56
- function build_cross_linux()
57
- {
58
- ${DOCKER} run --rm -t -i -v $(pwd):/opt ${SET_QEMU_CPU} -e HOST="${HOST}" -e CC="${HOST}-gcc-8 ${GCC_OPTIONS}" -e CXX="${HOST}-g++-8 ${GCC_OPTIONS}" -e LIBFFI_TEST_OPTIMIZATION="${LIBFFI_TEST_OPTIMIZATION}" moxielogic/cross-ci-build-container:latest bash -c /opt/.travis/build-in-container.sh
59
-
60
- ./rlgl l --key=${RLGL_KEY} https://rl.gl
61
- ID=$(./rlgl start)
62
- ./rlgl e --id=$ID --policy=https://github.com/libffi/rlgl-policy.git */testsuite/libffi.log
63
- exit $?
64
- }
65
-
66
- function build_cross()
67
- {
68
- ${DOCKER} pull quay.io/moxielogic/libffi-ci-${HOST}
69
- ${DOCKER} run --rm -t -i -v $(pwd):/opt -e HOST="${HOST}" -e CC="${HOST}-gcc ${GCC_OPTIONS}" -e CXX="${HOST}-g++ ${GCC_OPTIONS}" -e TRAVIS_BUILD_DIR=/opt -e DEJAGNU="${DEJAGNU}" -e RUNTESTFLAGS="${RUNTESTFLAGS}" -e LIBFFI_TEST_OPTIMIZATION="${LIBFFI_TEST_OPTIMIZATION}" quay.io/moxielogic/libffi-ci-${HOST} bash -c /opt/.travis/build-cross-in-container.sh
70
-
71
- ./rlgl l --key=${RLGL_KEY} https://rl.gl
72
- ID=$(./rlgl start)
73
- ./rlgl e --id=$ID --policy=https://github.com/libffi/rlgl-policy.git */testsuite/libffi.log
74
- exit $?
75
- }
76
-
77
- function build_ios()
78
- {
79
- which python
80
- # export PYTHON_BIN=/usr/local/bin/python
81
- ./generate-darwin-source-and-headers.py --only-ios
82
- xcodebuild -showsdks
83
- xcodebuild -project libffi.xcodeproj -target "libffi-iOS" -configuration Release -sdk iphoneos11.4
84
- exit $?
85
- }
86
-
87
- function build_macosx()
88
- {
89
- which python
90
- # export PYTHON_BIN=/usr/local/bin/python
91
- ./generate-darwin-source-and-headers.py --only-osx
92
- xcodebuild -showsdks
93
- xcodebuild -project libffi.xcodeproj -target "libffi-Mac" -configuration Release -sdk macosx10.13
94
- echo "Finished build"
95
- exit $?
96
- }
97
-
98
- case "$HOST" in
99
- arm-apple-darwin*)
100
- ./autogen.sh
101
- build_ios
102
- ;;
103
- x86_64-apple-darwin*)
104
- ./autogen.sh
105
- build_macosx
106
- ;;
107
- arm32v7-linux-gnu)
108
- ./autogen.sh
109
- build_foreign_linux arm moxielogic/arm32v7-ci-build-container:latest
110
- ;;
111
- mips64el-linux-gnu | sparc64-linux-gnu)
112
- build_cfarm
113
- ;;
114
- bfin-elf )
115
- ./autogen.sh
116
- GCC_OPTIONS=-msim build_cross
117
- ;;
118
- m32r-elf )
119
- ./autogen.sh
120
- build_cross
121
- ;;
122
- or1k-elf )
123
- ./autogen.sh
124
- build_cross
125
- ;;
126
- powerpc-eabisim )
127
- ./autogen.sh
128
- build_cross
129
- ;;
130
- m68k-linux-gnu )
131
- ./autogen.sh
132
- GCC_OPTIONS=-mcpu=547x build_cross_linux
133
- ;;
134
- alpha-linux-gnu | sh4-linux-gnu )
135
- ./autogen.sh
136
- build_cross_linux
137
- ;;
138
- *)
139
- ./autogen.sh
140
- build_linux
141
- ;;
142
- esac
@@ -1,83 +0,0 @@
1
- ---
2
- sudo: required
3
-
4
- language: cpp
5
-
6
- # For qemu-powered targets, get the list of supported processors from
7
- # travis by setting QEMU_CPU=help, then set -mcpu= for the compilers
8
- # accordingly.
9
-
10
- matrix:
11
- include:
12
- - os: linux
13
- env: HOST=powerpc-eabisim RUNTESTFLAGS="--target_board powerpc-eabisim" DEJAGNU="/opt/.travis/site.exp"
14
- - os: linux
15
- env: HOST=or1k-elf RUNTESTFLAGS="--target_board or1k-sim" DEJAGNU="/opt/.travis/site.exp"
16
- - os: linux
17
- env: HOST=m32r-elf RUNTESTFLAGS="--target_board m32r-sim" DEJAGNU="/opt/.travis/site.exp"
18
- - os: linux
19
- env: HOST=bfin-elf RUNTESTFLAGS="--target_board bfin-sim" DEJAGNU="/opt/.travis/site.exp"
20
- # This configuration is still using the native x86 toolchain?
21
- # - os: osx
22
- # env: HOST=aarch64-apple-darwin13
23
- - os: osx
24
- env: HOST=x86_64-apple-darwin10
25
- - os: linux
26
- env: HOST=x86_64-w64-mingw32 MEVAL='export CC="x86_64-w64-mingw32-gcc" && CXX="x86_64-w64-mingw32-g++" RUNTESTFLAGS="--target_board wine-sim" DEJAGNU="$TRAVIS_BUILD_DIR/.travis/site.exp" CONFIGURE_OPTIONS=--disable-shared LIBFFI_TEST_OPTIMIZATION="-O2"
27
- - os: linux
28
- env: HOST=sh4-linux-gnu CONFIGURE_OPTIONS=--disable-shared QEMU_LD_PREFIX=/usr/sh4-linux-gnu
29
- - os: linux
30
- env: HOST=alpha-linux-gnu CONFIGURE_OPTIONS=--disable-shared QEMU_LD_PREFIX=/usr/alpha-linux-gnu
31
- - os: linux
32
- env: HOST=m68k-linux-gnu MEVAL='export CC="m68k-linux-gnu-gcc-8 -mcpu=547x" && CXX="m68k-linux-gnu-g++-8 -mcpu=547x"' CONFIGURE_OPTIONS=--disable-shared QEMU_LD_PREFIX=/usr/m68k-linux-gnu QEMU_CPU=cfv4e
33
- - os: linux
34
- arch: s390x
35
- env: HOST=s390x-linux-gnu
36
- - os: linux
37
- arch: ppc64le
38
- env: HOST=ppc64le-linux-gnu
39
- - os: linux
40
- arch: arm64
41
- env: HOST=aarch64-linux-gnu
42
- - os: linux
43
- arch: arm64
44
- env: HOST=aarch64-linux-gnu
45
- compiler: clang
46
- - os: linux
47
- env: HOST=arm32v7-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O0"
48
- - os: linux
49
- env: HOST=arm32v7-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O2"
50
- - os: linux
51
- env: HOST=arm32v7-linux-gnu LIBFFI_TEST_OPTIMIZATION="-O2 -fomit-frame-pointer"
52
- # The sparc64 linux system in the GCC compile farm is non-responsive.
53
- # - os: linux
54
- # env: HOST=sparc64-linux-gnu
55
- # The mips64 linux system in the GCC compile farm is not allowing logins
56
- # - os: linux
57
- # env: HOST=mips64el-linux-gnu
58
- - os: linux
59
- compiler: gcc
60
- env: HOST=i386-pc-linux-gnu MEVAL='export CC="$CC -m32" && CXX="$CXX -m32"'
61
- - os: linux
62
- compiler: gcc
63
- - os: linux
64
- compiler: gcc
65
- env: CONFIGURE_OPTIONS=--disable-shared
66
- - os: linux
67
- compiler: clang
68
- - os: linux
69
- compiler: clang
70
- env: CONFIGURE_OPTIONS=--disable-shared
71
- - os: linux
72
- env: HOST=moxie-elf MEVAL='export PATH=/opt/moxielogic/bin:$PATH && CC=moxie-elf-gcc && CXX=moxie-elf-g++' LDFLAGS=-Tsim.ld RUNTESTFLAGS="--target_board moxie-sim" DEJAGNU="$TRAVIS_BUILD_DIR/.travis/site.exp"
73
-
74
- before_install:
75
- - if test x"$MEVAL" != x; then eval ${MEVAL}; fi
76
-
77
- install:
78
- - travis_wait 30 ./.travis/install.sh
79
-
80
- script:
81
- - if ! test x"$MEVAL" = x; then eval ${MEVAL}; fi
82
- - travis_wait 115 sleep infinity &
83
- - ./.travis/build.sh
@@ -1,44 +0,0 @@
1
- /* Area: closure_call
2
- Purpose: Test anonymous unsigned char argument.
3
- Limitations: none.
4
- PR: none.
5
- Originator: ARM Ltd. */
6
-
7
- /* { dg-do run } */
8
- #include "ffitest.h"
9
-
10
- typedef unsigned char T;
11
-
12
- static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
13
- void* userdata __UNUSED__)
14
- {
15
- *(ffi_arg *)resp = *(T *)args[0];
16
-
17
- printf("%d: %d %d\n", (int)(*(ffi_arg *)resp), *(T *)args[0], *(T *)args[1]);
18
- }
19
-
20
- typedef T (*cls_ret_T)(T, ...);
21
-
22
- int main (void)
23
- {
24
- ffi_cif cif;
25
- void *code;
26
- ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
27
- ffi_type * cl_arg_types[3];
28
- T res;
29
-
30
- cl_arg_types[0] = &ffi_type_uchar;
31
- cl_arg_types[1] = &ffi_type_uchar;
32
- cl_arg_types[2] = NULL;
33
-
34
- /* Initialize the cif */
35
- CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2,
36
- &ffi_type_uchar, cl_arg_types) == FFI_OK);
37
-
38
- CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK);
39
- res = ((((cls_ret_T)code)(67, 4)));
40
- /* { dg-output "67: 67 4" } */
41
- printf("res: %d\n", res);
42
- /* { dg-output "\nres: 67" } */
43
- exit(0);
44
- }