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
@@ -1,215 +0,0 @@
1
- name: CI emscripten
2
-
3
- # Controls when the action will run.
4
- on:
5
- # Triggers the workflow on push or pull request events but only for the master branch
6
- push:
7
- branches: [ master ]
8
- pull_request:
9
- branches: [ master ]
10
-
11
- # Allows you to run this workflow manually from the Actions tab
12
- workflow_dispatch:
13
-
14
-
15
- env:
16
- PYODIDE_VERSION: 0.58.4
17
- # PYTHON_VERSION and EMSCRIPTEN_VERSION are determined by PYODIDE_VERSION.
18
- # The appropriate versions can be found in the Pyodide repodata.json
19
- # "info" field, or in Makefile.envs:
20
- # https://github.com/pyodide/pyodide/blob/main/Makefile.envs#L2
21
- PYTHON_VERSION: 3.12.7
22
- EMSCRIPTEN_VERSION: 4.0.10
23
- EM_CACHE_FOLDER: emsdk-cache
24
-
25
- jobs:
26
- setup-emsdk-cache:
27
- runs-on: ubuntu-22.04
28
- steps:
29
- - name: Setup cache
30
- uses: actions/cache@v4
31
- with:
32
- path: ${{ env.EM_CACHE_FOLDER }}
33
- key: ${{ env.EMSCRIPTEN_VERSION }}
34
-
35
- - name: Setup emsdk
36
- uses: mymindstorm/setup-emsdk@v14
37
- with:
38
- version: ${{ env.EMSCRIPTEN_VERSION }}
39
- actions-cache-folder: ${{ env.EM_CACHE_FOLDER }}
40
-
41
- test-dejagnu:
42
- strategy:
43
- matrix:
44
- target:
45
- - name: wasm32
46
- host: wasm32
47
- configureflags:
48
- testflags:
49
- - name: wasm64
50
- host: wasm64
51
- configureflags:
52
- testflags: -sMEMORY64=1
53
- - name: wasm64-2
54
- host: wasm64
55
- configureflags: WASM64_MEMORY64=2
56
- testflags: -sMEMORY64=2
57
- runs-on: ubuntu-24.04
58
- needs: [setup-emsdk-cache]
59
- steps:
60
- - name: Checkout
61
- uses: actions/checkout@v4
62
-
63
- - name: Setup Python
64
- uses: actions/setup-python@v5
65
- with:
66
- python-version: ${{ env.PYTHON_VERSION }}
67
-
68
- - name: Setup cache
69
- uses: actions/cache@v4
70
- with:
71
- path: ${{ env.EM_CACHE_FOLDER }}
72
- key: ${{ env.EMSCRIPTEN_VERSION }}
73
-
74
- - name: Setup emsdk
75
- uses: mymindstorm/setup-emsdk@v14
76
- with:
77
- version: ${{ env.EMSCRIPTEN_VERSION }}
78
- actions-cache-folder: ${{ env.EM_CACHE_FOLDER }}
79
-
80
- - name: Setup node.js
81
- uses: actions/setup-node@v4
82
- with:
83
- node-version: 24
84
-
85
- # This step updates emsdk's configuration file ".emscripten" to point to
86
- # nodejs installed in the previous step.
87
- - name: Configure emsdk to use the installed node.js
88
- run: sed -i -E 's|NODE_JS = .*|NODE_JS = '"'$(which node)'"'|g' ${EMSDK}/.emscripten
89
-
90
- - name: Install dependencies
91
- run: sudo apt-get install dejagnu libltdl-dev
92
-
93
- - name: Run tests
94
- run: testsuite/emscripten/node-tests.sh
95
- env:
96
- TARGET_HOST: ${{ matrix.target.host }}
97
- EXTRA_CONFIGURE_FLAGS: ${{ matrix.target.configureflags }}
98
- EXTRA_CFLAGS: ${{ matrix.target.testflags }}
99
- EXTRA_TEST_LDFLAGS: ${{ matrix.target.testflags }}
100
-
101
- - name: Install rlgl and run
102
- run: |
103
- wget -qO - https://rl.gl/cli/rlgl-linux-amd64.tgz | \
104
- tar --strip-components=2 -xvzf - ./rlgl/rlgl;
105
- ./rlgl l --key=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI https://rl.gl
106
- ./rlgl e -l project=libffi -l sha=${GITHUB_SHA:0:7} -l CC='emcc' -l host=wasm32-unknown-linux --policy=https://github.com/libffi/rlgl-policy.git testsuite/libffi.log
107
- exit $?
108
-
109
- build:
110
- strategy:
111
- matrix:
112
- target:
113
- - name: wasm32
114
- host: wasm32
115
- configureflags:
116
- testflags:
117
- - name: wasm64
118
- host: wasm64
119
- configureflags:
120
- testflags: -sMEMORY64=1
121
- - name: wasm64-2
122
- host: wasm64
123
- configureflags: WASM64_MEMORY64=2
124
- testflags: -sMEMORY64=2
125
- runs-on: ubuntu-24.04
126
- needs: [setup-emsdk-cache]
127
- steps:
128
- - name: Checkout
129
- uses: actions/checkout@v4
130
-
131
- - name: Setup cache
132
- uses: actions/cache@v4
133
- with:
134
- path: ${{ env.EM_CACHE_FOLDER }}
135
- key: ${{ env.EMSCRIPTEN_VERSION }}
136
-
137
- - name: Setup emsdk
138
- uses: mymindstorm/setup-emsdk@v12
139
- with:
140
- version: ${{ env.EMSCRIPTEN_VERSION }}
141
- actions-cache-folder: ${{ env.EM_CACHE_FOLDER }}
142
-
143
- - name: Install dependencies
144
- run: sudo apt-get install libltdl-dev
145
-
146
- - name: Build
147
- run: ./testsuite/emscripten/build.sh
148
- env:
149
- TARGET_HOST: ${{ matrix.target.host }}
150
- EXTRA_CONFIGURE_FLAGS: ${{ matrix.target.configureflags }}
151
-
152
- - name: Build tests
153
- run: |
154
- cp -r testsuite/libffi.call testsuite/libffi.call.test
155
- cp -r testsuite/libffi.closures testsuite/libffi.closures.test
156
- ./testsuite/emscripten/build-tests.sh testsuite/libffi.call.test
157
- ./testsuite/emscripten/build-tests.sh testsuite/libffi.closures.test
158
- env:
159
- EXTRA_CFLAGS: ${{ matrix.target.testflags }}
160
- EXTRA_LD_FLAGS: ${{ matrix.target.testflags }}
161
-
162
- - name: Store artifacts
163
- uses: actions/upload-artifact@v4
164
- with:
165
- name: built-tests-${{ matrix.target.name }}
166
- path: ./testsuite/libffi.c*/
167
-
168
- test:
169
- strategy:
170
- matrix:
171
- target:
172
- - name: wasm32
173
- - name: wasm64
174
- - name: wasm64-2
175
- browser: ["chrome"]
176
- # FIXME: selenium can't find gecko driver for "firefox"
177
- runs-on: ubuntu-24.04
178
- needs: [build]
179
- steps:
180
- - name: Checkout
181
- uses: actions/checkout@v4
182
-
183
- - name: Download build artifact
184
- uses: actions/download-artifact@v4
185
- with:
186
- name: built-tests-${{ matrix.target.name }}
187
- path: ./testsuite/
188
-
189
- - uses: conda-incubator/setup-miniconda@v3
190
- with:
191
- activate-environment: pyodide-env
192
- python-version: ${{ env.PYTHON_VERSION }}
193
- channels: conda-forge
194
-
195
- - name: Install test dependencies
196
- run: pip install pytest-pyodide==${{ env.PYODIDE_VERSION }}
197
-
198
- - name: Run tests
199
- run: |
200
- cd testsuite/emscripten/
201
- mkdir test-results
202
- pytest \
203
- --junitxml=test-results/junit.xml \
204
- test_libffi.py \
205
- -k ${{ matrix.browser }} \
206
- -s
207
-
208
- - name: Install rlgl and run
209
- if: success() || failure()
210
- run: |
211
- wget -qO - https://rl.gl/cli/rlgl-linux-amd64.tgz | \
212
- tar --strip-components=2 -xvzf - ./rlgl/rlgl;
213
- ./rlgl l --key=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI https://rl.gl
214
- ./rlgl e -l project=libffi -l sha=${GITHUB_SHA:0:7} -l CC='emcc' -l host=${{ matrix.browser }} --policy=https://github.com/libffi/rlgl-policy.git testsuite/emscripten/test-results/junit.xml
215
- exit $?
@@ -1,15 +0,0 @@
1
- on:
2
- issues:
3
- types: [opened]
4
-
5
- jobs:
6
- label_issue_job:
7
- permissions: write-all
8
- runs-on: ubuntu-latest
9
- name: Label new issue
10
- steps:
11
- - id: label-new-issue
12
- uses: atgreen/gail-issue-labeler-action@master
13
- with:
14
- llm_api_key: ${{ secrets.OPENAI_KEY }}
15
- github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -1,55 +0,0 @@
1
- name: snapshot-dist-tarball
2
- on:
3
- push:
4
- branches: [ master ]
5
- workflow_dispatch:
6
-
7
- jobs:
8
- dist:
9
- runs-on: ubuntu-latest
10
- steps:
11
- - name: Install tools
12
- run: |
13
- sudo apt update
14
- sudo apt install texlive texinfo autoconf automake libtool libltdl-dev
15
-
16
- - uses: actions/checkout@v4
17
- with: {fetch-depth: 0}
18
-
19
- - name: Compute snapshot VERSION
20
- id: ver
21
- run: |
22
- DESC=$(git describe --long --tags --match 'v[0-9]*' 2>/dev/null || echo "")
23
- VERSION=$(echo "$DESC" | sed -E 's/^v//; s/-([0-9]+)-g/\.\1+g/')
24
- if [[ -z "$VERSION" || "$VERSION" == "$DESC" ]]; then
25
- VERSION="3.5.1-dev.0+g$(git rev-parse --short HEAD)"
26
- fi
27
- echo "VERSION=$VERSION" >> "$GITHUB_ENV"
28
- echo "version=$VERSION" >> "$GITHUB_OUTPUT"
29
-
30
- - name: Patch configure.ac
31
- run: |
32
- sed -Ei "s/^(AC_INIT\(\[libffi\],\s*\[)[^]]+/\1${VERSION}/" configure.ac
33
- sed -Ei "s/^(FFI_VERSION_STRING=\")[^\"]+/\1${VERSION}/" configure.ac
34
-
35
- - run: autoreconf -fi
36
- - run: ./configure
37
- - run: make dist # produces libffi-${VERSION}.tar.gz
38
-
39
- - name: Wipe old snapshot assets
40
- uses: mknejp/delete-release-assets@v1
41
- with:
42
- token: ${{ secrets.GITHUB_TOKEN }}
43
- tag: snapshots # ← whatever tag your nightly release uses
44
- fail-if-no-assets: false
45
- assets: |
46
- libffi-*.tar.*
47
- libffi-*.zip
48
-
49
- - name: Create (or update) “snapshots” release
50
- uses: softprops/action-gh-release@v2
51
- with:
52
- tag_name: snapshots
53
- prerelease: true
54
- body: "Snapshot built from ${{ github.sha }}"
55
- files: libffi-${{ env.VERSION }}.tar.*
@@ -1,46 +0,0 @@
1
- .libs
2
- .deps
3
- *.o
4
- *.lo
5
- *.wasm
6
- *.js
7
- *.test
8
- *.log
9
- .dirstamp
10
- *.la
11
- Makefile
12
- !testsuite/libffi.bhaible/Makefile
13
- Makefile.in
14
- aclocal.m4
15
- compile
16
- !.ci/compile
17
- configure
18
- depcomp
19
- doc/libffi.info
20
- *~
21
- fficonfig.h.in
22
- fficonfig.h
23
- include/ffi.h
24
- include/ffitarget.h
25
- install-sh
26
- libffi.pc
27
- libtool
28
- ltmain.sh
29
- m4/libtool.m4
30
- m4/lt*.m4
31
- mdate-sh
32
- missing
33
- stamp-h1
34
- libffi*gz
35
- autom4te.cache
36
- libffi.xcodeproj/xcuserdata
37
- libffi.xcodeproj/project.xcworkspace
38
- build_*/
39
- darwin_*/
40
- src/arm/trampoline.S
41
- **/texinfo.tex
42
- target/
43
- __pycache__
44
- .docker_home
45
- emsdk
46
- test-results
@@ -1,89 +0,0 @@
1
- ## Process this file with automake to produce Makefile.in.
2
-
3
- AUTOMAKE_OPTIONS = foreign dejagnu
4
-
5
- EXTRA_DEJAGNU_SITE_CONFIG=../local.exp
6
-
7
- CLEANFILES = *.exe core* *.log *.sum
8
-
9
- EXTRA_DIST = config/default.exp emscripten/build.sh emscripten/conftest.py \
10
- emscripten/node-tests.sh emscripten/test.html emscripten/test_libffi.py \
11
- emscripten/build-tests.sh lib/libffi.exp lib/target-libpath.exp \
12
- lib/wrapper.exp libffi.bhaible/Makefile libffi.bhaible/README \
13
- libffi.bhaible/alignof.h libffi.bhaible/bhaible.exp libffi.bhaible/test-call.c \
14
- libffi.bhaible/test-callback.c libffi.bhaible/testcases.c libffi.call/align_mixed.c \
15
- libffi.call/align_stdcall.c libffi.call/bpo_38748.c libffi.call/call.exp \
16
- libffi.call/err_bad_typedef.c libffi.call/ffitest.h libffi.call/float.c \
17
- libffi.call/float1.c libffi.call/float2.c libffi.call/float3.c \
18
- libffi.call/float4.c libffi.call/float_va.c libffi.call/many.c \
19
- libffi.call/many2.c libffi.call/many_double.c libffi.call/many_mixed.c \
20
- libffi.call/negint.c libffi.call/offsets.c libffi.call/overread.c \
21
- libffi.call/pr1172638.c libffi.call/promotion.c libffi.call/pyobjc_tc.c libffi.call/return_dbl.c \
22
- libffi.call/return_dbl1.c libffi.call/return_dbl2.c libffi.call/return_fl.c \
23
- libffi.call/return_fl1.c libffi.call/return_fl2.c libffi.call/return_fl3.c \
24
- libffi.call/return_ldl.c libffi.call/return_ll.c libffi.call/return_ll1.c \
25
- libffi.call/return_sc.c libffi.call/return_sl.c libffi.call/return_uc.c \
26
- libffi.call/return_ul.c libffi.call/s55.c libffi.call/strlen.c \
27
- libffi.call/strlen2.c libffi.call/strlen3.c libffi.call/strlen4.c \
28
- libffi.call/struct1.c libffi.call/struct10.c libffi.call/struct2.c \
29
- libffi.call/struct3.c libffi.call/struct4.c libffi.call/struct5.c \
30
- libffi.call/struct6.c libffi.call/struct7.c libffi.call/struct8.c \
31
- libffi.call/struct9.c libffi.call/struct_by_value_2.c libffi.call/struct_by_value_3.c \
32
- libffi.call/struct_by_value_3f.c libffi.call/struct_by_value_4.c libffi.call/struct_by_value_4f.c \
33
- libffi.call/struct_by_value_big.c libffi.call/struct_by_value_small.c libffi.call/struct_return_2H.c \
34
- libffi.call/struct_int_float.c libffi.call/longjmp.c \
35
- libffi.call/struct_return_8H.c libffi.call/uninitialized.c libffi.call/va_1.c \
36
- libffi.call/va_2.c libffi.call/va_3.c libffi.call/va_struct1.c \
37
- libffi.call/va_struct2.c libffi.call/va_struct3.c libffi.call/callback.c \
38
- libffi.call/callback2.c libffi.call/callback3.c libffi.call/callback4.c libffi.call/x32.c \
39
- libffi.closures/closure.exp libffi.closures/closure_fn0.c libffi.closures/closure_fn1.c \
40
- libffi.closures/closure_fn2.c libffi.closures/closure_fn3.c libffi.closures/closure_fn4.c \
41
- libffi.closures/closure_fn5.c libffi.closures/closure_fn6.c libffi.closures/closure_loc_fn0.c \
42
- libffi.closures/closure_simple.c libffi.closures/cls_12byte.c libffi.closures/cls_16byte.c \
43
- libffi.closures/cls_18byte.c libffi.closures/cls_19byte.c libffi.closures/cls_1_1byte.c \
44
- libffi.closures/cls_20byte.c libffi.closures/cls_20byte1.c libffi.closures/cls_24byte.c \
45
- libffi.closures/cls_2byte.c libffi.closures/cls_3_1byte.c libffi.closures/cls_3byte1.c \
46
- libffi.closures/cls_3byte2.c libffi.closures/cls_3float.c libffi.closures/cls_4_1byte.c \
47
- libffi.closures/cls_4byte.c libffi.closures/cls_5_1_byte.c libffi.closures/cls_5byte.c \
48
- libffi.closures/cls_64byte.c libffi.closures/cls_6_1_byte.c libffi.closures/cls_6byte.c \
49
- libffi.closures/cls_7_1_byte.c libffi.closures/cls_7byte.c libffi.closures/cls_8byte.c \
50
- libffi.closures/cls_9byte1.c libffi.closures/cls_9byte2.c libffi.closures/cls_align_double.c \
51
- libffi.closures/cls_align_float.c libffi.closures/cls_align_longdouble.c libffi.closures/cls_align_longdouble_split.c \
52
- libffi.closures/cls_align_longdouble_split2.c libffi.closures/cls_align_pointer.c libffi.closures/cls_align_sint16.c \
53
- libffi.closures/cls_align_sint32.c libffi.closures/cls_align_sint64.c libffi.closures/cls_align_uint16.c \
54
- libffi.closures/cls_align_uint32.c libffi.closures/cls_align_uint64.c libffi.closures/cls_dbls_struct.c \
55
- libffi.closures/cls_double.c libffi.closures/cls_double_va.c libffi.closures/cls_float.c \
56
- libffi.closures/cls_longdouble.c libffi.closures/cls_longdouble_va.c libffi.closures/cls_many_mixed_args.c \
57
- libffi.closures/cls_many_mixed_float_double.c libffi.closures/cls_multi_schar.c libffi.closures/cls_multi_sshort.c \
58
- libffi.closures/cls_multi_sshortchar.c libffi.closures/cls_multi_uchar.c libffi.closures/cls_multi_ushort.c \
59
- libffi.closures/cls_multi_ushortchar.c libffi.closures/cls_pointer.c libffi.closures/cls_pointer_stack.c \
60
- libffi.closures/cls_schar.c libffi.closures/cls_sint.c libffi.closures/cls_sshort.c \
61
- libffi.closures/cls_struct_va1.c libffi.closures/cls_uchar.c libffi.closures/cls_uint.c \
62
- libffi.closures/cls_uint_va.c libffi.closures/cls_ulong_va.c libffi.closures/cls_ulonglong.c \
63
- libffi.closures/cls_ushort.c libffi.closures/err_bad_abi.c libffi.closures/ffitest.h \
64
- libffi.closures/huge_struct.c libffi.closures/nested_struct.c libffi.closures/nested_struct1.c \
65
- libffi.closures/nested_struct10.c libffi.closures/nested_struct11.c libffi.closures/nested_struct12.c \
66
- libffi.closures/nested_struct13.c libffi.closures/nested_struct2.c libffi.closures/nested_struct3.c \
67
- libffi.closures/nested_struct4.c libffi.closures/nested_struct5.c libffi.closures/nested_struct6.c \
68
- libffi.closures/nested_struct7.c libffi.closures/nested_struct8.c libffi.closures/nested_struct9.c \
69
- libffi.closures/problem1.c libffi.closures/single_entry_structs1.c libffi.closures/single_entry_structs2.c \
70
- libffi.closures/single_entry_structs3.c libffi.closures/stret_large.c libffi.closures/stret_large2.c \
71
- libffi.closures/stret_medium.c libffi.closures/stret_medium2.c libffi.closures/testclosure.c \
72
- libffi.closures/unwindtest.cc libffi.closures/unwindtest_ffi_call.cc libffi.complex/cls_align_complex.inc \
73
- libffi.complex/cls_align_complex_double.c libffi.complex/cls_align_complex_float.c libffi.complex/cls_align_complex_longdouble.c \
74
- libffi.complex/cls_complex.inc libffi.complex/cls_complex_double.c libffi.complex/cls_complex_float.c \
75
- libffi.complex/cls_complex_longdouble.c libffi.complex/cls_complex_struct.inc libffi.complex/cls_complex_struct_double.c \
76
- libffi.complex/cls_complex_struct_float.c libffi.complex/cls_complex_struct_longdouble.c libffi.complex/cls_complex_va.inc \
77
- libffi.complex/cls_complex_va_double.c libffi.complex/cls_complex_va_float.c libffi.complex/cls_complex_va_longdouble.c \
78
- libffi.complex/complex.exp libffi.complex/complex.inc libffi.complex/complex_defs_double.inc \
79
- libffi.complex/complex_defs_float.inc libffi.complex/complex_defs_longdouble.inc libffi.complex/complex_double.c \
80
- libffi.complex/complex_float.c libffi.complex/complex_int.c libffi.complex/complex_longdouble.c \
81
- libffi.complex/ffitest.h libffi.complex/many_complex.inc libffi.complex/many_complex_double.c \
82
- libffi.complex/many_complex_float.c libffi.complex/many_complex_longdouble.c libffi.complex/return_complex.inc \
83
- libffi.complex/return_complex1.inc libffi.complex/return_complex1_double.c libffi.complex/return_complex1_float.c \
84
- libffi.complex/return_complex1_longdouble.c libffi.complex/return_complex2.inc libffi.complex/return_complex2_double.c \
85
- libffi.complex/return_complex2_float.c libffi.complex/return_complex2_longdouble.c libffi.complex/return_complex_double.c \
86
- libffi.complex/return_complex_float.c libffi.complex/return_complex_longdouble.c libffi.go/aa-direct.c \
87
- libffi.go/closure1.c libffi.go/ffitest.h libffi.go/go.exp \
88
- libffi.go/static-chain.h Makefile.am Makefile.in \
89
- libffi.threads/ffitest.h libffi.threads/threads.exp libffi.threads/tsan.c
@@ -1 +0,0 @@
1
- load_lib "standard.exp"
@@ -1,34 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- if ! [ -x "$(command -v emcc)" ]; then
4
- echo "Error: emcc could not be found." >&2
5
- exit 1
6
- fi
7
-
8
- set -e
9
-
10
- cd "$1"
11
- shift
12
-
13
- export CFLAGS="-fPIC -O2 -I../../target/include $EXTRA_CFLAGS"
14
- export CXXFLAGS="$CFLAGS -sNO_DISABLE_EXCEPTION_CATCHING $EXTRA_CXXFLAGS"
15
- export LDFLAGS=" \
16
- -L../../target/lib/ -lffi \
17
- -sEXPORT_ALL \
18
- -sMODULARIZE \
19
- -sMAIN_MODULE \
20
- -sNO_DISABLE_EXCEPTION_CATCHING \
21
- -sWASM_BIGINT \
22
- $EXTRA_LD_FLAGS \
23
- "
24
-
25
- # Rename main functions to test__filename so we can link them together
26
- ls *c | sed 's!\(.*\)\.c!sed -i "s/main/test__\1/g" \0!g' | bash
27
-
28
- # Compile
29
- ls *.c | sed 's/\(.*\)\.c/emcc $CFLAGS -c \1.c -o \1.o /g' | bash
30
- ls *.cc | sed 's/\(.*\)\.cc/em++ $CXXFLAGS -c \1.cc -o \1.o /g' | bash
31
-
32
- # Link
33
- em++ $LDFLAGS *.o -o test.js
34
- cp ../emscripten/test.html .
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- if ! [ -x "$(command -v emcc)" ]; then
4
- echo "Error: emcc could not be found." >&2
5
- exit 1
6
- fi
7
-
8
- set -e
9
-
10
- SOURCE_DIR=$PWD
11
-
12
- # Working directories
13
- TARGET=$SOURCE_DIR/target
14
- mkdir -p "$TARGET"
15
-
16
- # Define default arguments
17
- DEBUG=false
18
-
19
- # Parse arguments
20
- while [ $# -gt 0 ]; do
21
- case $1 in
22
- --debug) DEBUG=true ;;
23
- *) echo "ERROR: Unknown parameter: $1" >&2; exit 1 ;;
24
- esac
25
- shift
26
- done
27
-
28
- # Common compiler flags
29
- export CFLAGS="-O3 -fPIC"
30
- if [ "$DEBUG" = "true" ]; then export CFLAGS+=" -DDEBUG_F"; fi
31
- export CXXFLAGS="$CFLAGS"
32
-
33
- # Build paths
34
- export CPATH="$TARGET/include"
35
- export PKG_CONFIG_PATH="$TARGET/lib/pkgconfig"
36
- export EM_PKG_CONFIG_PATH="$PKG_CONFIG_PATH"
37
-
38
- # Specific variables for cross-compilation
39
- export CHOST="${TARGET_HOST}-unknown-linux" # wasm32-unknown-emscripten
40
-
41
- autoreconf -fiv
42
- emconfigure ./configure --host=$CHOST --prefix="$TARGET" --enable-static --disable-shared --disable-dependency-tracking \
43
- --disable-builddir --disable-multi-os-directory --disable-raw-api --disable-docs ${EXTRA_CONFIGURE_FLAGS}
44
- make install
45
- cp fficonfig.h target/include/
46
- cp include/ffi_common.h target/include/
@@ -1,86 +0,0 @@
1
- from pathlib import Path
2
- from pytest import fixture
3
- from pytest_pyodide.server import spawn_web_server
4
- from pytest_pyodide import runner
5
-
6
- import logging
7
-
8
- TEST_PATH = Path(__file__).parents[1].resolve()
9
-
10
-
11
- class BaseRunner(runner._BrowserBaseRunner):
12
- def __init__(
13
- self,
14
- *args,
15
- test_dir,
16
- **kwargs,
17
- ):
18
- self.test_dir = test_dir
19
- super().__init__(
20
- *args,
21
- **kwargs,
22
- load_pyodide=False,
23
- )
24
-
25
- def prepare_driver(self):
26
- self.base_url = (
27
- f"http://{self.server_hostname}:{self.server_port}/{self.test_dir}/"
28
- )
29
- self.goto(f"{self.base_url}/test.html")
30
-
31
- def javascript_setup(self):
32
- self.run_js("globalThis.TestModule = await globalThis.Module();")
33
-
34
-
35
- class FirefoxRunner(BaseRunner, runner.SeleniumFirefoxRunner):
36
- pass
37
-
38
-
39
- class ChromeRunner(BaseRunner, runner.SeleniumChromeRunner):
40
- pass
41
-
42
-
43
- # TODO: Figure out how to get NodeRunner to work.
44
-
45
- RUNNER_DICT = {x.browser: x for x in [FirefoxRunner, ChromeRunner]}
46
-
47
-
48
- @fixture(params=list(RUNNER_DICT), scope="class")
49
- def selenium_class_scope(request, web_server_main):
50
- server_hostname, server_port, server_log = web_server_main
51
- assert request.param in RUNNER_DICT
52
-
53
- logger = logging.getLogger('selenium')
54
- logger.setLevel(logging.DEBUG)
55
-
56
- cls = RUNNER_DICT[request.param]
57
- selenium = cls(
58
- test_dir=request.cls.TEST_BUILD_DIR,
59
- server_port=server_port,
60
- server_hostname=server_hostname,
61
- server_log=server_log,
62
- )
63
- request.cls.call_number = 0
64
- try:
65
- yield selenium
66
- finally:
67
- print(selenium.logs)
68
- selenium.driver.quit()
69
-
70
-
71
- @fixture(scope="function")
72
- def selenium(selenium_class_scope, request):
73
- selenium = selenium_class_scope
74
- request.cls.call_number += 1
75
- # Refresh page every 50 calls to prevent firefox out of memory errors
76
- if request.cls.call_number % 50 == 0:
77
- selenium.driver.refresh()
78
- selenium.javascript_setup()
79
- selenium.clean_logs()
80
- yield selenium
81
-
82
-
83
- @fixture(scope="session")
84
- def web_server_main(request):
85
- with spawn_web_server(TEST_PATH) as output:
86
- yield output
@@ -1,23 +0,0 @@
1
- #!/bin/bash
2
-
3
- if ! [ -x "$(command -v emcc)" ]; then
4
- echo "Error: emcc could not be found." >&2
5
- exit 1
6
- fi
7
-
8
- # Common compiler flags
9
- export CFLAGS="-fPIC $EXTRA_CFLAGS"
10
- export CXXFLAGS="$CFLAGS -sNO_DISABLE_EXCEPTION_CATCHING $EXTRA_CXXFLAGS"
11
- export LDFLAGS="-sEXPORTED_FUNCTIONS=_main,_malloc,_free -sALLOW_TABLE_GROWTH -sASSERTIONS -sNO_DISABLE_EXCEPTION_CATCHING -sWASM_BIGINT -Wno-main"
12
-
13
- # Specific variables for cross-compilation
14
- export CHOST="${TARGET_HOST}-unknown-linux" # wasm32-unknown-emscripten
15
-
16
- autoreconf -fiv
17
- emconfigure ./configure --prefix="$(pwd)/target" --host=$CHOST --enable-static --disable-shared \
18
- --disable-builddir --disable-multi-os-directory --disable-raw-api --disable-docs ${EXTRA_CONFIGURE_FLAGS} ||
19
- (cat config.log && exit 1)
20
- make
21
-
22
- EMMAKEN_JUST_CONFIGURE=1 emmake make check \
23
- RUNTESTFLAGS="LDFLAGS_FOR_TARGET='$LDFLAGS $EXTRA_TEST_LDFLAGS'" || (cat testsuite/libffi.log && exit 1)
@@ -1,7 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <script src="test.js"></script>
5
- </head>
6
- <body></body>
7
- </html>
@@ -1,51 +0,0 @@
1
- import subprocess
2
- import pathlib
3
- import pytest
4
-
5
- TEST_PATH = pathlib.Path(__file__).parents[1].resolve()
6
-
7
- xfails = {}
8
-
9
-
10
- def libffi_tests(self, selenium, libffi_test):
11
- if libffi_test in xfails:
12
- pytest.xfail(f'known failure with code "{xfails[libffi_test]}"')
13
- res = selenium.run_js(
14
- """
15
- window.TestModule = await Module();
16
- """
17
- )
18
- selenium.run_js(
19
- f"""
20
- try {{
21
- TestModule._test__{libffi_test}();
22
- }} catch(e){{
23
- if(e.name !== "ExitStatus"){{
24
- throw e;
25
- }}
26
- if(e.status !== 0){{
27
- throw new Error(`Terminated with nonzero status code ${{e.status}}: ` + e.message);
28
- }}
29
- }}
30
- """
31
- )
32
-
33
-
34
- class TestCall:
35
- TEST_BUILD_DIR = "libffi.call.test"
36
- test_call = libffi_tests
37
-
38
-
39
- class TestClosures:
40
- TEST_BUILD_DIR = "libffi.closures.test"
41
- test_closures = libffi_tests
42
-
43
-
44
- def pytest_generate_tests(metafunc):
45
- test_build_dir = metafunc.cls.TEST_BUILD_DIR
46
- test_names = [x.stem for x in (TEST_PATH / test_build_dir).glob("*.o")]
47
- metafunc.parametrize("libffi_test", test_names)
48
-
49
-
50
- if __name__ == "__main__":
51
- subprocess.call(["build-tests.sh", "libffi.call"])