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,58 +0,0 @@
1
- # Copyright (C) 2010, 2019 Free Software Foundation, Inc.
2
- #
3
- # This file is part of DejaGnu.
4
- #
5
- # DejaGnu is free software; you can redistribute it and/or modify it
6
- # under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation; either version 2 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # DejaGnu is distributed in the hope that it will be useful, but
11
- # WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
- # General Public License for more details.
14
- #
15
- # You should have received a copy of the GNU General Public License
16
- # along with DejaGnu; if not, write to the Free Software Foundation,
17
- # Inc., 51 Franklin Street, Fifth Floor, MA 02110, USA.
18
-
19
- # This is a list of toolchains that are supported on this board.
20
- set_board_info target_install {or1k-elf}
21
-
22
- # Load the generic configuration for this board. This will define a basic set
23
- # of routines needed by the tool to communicate with the board.
24
- load_generic_config "sim"
25
-
26
- # basic-sim.exp is a basic description for the standard Cygnus simulator.
27
- load_base_board_description "basic-sim"
28
-
29
- # "or1k" is the name of the sim subdir in devo/sim.
30
- setup_sim or1k
31
-
32
- # No multilib options needed by default.
33
- process_multilib_options ""
34
-
35
- # We only support newlib on this target. We assume that all multilib
36
- # options have been specified before we get here.
37
-
38
- set_board_info compiler "[find_gcc]"
39
- set_board_info cflags "[libgloss_include_flags] [newlib_include_flags]"
40
- set_board_info ldflags "[libgloss_link_flags] [newlib_link_flags]"
41
-
42
- # Configuration settings for testsuites
43
- set_board_info noargs 1
44
- set_board_info gdb,nosignals 1
45
- set_board_info gdb,noresults 1
46
- set_board_info gdb,cannot_call_functions 1
47
- set_board_info gdb,skip_float_tests 1
48
- set_board_info gdb,can_reverse 1
49
- set_board_info gdb,use_precord 1
50
-
51
- # More time is needed
52
- set_board_info gcc,timeout 800
53
- set_board_info gdb,timeout 60
54
-
55
- # Used by a few gcc.c-torture testcases to delimit how large the stack can
56
- # be.
57
- set_board_info gcc,stack_size 5000
58
-
@@ -1,58 +0,0 @@
1
- # Copyright (C) 2010, 2019 Free Software Foundation, Inc.
2
- #
3
- # This file is part of DejaGnu.
4
- #
5
- # DejaGnu is free software; you can redistribute it and/or modify it
6
- # under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation; either version 2 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # DejaGnu is distributed in the hope that it will be useful, but
11
- # WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
- # General Public License for more details.
14
- #
15
- # You should have received a copy of the GNU General Public License
16
- # along with DejaGnu; if not, write to the Free Software Foundation,
17
- # Inc., 51 Franklin Street, Fifth Floor, MA 02110, USA.
18
-
19
- # This is a list of toolchains that are supported on this board.
20
- set_board_info target_install {powerpc-eabisim}
21
-
22
- # Load the generic configuration for this board. This will define a basic set
23
- # of routines needed by the tool to communicate with the board.
24
- load_generic_config "sim"
25
-
26
- # basic-sim.exp is a basic description for the standard Cygnus simulator.
27
- load_base_board_description "basic-sim"
28
-
29
- # "powerpc" is the name of the sim subdir in devo/sim.
30
- setup_sim powerpc
31
-
32
- # No multilib options needed by default.
33
- process_multilib_options ""
34
-
35
- # We only support newlib on this target. We assume that all multilib
36
- # options have been specified before we get here.
37
-
38
- set_board_info compiler "[find_gcc]"
39
- set_board_info cflags "[libgloss_include_flags] [newlib_include_flags]"
40
- set_board_info ldflags "[libgloss_link_flags] [newlib_link_flags]"
41
-
42
- # Configuration settings for testsuites
43
- set_board_info noargs 1
44
- set_board_info gdb,nosignals 1
45
- set_board_info gdb,noresults 1
46
- set_board_info gdb,cannot_call_functions 1
47
- set_board_info gdb,skip_float_tests 1
48
- set_board_info gdb,can_reverse 1
49
- set_board_info gdb,use_precord 1
50
-
51
- # More time is needed
52
- set_board_info gcc,timeout 800
53
- set_board_info gdb,timeout 60
54
-
55
- # Used by a few gcc.c-torture testcases to delimit how large the stack can
56
- # be.
57
- set_board_info gcc,stack_size 5000
58
-
@@ -1,35 +0,0 @@
1
- # Copyright (C) 2008, 2010, 2018, 2019, 2021 Anthony Green
2
-
3
- # Make sure we look in the right place for the board description files.
4
- if ![info exists boards_dir] {
5
- set boards_dir {}
6
- }
7
-
8
- lappend boards_dir $::env(BOARDSDIR)
9
-
10
- verbose "Global Config File: target_triplet is $target_triplet" 2
11
- global target_list
12
-
13
- case "$target_triplet" in {
14
- { "bfin-elf" } {
15
- set target_list "bfin-sim"
16
- }
17
- { "m32r-elf" } {
18
- set target_list "m32r-sim"
19
- }
20
- { "moxie-elf" } {
21
- set target_list "moxie-sim"
22
- }
23
- { "or1k-elf" } {
24
- set target_list "or1k-sim"
25
- }
26
- { "powerpc-eabisim" } {
27
- set target_list "powerpc-eabisim"
28
- }
29
- { "aarch*cygwin*" } {
30
- set target_list "unix-noexec"
31
- }
32
- { "arm*cygwin*" } {
33
- set target_list "unix-noexec"
34
- }
35
- }
@@ -1,7 +0,0 @@
1
- load_generic_config "remote"
2
-
3
- proc noexec_load { dest prog args } {
4
- return "unsupported"
5
- }
6
-
7
- set_board_info protocol "noexec"
@@ -1,55 +0,0 @@
1
- # Copyright (C) 2010, 2019 Free Software Foundation, Inc.
2
- #
3
- # This file is part of DejaGnu.
4
- #
5
- # DejaGnu is free software; you can redistribute it and/or modify it
6
- # under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation; either version 2 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # DejaGnu is distributed in the hope that it will be useful, but
11
- # WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
- # General Public License for more details.
14
- #
15
- # You should have received a copy of the GNU General Public License
16
- # along with DejaGnu; if not, write to the Free Software Foundation,
17
- # Inc., 51 Franklin Street, Fifth Floor, MA 02110, USA.
18
-
19
- # This is a list of toolchains that are supported on this board.
20
- set_board_info target_install {i686-w64-mingw32}
21
-
22
- # Load the generic configuration for this board. This will define a basic set
23
- # of routines needed by the tool to communicate with the board.
24
- load_generic_config "sim"
25
-
26
- set_board_info sim "wineconsole --backend=curses"
27
- set_board_info is_simulator 1
28
-
29
- # No multilib options needed by default.
30
- process_multilib_options ""
31
-
32
- # We only support newlib on this target. We assume that all multilib
33
- # options have been specified before we get here.
34
-
35
- set_board_info compiler "[find_gcc]"
36
- set_board_info cflags "[libgloss_include_flags] [newlib_include_flags]"
37
- set_board_info ldflags "[libgloss_link_flags] [newlib_link_flags]"
38
-
39
- # Configuration settings for testsuites
40
- set_board_info noargs 1
41
- set_board_info gdb,nosignals 1
42
- set_board_info gdb,noresults 1
43
- set_board_info gdb,cannot_call_functions 1
44
- set_board_info gdb,skip_float_tests 1
45
- set_board_info gdb,can_reverse 1
46
- set_board_info gdb,use_precord 1
47
-
48
- # More time is needed
49
- set_board_info gcc,timeout 800
50
- set_board_info gdb,timeout 60
51
-
52
- # Used by a few gcc.c-torture testcases to delimit how large the stack can
53
- # be.
54
- set_board_info gcc,stack_size 5000
55
-
@@ -1,44 +0,0 @@
1
- # This is a list of labels to be used for automatic tagging
2
- # of github issues using gail: https://github.com/atgreen/gail
3
-
4
- # Main categories
5
- BUILD-ERROR
6
- RUNTIME-ERROR
7
- FEATURE-REQUEST
8
- QUESTION
9
-
10
- # Operating systems
11
- ANDROID
12
- IOS
13
- LINUX
14
- MACOS
15
- SOLARIS
16
- WINDOWS
17
-
18
- # Processor families
19
- AARCH64
20
- ALPHA
21
- ARC
22
- ARM
23
- AVR32
24
- BLACKFIN
25
- CSKY
26
- HPPA
27
- IA-64
28
- KVX
29
- LOONGARCH64
30
- M68K
31
- M88K
32
- MICROBLAZE
33
- MIPS
34
- MOXIE
35
- OPENRISC
36
- POWERPC
37
- RISC-V
38
- S390
39
- SPARC
40
- TILE
41
- VAX
42
- WASM
43
- X86
44
- XTENSA
@@ -1,4 +0,0 @@
1
- * text=auto
2
-
3
- *.sln text eol=crlf
4
- *.vcxproj* text eol=crlf
@@ -1,10 +0,0 @@
1
- ## System Details
2
-
3
- <!--- What platform are you working with? eg. the output of config.guess -->
4
- <!--- Provide any toolchain details here. eg. compiler version -->
5
-
6
- ## Problems Description
7
-
8
- <!--- Provide a description of the problem here -->
9
- <!--- If this is a configure-time problem, attach config.log -->
10
- <!--- If this is a testsuite problem, attach the relevant log output -->
@@ -1,358 +0,0 @@
1
- name: CI
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
- # A workflow run is made up of one or more jobs that can run sequentially or in parallel
15
- jobs:
16
- build-linux:
17
- name: Linux ${{ matrix.HOST }} ${{ matrix.CONFIGURE_OPTIONS }} \
18
- ${{ matrix.MEVAL }} ${{ matrix.LIBFFI_TEST_OPTIMIZATION }}
19
-
20
- runs-on: ${{ matrix.runner }}
21
-
22
- strategy:
23
- fail-fast: false
24
- matrix:
25
- include:
26
- # ---------- existing x86-64 variants ----------
27
- - runner: ubuntu-latest
28
- HOST: x86_64-pc-linux-gnu
29
- MEVAL: 'export CC=clang CXX=clang++'
30
-
31
- - runner: ubuntu-latest
32
- HOST: i386-pc-linux-gnu
33
- MEVAL: 'export CC="gcc -m32" CXX="g++ -m32"'
34
-
35
- - runner: ubuntu-latest
36
- HOST: x86_64-pc-linux-gnu
37
- CONFIGURE_OPTIONS: "--disable-shared"
38
-
39
- - runner: ubuntu-latest
40
- HOST: x86_64-pc-linux-gnu
41
- CONFIGURE_OPTIONS: "--enable-shared"
42
-
43
- - runner: ubuntu-latest
44
- HOST: x86_64-pc-linux-gnu
45
- CONFIGURE_OPTIONS: "--disable-exec-static-tramp"
46
-
47
- # ---------- new native arm64 build ----------
48
- - runner: ubuntu-22.04-arm # or ubuntu-24.04-arm
49
- HOST: aarch64-unknown-linux-gnu
50
- MEVAL: 'export CC=clang CXX=clang++'
51
-
52
- steps:
53
- - uses: actions/checkout@v4
54
-
55
- - env:
56
- MEVAL: ${{ matrix.MEVAL }}
57
- HOST: ${{ matrix.HOST }}
58
- LDFLAGS: ${{ matrix.LDFLAGS }}
59
- RUNTESTFLAGS: ${{ matrix.RUNTESTFLAGS }}
60
- CONFIGURE_OPTIONS: ${{ matrix.CONFIGURE_OPTIONS }}
61
- QEMU_LD_PREFIX: ${{ matrix.QEMU_LD_PREFIX }}
62
- QEMU_CPU: ${{ matrix.QEMU_CPU }}
63
- run: |
64
- if test x"$MEVAL" != x; then eval ${MEVAL}; fi
65
- ./.ci/install.sh
66
- ./.ci/build.sh
67
-
68
- build-macos:
69
- name: MacOS ${{ matrix.platform }} ${{ matrix.compilers }}
70
- runs-on: ${{ matrix.platform }}
71
-
72
- strategy:
73
- fail-fast: false
74
- matrix:
75
- platform: [macos-13, macos-14, macos-15]
76
- compilers: [CC=gcc-15 CXX=g++-15, CC=clang CXX=g++-15]
77
-
78
- steps:
79
- - run: git config --global core.autocrlf input
80
- - uses: actions/checkout@v4
81
- - run: ./.ci/install.sh
82
- - run: ${{ matrix.compilers }} ./.ci/build.sh
83
-
84
- build-non-msvc:
85
- name: Windows ${{ matrix.width }}-bit ${{ matrix.compiler }}
86
- runs-on: windows-latest
87
-
88
- strategy:
89
- fail-fast: false
90
- matrix:
91
- include:
92
- # Cygwin 32-bit
93
- - host: i686-pc-cygwin
94
- width: 32
95
- arch: x86
96
- target: i686-pc-cygwin
97
- gcc_prefix: /usr/i686-pc-cygwin
98
- compiler: gcc
99
- - host: i686-pc-cygwin
100
- width: 32
101
- arch: x86
102
- target: i686-pc-cygwin
103
- gcc_prefix: /usr/i686-pc-cygwin
104
- compiler: clang
105
- # MinGW-w64 64-bit
106
- - host: x86_64-w64-mingw32
107
- width: 64
108
- arch: x64
109
- target: x86_64-w64-mingw32
110
- gcc_prefix: /usr/${{ github.workspace }}/mingw64 # unused but keeps the table homogeneous
111
- compiler: clang
112
- - host: x86_64-w64-mingw32
113
- width: 64
114
- arch: x64
115
- target: x86_64-w64-mingw32
116
- gcc_prefix: /usr/${{ github.workspace }}/mingw64 # unused but keeps the table homogeneous
117
- compiler: gcc
118
-
119
- steps:
120
- - run: git config --global core.autocrlf input
121
- - uses: actions/checkout@v4
122
-
123
- # ──────────────────────────────── Cygwin & tool-chains ────────────────────────────────
124
- - uses: egor-tensin/setup-cygwin@v4
125
- with:
126
- # gcc / g++ are needed so Clang can reuse their start-files & libraries
127
- packages: >
128
- wget make dejagnu automake autoconf libtool texinfo unzip dos2unix
129
- clang gcc-core gcc-g++
130
- cygwin32-gcc-core cygwin32-gcc-g++ cygwin32-runtime cygwin32-libgcc1
131
-
132
- # ──────────────────────────────── Common environment ────────────────────────────────
133
- - name: Export build env
134
- shell: bash
135
- run: |
136
- echo "GCC_PREFIX=${{ matrix.gcc_prefix }}" >> $GITHUB_ENV
137
- echo "CC=${{ matrix.compiler }} --target=${{ matrix.target }} -B${{ matrix.gcc_prefix }}/bin \
138
- -L${{ matrix.gcc_prefix }}/lib -I${{ matrix.gcc_prefix }}/include" >> $GITHUB_ENV
139
- echo "CXX=${{ matrix.compiler }} --target=${{ matrix.target }} -B${{ matrix.gcc_prefix }}/bin \
140
- -L${{ matrix.gcc_prefix }}/lib -I${{ matrix.gcc_prefix }}/include" >> $GITHUB_ENV
141
- # make sure the cross-gcc bin dir is found *before* /usr/bin (64-bit)
142
- echo "${{ matrix.gcc_prefix }}/bin" >> $GITHUB_PATH
143
-
144
- # ──────────────────────────────── Pick version from configure.ac ─────────────────────
145
- - id: ver
146
- name: Read libffi version
147
- shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
148
- run: |
149
- cd "$(cygpath $RUNNER_WORKSPACE)/libffi"
150
- version=$(sed -nE 's/^AC_INIT\(\[libffi\],[[:space:]]*\[([^]]+)\].*/\1/p' configure.ac)
151
- [[ $version ]] || { echo "Could not parse version"; exit 1; }
152
- echo "version=$version" >> "$GITHUB_OUTPUT"
153
-
154
- # ──────────────────────────────── Build & test ───────────────────────────────────────
155
- - name: Build and test
156
- shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
157
- run: |
158
- set -euo pipefail
159
- cd "$(cygpath $RUNNER_WORKSPACE)/libffi"
160
- wget https://rl.gl/cli/rlgl-windows-amd64.zip
161
- unzip rlgl-windows-amd64.zip
162
- autoreconf -fvi
163
- ./configure \
164
- --enable-shared \
165
- --build=${{ matrix.host }} --host=${{ matrix.host }} \
166
- CPPFLAGS="-DFFI_BUILDING_DLL -DUSE_STATIC_RTL" \
167
- CFLAGS="-DFFI_BUILDING_DLL -DUSE_STATIC_RTL"
168
-
169
- make
170
- # sanity-check
171
- file */.libs/*ffi-*.dll
172
-
173
- TERM=none DEJAGNU=$(pwd)/.ci/site.exp BOARDSDIR=$(pwd)/.ci GCC_COLORS= make check || true
174
- ./rlgl/rlgl.exe l --key=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI https://rl.gl
175
- ./rlgl/rlgl.exe e \
176
- -l project=libffi \
177
- -l sha=${GITHUB_SHA:0:7} \
178
- -l CC=${{ matrix.compiler }} \
179
- -l host=${{ matrix.host }} \
180
- --policy=https://github.com/libffi/rlgl-policy.git $(find . -name libffi.log)
181
-
182
- build-msvc:
183
- name: Windows ${{ matrix.width }}-bit Visual C++
184
- runs-on: windows-latest
185
-
186
- strategy:
187
- fail-fast: false
188
- matrix:
189
- include:
190
- - host: i686-pc-cygwin
191
- width: 32
192
- arch: x86
193
- tools: amd64_x86
194
- - host: x86_64-w64-mingw32
195
- width: 64
196
- arch: x64
197
- tools: amd64
198
-
199
- steps:
200
- - run: git config --global core.autocrlf input
201
- - uses: actions/checkout@v4
202
- - uses: egor-tensin/setup-cygwin@v4
203
- with:
204
- platform: x64
205
- packages: wget make dejagnu automake autoconf libtool texinfo unzip dos2unix
206
- - uses: ilammy/msvc-dev-cmd@v1.13.0
207
- with:
208
- arch: ${{ matrix.tools }}
209
-
210
- - name: Read libffi version from configure.ac
211
- id: ver
212
- shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
213
- run: |
214
- cd $(cygpath $RUNNER_WORKSPACE)/libffi
215
- # Pull the second bracketed field from the AC_INIT line.
216
- # Example line: AC_INIT([libffi],[3.5.0],[http://…])
217
- ls -l
218
- grep AC_INIT configure.ac
219
- ver=$(sed -nE 's/^AC_INIT\(\[libffi\],[[:space:]]*\[([^]]+)\].*/\1/p' configure.ac)
220
- [[ -n "$ver" ]] || { echo "Could not parse version!"; exit 1; }
221
- echo "version=$ver" >> "$GITHUB_OUTPUT"
222
-
223
- - name: Build and test
224
- run: |
225
- cd $(cygpath $RUNNER_WORKSPACE)/libffi
226
- wget https://rl.gl/cli/rlgl-windows-amd64.zip
227
- unzip rlgl-windows-amd64.zip
228
- autoreconf -f -v -i
229
- ./configure \
230
- --enable-shared \
231
- --build="${{ matrix.host }}" --host="${{ matrix.host }}" \
232
- --disable-docs \
233
- CC="$(pwd)/msvcc.sh -m${{ matrix.width }}" \
234
- CXX="$(pwd)/msvcc.sh -m${{ matrix.width }}" \
235
- LD="link" \
236
- LDFLAGS="-no-undefined" \
237
- CPP="cl -nologo -EP" \
238
- CXXCPP="cl -nologo -EP" \
239
- CPPFLAGS="-DFFI_BUILDING_DLL -DUSE_STATIC_RTL" \
240
- CFLAGS="-DFFI_BUILDING_DLL -DUSE_STATIC_RTL" \
241
- AR='$(pwd)/.ci/ar-lib lib' \
242
- NM='dumpbin -symbols' STRIP=':' \
243
- $DEBUG_ARG || cat */config.log
244
- make
245
- find ./ -type f -name 'libffi*'
246
- ls -l */.libs
247
- cp $(find . -name 'libffi-?.dll') ${{ matrix.host }}/testsuite/
248
- find ./ -name ffi.h
249
- TERM=none DEJAGNU=$(pwd)/.ci/site.exp BOARDSDIR=$(pwd)/.ci GCC_COLORS= make check || true
250
- ./rlgl/rlgl.exe l --key=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI https://rl.gl
251
- ./rlgl/rlgl.exe e \
252
- -l project=libffi \
253
- -l sha=${GITHUB_SHA:0:7} \
254
- -l CC=msvcc.sh \
255
- -l host=${{ matrix.host }} \
256
- --policy=https://github.com/libffi/rlgl-policy.git $(find . -name libffi.log)
257
- shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
258
-
259
- - name: Add meta information to DLL
260
- shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
261
- run: |
262
- cd $(cygpath $RUNNER_WORKSPACE)/libffi
263
-
264
- # Deconstruct the libffi version
265
- ver=${{ steps.ver.outputs.version }}
266
- echo "$ver"
267
-
268
- base=${ver%%-*}
269
- rc=${ver#*-}
270
- [[ $rc == "$ver" ]] && rc="" # no rc? rc=""
271
-
272
- maj=$(cut -d. -f1 <<<"$base")
273
- min=$(cut -d. -f2 <<<"$base")
274
- pat=$(cut -d. -f3 <<<"$base")
275
-
276
- # Decide on build number
277
- if [[ $rc =~ ^rc([0-9]+)$ ]]; then
278
- build=${BASH_REMATCH[1]} # rc1 → 1
279
- else
280
- build=0
281
- fi
282
-
283
- # Use rcedit to edit the DLLs resources
284
- wget -O rcedit.exe https://github.com/electron/rcedit/releases/download/v2.0.0/rcedit-${{ matrix.arch }}.exe
285
- chmod +x ./rcedit.exe
286
-
287
- dll_filename=libffi-8.dll
288
- ./rcedit.exe "${{ matrix.host }}"/.libs/$dll_filename \
289
- --set-file-version "$maj.$min.$pat.$build" \
290
- --set-product-version "$maj.$min.$pat.$build" \
291
- --set-version-string "CompanyName" "https://github.com/libffi/libffi" \
292
- --set-version-string "FileDescription" "Portable foreign function interface library (${{ matrix.arch }})" \
293
- --set-version-string "ProductName" "libffi" \
294
- --set-version-string "FileVersion" "${{ steps.ver.outputs.version }}" \
295
- --set-version-string "LegalCopyright" "Copyright (c) 1996-2025 Anthony Green and others" \
296
- --set-version-string "OriginalFilename" "$dll_filename"
297
-
298
- - name: Create binary distribution
299
- shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
300
- run: |
301
- cd $(cygpath $RUNNER_WORKSPACE)/libffi
302
- set -euxo pipefail
303
-
304
- pkgdir="libffi-${{ steps.ver.outputs.version }}-x86-${{ matrix.width }}bit-msvc-binaries"
305
- mkdir -p "$pkgdir"
306
-
307
- # Copy libraries, headers, and licence into the *same* directory
308
- cp "${{ matrix.host }}"/.libs/libffi-8.* "$pkgdir/"
309
- cp "${{ matrix.host }}"/include/*.h "$pkgdir/"
310
- cp LICENSE "$pkgdir/"
311
-
312
- - name: Upload artefact
313
- uses: actions/upload-artifact@v4
314
- with:
315
- name: libffi-${{ steps.ver.outputs.version }}-x86-${{ matrix.width }}bit-msvc-binaries
316
- path: libffi-${{ steps.ver.outputs.version }}-x86-${{ matrix.width }}bit-msvc-binaries
317
- if-no-files-found: error
318
-
319
- - name: Upload to GitHub Release
320
- if: github.ref_type == 'tag'
321
- uses: softprops/action-gh-release@v2
322
- with:
323
- files: libffi-${{ steps.ver.outputs.version }}-x86-${{ matrix.width }}bit-msvc-binaries.zip
324
-
325
- build-android:
326
- name: Android ${{ matrix.host }}
327
- runs-on: ubuntu-latest
328
-
329
- strategy:
330
- fail-fast: false
331
- matrix:
332
- host: [armv7a-linux-androideabi, aarch64-linux-android, i686-linux-android, x86_64-linux-android]
333
-
334
- steps:
335
- - run: git config --global core.autocrlf input
336
- - uses: actions/checkout@v4
337
- - run: ./.ci/install.sh
338
- - env:
339
- HOST: ${{ matrix.HOST }}
340
- ANDROID_API_LEVEL: 23
341
- CONFIGURE_OPTIONS: "--disable-shared --disable-multi-os-directory" # fixes warning about unsupported -print-multi-os-directory with clang
342
- run: |
343
- # Relevant documentation:
344
- # https://developer.android.com/ndk/guides/other_build_systems
345
- # https://android.googlesource.com/platform/ndk/+/master/docs/BuildSystemMaintainers.md
346
- export TOOLCHAIN="${ANDROID_NDK_ROOT}"/toolchains/llvm/prebuilt/linux-x86_64
347
- export CC="${TOOLCHAIN}"/bin/${HOST}${ANDROID_API_LEVEL}-clang
348
- export CXX="${TOOLCHAIN}"/bin/${HOST}${ANDROID_API_LEVEL}-clang++
349
- export CC_FOR_TARGET="${TOOLCHAIN}"/bin/${HOST}${ANDROID_API_LEVEL}-clang
350
- export CXX_FOR_TARGET="${TOOLCHAIN}"/bin/${HOST}${ANDROID_API_LEVEL}-clang++
351
- export LD="${TOOLCHAIN}"/bin/ld.lld
352
- export AR="${TOOLCHAIN}"/bin/llvm-ar
353
- export AS="${CC}"
354
- export RANLIB="${TOOLCHAIN}"/bin/llvm-ranlib
355
- export STRIP="${TOOLCHAIN}"/bin/llvm-strip
356
- export NM="${TOOLCHAIN}"/bin/llvm-nm
357
- export OBJDUMP="${TOOLCHAIN}"/bin/llvm-objdump
358
- ./.ci/build.sh