ffi 1.17.3 → 1.17.4

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 (277) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +10 -1
  4. data/ext/ffi_c/StructLayout.c +129 -12
  5. data/ffi.gemspec +3 -1
  6. data/lib/ffi/version.rb +1 -1
  7. data.tar.gz.sig +0 -0
  8. metadata +1 -269
  9. metadata.gz.sig +0 -0
  10. data/ext/ffi_c/libffi/.allow-ai-service +0 -0
  11. data/ext/ffi_c/libffi/.ci/Containerfile.ppc64le +0 -12
  12. data/ext/ffi_c/libffi/.ci/ar-lib +0 -270
  13. data/ext/ffi_c/libffi/.ci/bfin-sim.exp +0 -58
  14. data/ext/ffi_c/libffi/.ci/build-cross-in-container.sh +0 -18
  15. data/ext/ffi_c/libffi/.ci/build-in-container.sh +0 -10
  16. data/ext/ffi_c/libffi/.ci/build.sh +0 -129
  17. data/ext/ffi_c/libffi/.ci/compile +0 -351
  18. data/ext/ffi_c/libffi/.ci/install.sh +0 -74
  19. data/ext/ffi_c/libffi/.ci/m32r-sim.exp +0 -58
  20. data/ext/ffi_c/libffi/.ci/moxie-sim.exp +0 -60
  21. data/ext/ffi_c/libffi/.ci/msvs-detect +0 -1103
  22. data/ext/ffi_c/libffi/.ci/or1k-sim.exp +0 -58
  23. data/ext/ffi_c/libffi/.ci/powerpc-eabisim.exp +0 -58
  24. data/ext/ffi_c/libffi/.ci/site.exp +0 -35
  25. data/ext/ffi_c/libffi/.ci/unix-noexec.exp +0 -7
  26. data/ext/ffi_c/libffi/.ci/wine-sim.exp +0 -55
  27. data/ext/ffi_c/libffi/.gail-labels +0 -44
  28. data/ext/ffi_c/libffi/.gitattributes +0 -4
  29. data/ext/ffi_c/libffi/.github/issue_template.md +0 -10
  30. data/ext/ffi_c/libffi/.github/workflows/build.yml +0 -358
  31. data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +0 -215
  32. data/ext/ffi_c/libffi/.github/workflows/label-new-issue.yaml +0 -15
  33. data/ext/ffi_c/libffi/.github/workflows/tarball.yml +0 -55
  34. data/ext/ffi_c/libffi/.gitignore +0 -46
  35. data/ext/ffi_c/libffi/testsuite/Makefile.am +0 -89
  36. data/ext/ffi_c/libffi/testsuite/config/default.exp +0 -1
  37. data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +0 -34
  38. data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +0 -46
  39. data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +0 -86
  40. data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +0 -23
  41. data/ext/ffi_c/libffi/testsuite/emscripten/test.html +0 -7
  42. data/ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py +0 -51
  43. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +0 -695
  44. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +0 -283
  45. data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +0 -45
  46. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +0 -28
  47. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +0 -78
  48. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +0 -50
  49. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +0 -63
  50. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +0 -1746
  51. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +0 -2885
  52. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +0 -747
  53. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +0 -46
  54. data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +0 -46
  55. data/ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c +0 -41
  56. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +0 -54
  57. data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +0 -99
  58. data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +0 -108
  59. data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +0 -114
  60. data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +0 -119
  61. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +0 -26
  62. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +0 -166
  63. data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +0 -59
  64. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +0 -60
  65. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +0 -61
  66. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +0 -74
  67. data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +0 -62
  68. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +0 -110
  69. data/ext/ffi_c/libffi/testsuite/libffi.call/longjmp.c +0 -60
  70. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +0 -59
  71. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +0 -57
  72. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +0 -70
  73. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +0 -78
  74. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -52
  75. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +0 -46
  76. data/ext/ffi_c/libffi/testsuite/libffi.call/overread.c +0 -54
  77. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +0 -127
  78. data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +0 -59
  79. data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc_tc.c +0 -114
  80. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +0 -36
  81. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +0 -43
  82. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +0 -42
  83. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +0 -35
  84. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +0 -36
  85. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +0 -49
  86. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +0 -42
  87. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +0 -34
  88. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +0 -41
  89. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +0 -48
  90. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +0 -36
  91. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +0 -42
  92. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +0 -38
  93. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +0 -42
  94. data/ext/ffi_c/libffi/testsuite/libffi.call/s55.c +0 -60
  95. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +0 -43
  96. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +0 -49
  97. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +0 -49
  98. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +0 -55
  99. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +0 -67
  100. data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +0 -57
  101. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +0 -67
  102. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +0 -60
  103. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +0 -64
  104. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +0 -66
  105. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +0 -64
  106. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +0 -74
  107. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +0 -81
  108. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +0 -68
  109. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c +0 -63
  110. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c +0 -65
  111. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c +0 -65
  112. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c +0 -67
  113. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c +0 -67
  114. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c +0 -93
  115. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c +0 -61
  116. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_int_float.c +0 -88
  117. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c +0 -63
  118. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c +0 -90
  119. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +0 -61
  120. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +0 -78
  121. data/ext/ffi_c/libffi/testsuite/libffi.call/va_2.c +0 -220
  122. data/ext/ffi_c/libffi/testsuite/libffi.call/va_3.c +0 -154
  123. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +0 -134
  124. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +0 -135
  125. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +0 -141
  126. data/ext/ffi_c/libffi/testsuite/libffi.call/x32.c +0 -31
  127. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp +0 -67
  128. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn0.c +0 -90
  129. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn1.c +0 -83
  130. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn2.c +0 -83
  131. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn3.c +0 -102
  132. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn4.c +0 -91
  133. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn5.c +0 -94
  134. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn6.c +0 -92
  135. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_loc_fn0.c +0 -96
  136. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_simple.c +0 -61
  137. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_12byte.c +0 -112
  138. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_16byte.c +0 -117
  139. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_18byte.c +0 -120
  140. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_19byte.c +0 -131
  141. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_1_1byte.c +0 -93
  142. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte.c +0 -109
  143. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte1.c +0 -113
  144. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_24byte.c +0 -145
  145. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_2byte.c +0 -103
  146. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3_1byte.c +0 -114
  147. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte1.c +0 -103
  148. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte2.c +0 -103
  149. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +0 -113
  150. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4_1byte.c +0 -120
  151. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4byte.c +0 -103
  152. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5_1_byte.c +0 -137
  153. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5byte.c +0 -116
  154. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_64byte.c +0 -148
  155. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6_1_byte.c +0 -140
  156. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6byte.c +0 -121
  157. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7_1_byte.c +0 -155
  158. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7byte.c +0 -121
  159. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_8byte.c +0 -102
  160. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte1.c +0 -103
  161. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte2.c +0 -103
  162. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_double.c +0 -111
  163. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_float.c +0 -109
  164. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble.c +0 -111
  165. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c +0 -147
  166. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c +0 -152
  167. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_pointer.c +0 -113
  168. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint16.c +0 -108
  169. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint32.c +0 -106
  170. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint64.c +0 -109
  171. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint16.c +0 -108
  172. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint32.c +0 -109
  173. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint64.c +0 -111
  174. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_dbls_struct.c +0 -68
  175. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double.c +0 -43
  176. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double_va.c +0 -69
  177. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_float.c +0 -46
  178. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble.c +0 -115
  179. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble_va.c +0 -80
  180. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_args.c +0 -70
  181. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c +0 -55
  182. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_schar.c +0 -78
  183. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshort.c +0 -79
  184. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +0 -94
  185. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_uchar.c +0 -99
  186. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushort.c +0 -78
  187. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +0 -94
  188. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer.c +0 -79
  189. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer_stack.c +0 -152
  190. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_schar.c +0 -47
  191. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sint.c +0 -44
  192. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sshort.c +0 -45
  193. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +0 -125
  194. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar.c +0 -45
  195. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint.c +0 -47
  196. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +0 -49
  197. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +0 -49
  198. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulonglong.c +0 -49
  199. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort.c +0 -46
  200. data/ext/ffi_c/libffi/testsuite/libffi.closures/err_bad_abi.c +0 -36
  201. data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +0 -1
  202. data/ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c +0 -342
  203. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct.c +0 -175
  204. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct1.c +0 -161
  205. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct10.c +0 -146
  206. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +0 -137
  207. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c +0 -86
  208. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c +0 -115
  209. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct2.c +0 -119
  210. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct3.c +0 -120
  211. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct4.c +0 -120
  212. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct5.c +0 -121
  213. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct6.c +0 -142
  214. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct7.c +0 -120
  215. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct8.c +0 -142
  216. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct9.c +0 -142
  217. data/ext/ffi_c/libffi/testsuite/libffi.closures/problem1.c +0 -90
  218. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c +0 -86
  219. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c +0 -102
  220. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c +0 -101
  221. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large.c +0 -145
  222. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large2.c +0 -148
  223. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium.c +0 -124
  224. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium2.c +0 -125
  225. data/ext/ffi_c/libffi/testsuite/libffi.closures/testclosure.c +0 -75
  226. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest.cc +0 -120
  227. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc +0 -57
  228. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +0 -91
  229. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +0 -10
  230. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +0 -10
  231. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +0 -10
  232. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +0 -42
  233. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +0 -10
  234. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +0 -10
  235. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +0 -10
  236. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +0 -71
  237. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +0 -10
  238. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +0 -10
  239. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +0 -10
  240. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +0 -80
  241. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +0 -10
  242. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +0 -16
  243. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +0 -10
  244. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp +0 -36
  245. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +0 -51
  246. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +0 -7
  247. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +0 -7
  248. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +0 -7
  249. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +0 -10
  250. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +0 -10
  251. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +0 -86
  252. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +0 -10
  253. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +0 -1
  254. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +0 -78
  255. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +0 -10
  256. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +0 -10
  257. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +0 -10
  258. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +0 -37
  259. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +0 -41
  260. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +0 -10
  261. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +0 -10
  262. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +0 -10
  263. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +0 -44
  264. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +0 -10
  265. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +0 -10
  266. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +0 -10
  267. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +0 -10
  268. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +0 -10
  269. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +0 -10
  270. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +0 -34
  271. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +0 -28
  272. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +0 -1
  273. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +0 -36
  274. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +0 -19
  275. data/ext/ffi_c/libffi/testsuite/libffi.threads/ffitest.h +0 -1
  276. data/ext/ffi_c/libffi/testsuite/libffi.threads/threads.exp +0 -50
  277. data/ext/ffi_c/libffi/testsuite/libffi.threads/tsan.c +0 -74
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dffb188bb4770cc91169621e07445e5ff78f4e900db2d766de2e8b0b9027d9b1
4
- data.tar.gz: 9b3551d1d1b44fb48b902ddfef4a62f5e145e0cc82f405a1dedb0e010b8555ed
3
+ metadata.gz: d5e14157e145e6fcd1024a5dbe0a77e6ea78df08b38cf61d95426cc5f4287c13
4
+ data.tar.gz: 6634a6296c5c34028f0e0d952ea402b0d7a5a5234f0197b80e42ef89c944eb98
5
5
  SHA512:
6
- metadata.gz: 9b6e80ec4c87f9f7daac3c23f394b03ff96afcec0237d8b6326e559aac75e505e128a7d5da5415f705f4a909093244755a74644a5ad53f94e935244bfe7871c0
7
- data.tar.gz: 78c873e8c461f2a1e01880058effd64b37730905f7fb6e13696e8b183c292532772b7ab781481477fc1aff26ec1388dfa04ef088e9a168b76a5db4f6f9e0e0c8
6
+ metadata.gz: d088e31edfa168f488881583d6a97e77e080d54374bc7b91dc91e6bdef93648cc5375451f12379e20c6cf5e26756330fd9fbfd8805c986b85ebb94687cfb6d99
7
+ data.tar.gz: 6057264da88292e8fffe1d88faa6043ffc92e36ea84ac2d07f698c5d13b5358e04a69921d9aceff56ce6d63438751177cfa5070d31a9a2ffb1fa8b36f3e0a9fc
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ 1.17.4 / 2026-03-26
2
+ -------------------
3
+
4
+ Fixed:
5
+ * Fix union by-value ABI mismatch with float and double types on ARM64 and X86_64.
6
+ See #1177 and #1178 for details.
7
+ * Exclude libffi files, which are unnecessary. #1176
8
+
9
+
1
10
  1.17.3 / 2025-12-29
2
11
  -------------------
3
12
 
@@ -18,7 +27,7 @@ Added:
18
27
  * Add missing FFI::Platform module and LastError signatures. #1169
19
28
 
20
29
  Removed:
21
- * Drop fat binary gems for Ruby-2.7
30
+ * Drop fat binary gems for Ruby < 3.0
22
31
  * Remove `FFI::TypesGenerator` from distributed gems. #1164
23
32
  * Remove libffi build dir after install, safing some install space. #1157
24
33
 
@@ -548,29 +548,141 @@ struct_layout_initialize(VALUE self, VALUE fields, VALUE size, VALUE align)
548
548
  return self;
549
549
  }
550
550
 
551
+ static const ffi_type * const *
552
+ get_int_types(void)
553
+ {
554
+ static const ffi_type *types[5];
555
+ types[0] = &ffi_type_sint8;
556
+ types[1] = &ffi_type_sint16;
557
+ types[2] = &ffi_type_sint32;
558
+ types[3] = &ffi_type_sint64;
559
+ types[4] = NULL;
560
+ return types;
561
+ }
562
+
563
+ static const ffi_type * const *
564
+ get_float_types(void)
565
+ {
566
+ static const ffi_type *types[4];
567
+ types[0] = &ffi_type_float;
568
+ types[1] = &ffi_type_double;
569
+ types[2] = &ffi_type_longdouble;
570
+ types[3] = NULL;
571
+ return types;
572
+ }
573
+
574
+ static const ffi_type *
575
+ find_type_by_alignment(const ffi_type * const *types, unsigned short alignment)
576
+ {
577
+ int i;
578
+ for (i = 0; types[i] != NULL; i++) {
579
+ if (types[i]->alignment == alignment) return types[i];
580
+ }
581
+ return NULL;
582
+ }
583
+
584
+ static bool
585
+ is_float_type(const ffi_type *type)
586
+ {
587
+ int i;
588
+ const ffi_type * const *ftypes = get_float_types();
589
+ for (i = 0; ftypes[i] != NULL; i++) {
590
+ if (type->type == ftypes[i]->type) return true;
591
+ }
592
+ return false;
593
+ }
594
+
551
595
  /*
552
- * call-seq: [](field)
553
- * @param [Symbol] field
554
- * @return [StructLayout::Field]
555
- * Get a field from the layout.
596
+ * Recursively inspect the leaf elements of an ffi_type.
597
+ *
598
+ * Returns the leaf type if all leaves are the same primitive type, or NULL
599
+ * if mixed. Sets float_only to false when any non-float leaf is encountered.
600
+ *
601
+ * Examples (float_only initially true):
602
+ * {double, double} -> &ffi_type_double, float_only = true
603
+ * {float, double} -> NULL, float_only = true
604
+ * {float, int} -> NULL, float_only = false
556
605
  */
606
+ static const ffi_type *
607
+ find_homogeneous_leaf_type(const ffi_type *type, bool *float_only)
608
+ {
609
+ const ffi_type *result = NULL;
610
+ int i;
611
+
612
+ if (type->type != FFI_TYPE_STRUCT || type->elements == NULL) {
613
+ if (!is_float_type(type)) {
614
+ *float_only = false;
615
+ }
616
+ return type;
617
+ }
618
+
619
+ for (i = 0; type->elements[i] != NULL; i++) {
620
+ const ffi_type *elem = find_homogeneous_leaf_type(type->elements[i], float_only);
621
+
622
+ if (result == NULL) {
623
+ result = elem;
624
+ } else if (elem == NULL || result != elem) {
625
+ result = NULL;
626
+ }
627
+ }
628
+
629
+ return result;
630
+ }
631
+
557
632
  static VALUE
558
633
  struct_layout_union_bang(VALUE self)
559
634
  {
560
- const ffi_type *alignment_types[] = { &ffi_type_sint8, &ffi_type_sint16, &ffi_type_sint32, &ffi_type_sint64,
561
- &ffi_type_float, &ffi_type_double, &ffi_type_longdouble, NULL };
562
635
  StructLayout* layout;
563
636
  ffi_type *t = NULL;
564
637
  int count, i;
638
+ bool float_only = true;
639
+ const ffi_type *homogeneous = NULL;
565
640
 
566
641
  TypedData_Get_Struct(self, StructLayout, &rbffi_struct_layout_data_type, layout);
567
642
 
568
- for (i = 0; alignment_types[i] != NULL; ++i) {
569
- if (alignment_types[i]->alignment == layout->align) {
570
- t = (ffi_type *) alignment_types[i];
571
- break;
572
- }
643
+ /*
644
+ * __union! replaces the real field types with a repeated filler type.
645
+ * The filler must be chosen so that libffi uses the same calling convention
646
+ * as the C compiler would for the real union.
647
+ *
648
+ * The rules vary by architecture:
649
+ *
650
+ * ARM64: A "Homogeneous Floating-point Aggregate" (HFA) is
651
+ * passed in floating-point registers (d0-d3). An HFA requires all members
652
+ * to be the *same* float type. {double, double} is an HFA; {float, double}
653
+ * is NOT. Non-HFAs use integer registers.
654
+ *
655
+ * x86_64 targets using the System V ABI (Linux/macOS/BSD, not Windows):
656
+ * an eightbyte containing only float/double fields is classified as SSE
657
+ * and passed in XMM registers, regardless of whether the float types are
658
+ * mixed. {float, double} is SSE; {int, double} is INTEGER.
659
+ *
660
+ * Strategy:
661
+ * 1. If all fields are the same float type, use that type directly.
662
+ * Correct on all platforms.
663
+ * 2. If fields are mixed float types (e.g. {float, double}):
664
+ * - On ARM64: not an HFA, use integer filler.
665
+ * - On x86_64 System V targets: still SSE class, use float filler.
666
+ * 3. Otherwise: use integer filler.
667
+ */
668
+ homogeneous = find_homogeneous_leaf_type(layout->base.ffiType, &float_only);
669
+
670
+ if (homogeneous != NULL && float_only) {
671
+ /* Case 1: all fields are the same float type. */
672
+ t = (ffi_type *) homogeneous;
673
+ }
674
+ #if defined(__x86_64__) && !defined(_WIN32)
675
+ else if (float_only) {
676
+ /* Case 2: mixed float types use float filler on SysV x86_64. */
677
+ t = (ffi_type *) find_type_by_alignment(get_float_types(), layout->align);
573
678
  }
679
+ #endif
680
+
681
+ if (t == NULL) {
682
+ /* Case 3: integer or mixed int/float — use integer filler */
683
+ t = (ffi_type *) find_type_by_alignment(get_int_types(), layout->align);
684
+ }
685
+
574
686
  if (t == NULL) {
575
687
  rb_raise(rb_eRuntimeError, "cannot create libffi union representation for alignment %d", layout->align);
576
688
  return Qnil;
@@ -588,6 +700,12 @@ struct_layout_union_bang(VALUE self)
588
700
  return self;
589
701
  }
590
702
 
703
+ /*
704
+ * call-seq: [](field)
705
+ * @param [Symbol] field
706
+ * @return [StructLayout::Field]
707
+ * Get a field from the layout.
708
+ */
591
709
  static VALUE
592
710
  struct_layout_aref(VALUE self, VALUE field)
593
711
  {
@@ -766,4 +884,3 @@ rbffi_StructLayout_Init(VALUE moduleFFI)
766
884
  rb_define_method(rbffi_StructLayoutClass, "__union!", struct_layout_union_bang, 0);
767
885
 
768
886
  }
769
-
data/ffi.gemspec CHANGED
@@ -22,7 +22,9 @@ Gem::Specification.new do |s|
22
22
  end
23
23
 
24
24
  # Add libffi git files
25
- lfs = `git --git-dir ext/ffi_c/libffi/.git ls-files -z`.split("\x0")
25
+ lfs = `git --git-dir ext/ffi_c/libffi/.git ls-files -z`.split("\x0").reject do |f|
26
+ f =~ /^(\.|testsuite)/
27
+ end
26
28
  # Add autoconf generated files of libffi
27
29
  lfs += %w[ compile configure config.guess config.sub install-sh ltmain.sh missing fficonfig.h.in ]
28
30
  # Add automake generated files of libffi
data/lib/ffi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module FFI
2
- VERSION = '1.17.3'
2
+ VERSION = '1.17.4'
3
3
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.17.3
4
+ version: 1.17.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wayne Meissner
@@ -98,31 +98,6 @@ files:
98
98
  - ext/ffi_c/libffi.mk
99
99
  - ext/ffi_c/libffi.vc.mk
100
100
  - ext/ffi_c/libffi.vc64.mk
101
- - ext/ffi_c/libffi/.allow-ai-service
102
- - ext/ffi_c/libffi/.ci/Containerfile.ppc64le
103
- - ext/ffi_c/libffi/.ci/ar-lib
104
- - ext/ffi_c/libffi/.ci/bfin-sim.exp
105
- - ext/ffi_c/libffi/.ci/build-cross-in-container.sh
106
- - ext/ffi_c/libffi/.ci/build-in-container.sh
107
- - ext/ffi_c/libffi/.ci/build.sh
108
- - ext/ffi_c/libffi/.ci/compile
109
- - ext/ffi_c/libffi/.ci/install.sh
110
- - ext/ffi_c/libffi/.ci/m32r-sim.exp
111
- - ext/ffi_c/libffi/.ci/moxie-sim.exp
112
- - ext/ffi_c/libffi/.ci/msvs-detect
113
- - ext/ffi_c/libffi/.ci/or1k-sim.exp
114
- - ext/ffi_c/libffi/.ci/powerpc-eabisim.exp
115
- - ext/ffi_c/libffi/.ci/site.exp
116
- - ext/ffi_c/libffi/.ci/unix-noexec.exp
117
- - ext/ffi_c/libffi/.ci/wine-sim.exp
118
- - ext/ffi_c/libffi/.gail-labels
119
- - ext/ffi_c/libffi/.gitattributes
120
- - ext/ffi_c/libffi/.github/issue_template.md
121
- - ext/ffi_c/libffi/.github/workflows/build.yml
122
- - ext/ffi_c/libffi/.github/workflows/emscripten.yml
123
- - ext/ffi_c/libffi/.github/workflows/label-new-issue.yaml
124
- - ext/ffi_c/libffi/.github/workflows/tarball.yml
125
- - ext/ffi_c/libffi/.gitignore
126
101
  - ext/ffi_c/libffi/ChangeLog.old
127
102
  - ext/ffi_c/libffi/LICENSE
128
103
  - ext/ffi_c/libffi/LICENSE-BUILDTOOLS
@@ -326,250 +301,7 @@ files:
326
301
  - ext/ffi_c/libffi/src/xtensa/ffitarget.h
327
302
  - ext/ffi_c/libffi/src/xtensa/sysv.S
328
303
  - ext/ffi_c/libffi/stamp-h.in
329
- - ext/ffi_c/libffi/testsuite/Makefile.am
330
304
  - ext/ffi_c/libffi/testsuite/Makefile.in
331
- - ext/ffi_c/libffi/testsuite/config/default.exp
332
- - ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh
333
- - ext/ffi_c/libffi/testsuite/emscripten/build.sh
334
- - ext/ffi_c/libffi/testsuite/emscripten/conftest.py
335
- - ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh
336
- - ext/ffi_c/libffi/testsuite/emscripten/test.html
337
- - ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py
338
- - ext/ffi_c/libffi/testsuite/lib/libffi.exp
339
- - ext/ffi_c/libffi/testsuite/lib/target-libpath.exp
340
- - ext/ffi_c/libffi/testsuite/lib/wrapper.exp
341
- - ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile
342
- - ext/ffi_c/libffi/testsuite/libffi.bhaible/README
343
- - ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h
344
- - ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp
345
- - ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c
346
- - ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c
347
- - ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c
348
- - ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c
349
- - ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c
350
- - ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c
351
- - ext/ffi_c/libffi/testsuite/libffi.call/call.exp
352
- - ext/ffi_c/libffi/testsuite/libffi.call/callback.c
353
- - ext/ffi_c/libffi/testsuite/libffi.call/callback2.c
354
- - ext/ffi_c/libffi/testsuite/libffi.call/callback3.c
355
- - ext/ffi_c/libffi/testsuite/libffi.call/callback4.c
356
- - ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c
357
- - ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h
358
- - ext/ffi_c/libffi/testsuite/libffi.call/float.c
359
- - ext/ffi_c/libffi/testsuite/libffi.call/float1.c
360
- - ext/ffi_c/libffi/testsuite/libffi.call/float2.c
361
- - ext/ffi_c/libffi/testsuite/libffi.call/float3.c
362
- - ext/ffi_c/libffi/testsuite/libffi.call/float4.c
363
- - ext/ffi_c/libffi/testsuite/libffi.call/float_va.c
364
- - ext/ffi_c/libffi/testsuite/libffi.call/longjmp.c
365
- - ext/ffi_c/libffi/testsuite/libffi.call/many.c
366
- - ext/ffi_c/libffi/testsuite/libffi.call/many2.c
367
- - ext/ffi_c/libffi/testsuite/libffi.call/many_double.c
368
- - ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c
369
- - ext/ffi_c/libffi/testsuite/libffi.call/negint.c
370
- - ext/ffi_c/libffi/testsuite/libffi.call/offsets.c
371
- - ext/ffi_c/libffi/testsuite/libffi.call/overread.c
372
- - ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c
373
- - ext/ffi_c/libffi/testsuite/libffi.call/promotion.c
374
- - ext/ffi_c/libffi/testsuite/libffi.call/pyobjc_tc.c
375
- - ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c
376
- - ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c
377
- - ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c
378
- - ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c
379
- - ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c
380
- - ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c
381
- - ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c
382
- - ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c
383
- - ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c
384
- - ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c
385
- - ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c
386
- - ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c
387
- - ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c
388
- - ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c
389
- - ext/ffi_c/libffi/testsuite/libffi.call/s55.c
390
- - ext/ffi_c/libffi/testsuite/libffi.call/strlen.c
391
- - ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c
392
- - ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c
393
- - ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c
394
- - ext/ffi_c/libffi/testsuite/libffi.call/struct1.c
395
- - ext/ffi_c/libffi/testsuite/libffi.call/struct10.c
396
- - ext/ffi_c/libffi/testsuite/libffi.call/struct2.c
397
- - ext/ffi_c/libffi/testsuite/libffi.call/struct3.c
398
- - ext/ffi_c/libffi/testsuite/libffi.call/struct4.c
399
- - ext/ffi_c/libffi/testsuite/libffi.call/struct5.c
400
- - ext/ffi_c/libffi/testsuite/libffi.call/struct6.c
401
- - ext/ffi_c/libffi/testsuite/libffi.call/struct7.c
402
- - ext/ffi_c/libffi/testsuite/libffi.call/struct8.c
403
- - ext/ffi_c/libffi/testsuite/libffi.call/struct9.c
404
- - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c
405
- - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c
406
- - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c
407
- - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c
408
- - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c
409
- - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c
410
- - ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c
411
- - ext/ffi_c/libffi/testsuite/libffi.call/struct_int_float.c
412
- - ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c
413
- - ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c
414
- - ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c
415
- - ext/ffi_c/libffi/testsuite/libffi.call/va_1.c
416
- - ext/ffi_c/libffi/testsuite/libffi.call/va_2.c
417
- - ext/ffi_c/libffi/testsuite/libffi.call/va_3.c
418
- - ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c
419
- - ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c
420
- - ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c
421
- - ext/ffi_c/libffi/testsuite/libffi.call/x32.c
422
- - ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp
423
- - ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn0.c
424
- - ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn1.c
425
- - ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn2.c
426
- - ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn3.c
427
- - ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn4.c
428
- - ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn5.c
429
- - ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn6.c
430
- - ext/ffi_c/libffi/testsuite/libffi.closures/closure_loc_fn0.c
431
- - ext/ffi_c/libffi/testsuite/libffi.closures/closure_simple.c
432
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_12byte.c
433
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_16byte.c
434
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_18byte.c
435
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_19byte.c
436
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_1_1byte.c
437
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte.c
438
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte1.c
439
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_24byte.c
440
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_2byte.c
441
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_3_1byte.c
442
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte1.c
443
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte2.c
444
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c
445
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_4_1byte.c
446
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_4byte.c
447
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_5_1_byte.c
448
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_5byte.c
449
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_64byte.c
450
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_6_1_byte.c
451
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_6byte.c
452
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_7_1_byte.c
453
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_7byte.c
454
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_8byte.c
455
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte1.c
456
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte2.c
457
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_double.c
458
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_float.c
459
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble.c
460
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c
461
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c
462
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_pointer.c
463
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint16.c
464
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint32.c
465
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint64.c
466
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint16.c
467
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint32.c
468
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint64.c
469
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_dbls_struct.c
470
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_double.c
471
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_double_va.c
472
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_float.c
473
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble.c
474
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble_va.c
475
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_args.c
476
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c
477
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_schar.c
478
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshort.c
479
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c
480
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_uchar.c
481
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushort.c
482
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c
483
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer.c
484
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer_stack.c
485
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_schar.c
486
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_sint.c
487
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_sshort.c
488
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c
489
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar.c
490
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint.c
491
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c
492
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c
493
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulonglong.c
494
- - ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort.c
495
- - ext/ffi_c/libffi/testsuite/libffi.closures/err_bad_abi.c
496
- - ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h
497
- - ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c
498
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct.c
499
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct1.c
500
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct10.c
501
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c
502
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c
503
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c
504
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct2.c
505
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct3.c
506
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct4.c
507
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct5.c
508
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct6.c
509
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct7.c
510
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct8.c
511
- - ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct9.c
512
- - ext/ffi_c/libffi/testsuite/libffi.closures/problem1.c
513
- - ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c
514
- - ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c
515
- - ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c
516
- - ext/ffi_c/libffi/testsuite/libffi.closures/stret_large.c
517
- - ext/ffi_c/libffi/testsuite/libffi.closures/stret_large2.c
518
- - ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium.c
519
- - ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium2.c
520
- - ext/ffi_c/libffi/testsuite/libffi.closures/testclosure.c
521
- - ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest.cc
522
- - ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc
523
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc
524
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c
525
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c
526
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c
527
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc
528
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c
529
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c
530
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c
531
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc
532
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c
533
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c
534
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c
535
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc
536
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c
537
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c
538
- - ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c
539
- - ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp
540
- - ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc
541
- - ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc
542
- - ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc
543
- - ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc
544
- - ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c
545
- - ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c
546
- - ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c
547
- - ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c
548
- - ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h
549
- - ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc
550
- - ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c
551
- - ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c
552
- - ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c
553
- - ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc
554
- - ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc
555
- - ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c
556
- - ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c
557
- - ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c
558
- - ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc
559
- - ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c
560
- - ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c
561
- - ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c
562
- - ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c
563
- - ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c
564
- - ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c
565
- - ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c
566
- - ext/ffi_c/libffi/testsuite/libffi.go/closure1.c
567
- - ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h
568
- - ext/ffi_c/libffi/testsuite/libffi.go/go.exp
569
- - ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h
570
- - ext/ffi_c/libffi/testsuite/libffi.threads/ffitest.h
571
- - ext/ffi_c/libffi/testsuite/libffi.threads/threads.exp
572
- - ext/ffi_c/libffi/testsuite/libffi.threads/tsan.c
573
305
  - ext/ffi_c/rbffi.h
574
306
  - ext/ffi_c/rbffi_endian.h
575
307
  - ffi.gemspec
metadata.gz.sig CHANGED
Binary file
File without changes
@@ -1,12 +0,0 @@
1
- FROM ppc64le/fedora
2
-
3
- RUN dnf install -y dejagnu automake autoconf dejagnu texinfo gcc libtool diffutils gawk
4
-
5
- # -----------------------------------------------------------------------------
6
- # Give UID 10000 a name so ‘whoami’ works during DejaGNU tests
7
- # -----------------------------------------------------------------------------
8
- RUN groupadd -g 10000 builder \
9
- && useradd -u 10000 -g 10000 -d /home/builder -s /sbin/nologin builder \
10
- && mkdir -p /home/builder \
11
- && chown 10000:10000 /home/builder
12
- USER 10000