ffi 1.17.2 → 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 (327) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +34 -0
  4. data/Gemfile +7 -4
  5. data/README.md +1 -0
  6. data/Rakefile +7 -4
  7. data/Steepfile +8 -0
  8. data/ext/ffi_c/DynamicLibrary.c +1 -1
  9. data/ext/ffi_c/Function.c +2 -0
  10. data/ext/ffi_c/MethodHandle.c +4 -2
  11. data/ext/ffi_c/StructLayout.c +129 -12
  12. data/ext/ffi_c/libffi/LICENSE +1 -1
  13. data/ext/ffi_c/libffi/Makefile.am +17 -13
  14. data/ext/ffi_c/libffi/Makefile.in +37 -30
  15. data/ext/ffi_c/libffi/README.md +22 -3
  16. data/ext/ffi_c/libffi/configure +105 -121
  17. data/ext/ffi_c/libffi/configure.ac +21 -8
  18. data/ext/ffi_c/libffi/configure.host +6 -1
  19. data/ext/ffi_c/libffi/doc/Makefile.in +3 -0
  20. data/ext/ffi_c/libffi/doc/libffi.texi +24 -1
  21. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  22. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +1 -28
  23. data/ext/ffi_c/libffi/include/Makefile.in +3 -0
  24. data/ext/ffi_c/libffi/include/ffi.h.in +19 -1
  25. data/ext/ffi_c/libffi/libffi.map.in +13 -1
  26. data/ext/ffi_c/libffi/libtool-version +1 -1
  27. data/ext/ffi_c/libffi/m4/asmcfi.m4 +28 -11
  28. data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +13 -3
  29. data/ext/ffi_c/libffi/man/Makefile.in +3 -0
  30. data/ext/ffi_c/libffi/src/aarch64/sysv.S +7 -1
  31. data/ext/ffi_c/libffi/src/arm/sysv.S +1 -1
  32. data/ext/ffi_c/libffi/src/pa/linux.S +4 -0
  33. data/ext/ffi_c/libffi/src/powerpc/ffi.c +6 -0
  34. data/ext/ffi_c/libffi/src/riscv/ffi.c +39 -16
  35. data/ext/ffi_c/libffi/src/riscv/internal.h +7 -0
  36. data/ext/ffi_c/libffi/src/riscv/sysv.S +24 -0
  37. data/ext/ffi_c/libffi/src/tramp.c +6 -1
  38. data/ext/ffi_c/libffi/src/types.c +23 -1
  39. data/ext/ffi_c/libffi/src/{wasm32 → wasm}/ffi.c +157 -54
  40. data/ext/ffi_c/libffi/src/{wasm32 → wasm}/ffitarget.h +17 -0
  41. data/ext/ffi_c/libffi/src/x86/ffitarget.h +0 -3
  42. data/ext/ffi_c/libffi/src/x86/sysv.S +1 -3
  43. data/ext/ffi_c/libffi/src/x86/sysv_intel.S +1 -3
  44. data/ext/ffi_c/libffi/testsuite/Makefile.in +6 -2
  45. data/ext/ffi_c/libffi.mk +5 -0
  46. data/ffi.gemspec +7 -6
  47. data/lib/ffi/autopointer.rb +6 -0
  48. data/lib/ffi/compat.rb +11 -0
  49. data/lib/ffi/function.rb +23 -0
  50. data/lib/ffi/library.rb +19 -3
  51. data/lib/ffi/struct_by_reference.rb +1 -1
  52. data/lib/ffi/version.rb +1 -1
  53. data/samples/hello_ractor.rb +9 -1
  54. data/samples/qsort_ractor.rb +9 -1
  55. data/sig/ffi/auto_pointer.rbs +1 -1
  56. data/sig/ffi/errno.rbs +8 -0
  57. data/sig/ffi/platform.rbs +49 -0
  58. data/sig/ffi/struct.rbs +2 -2
  59. data/sig/ffi/struct_by_reference.rbs +1 -1
  60. data/sig/ffi.rbs +4 -1
  61. data.tar.gz.sig +0 -0
  62. metadata +24 -338
  63. metadata.gz.sig +0 -0
  64. data/ext/ffi_c/libffi/.allow-ai-service +0 -0
  65. data/ext/ffi_c/libffi/.appveyor/site.exp +0 -16
  66. data/ext/ffi_c/libffi/.appveyor/unix-noexec.exp +0 -7
  67. data/ext/ffi_c/libffi/.appveyor.yml +0 -84
  68. data/ext/ffi_c/libffi/.ci/ar-lib +0 -270
  69. data/ext/ffi_c/libffi/.ci/bfin-sim.exp +0 -58
  70. data/ext/ffi_c/libffi/.ci/build-cross-in-container.sh +0 -18
  71. data/ext/ffi_c/libffi/.ci/build-in-container.sh +0 -10
  72. data/ext/ffi_c/libffi/.ci/build.sh +0 -124
  73. data/ext/ffi_c/libffi/.ci/compile +0 -351
  74. data/ext/ffi_c/libffi/.ci/install.sh +0 -78
  75. data/ext/ffi_c/libffi/.ci/m32r-sim.exp +0 -58
  76. data/ext/ffi_c/libffi/.ci/moxie-sim.exp +0 -60
  77. data/ext/ffi_c/libffi/.ci/msvs-detect +0 -1103
  78. data/ext/ffi_c/libffi/.ci/or1k-sim.exp +0 -58
  79. data/ext/ffi_c/libffi/.ci/powerpc-eabisim.exp +0 -58
  80. data/ext/ffi_c/libffi/.ci/site.exp +0 -29
  81. data/ext/ffi_c/libffi/.ci/wine-sim.exp +0 -55
  82. data/ext/ffi_c/libffi/.gitattributes +0 -4
  83. data/ext/ffi_c/libffi/.github/issue_template.md +0 -10
  84. data/ext/ffi_c/libffi/.github/workflows/build.yml +0 -479
  85. data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +0 -160
  86. data/ext/ffi_c/libffi/.gitignore +0 -46
  87. data/ext/ffi_c/libffi/testsuite/Makefile.am +0 -88
  88. data/ext/ffi_c/libffi/testsuite/config/default.exp +0 -1
  89. data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +0 -34
  90. data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +0 -46
  91. data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +0 -86
  92. data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +0 -23
  93. data/ext/ffi_c/libffi/testsuite/emscripten/test.html +0 -7
  94. data/ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py +0 -51
  95. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +0 -682
  96. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +0 -283
  97. data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +0 -45
  98. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +0 -28
  99. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +0 -78
  100. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +0 -50
  101. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +0 -63
  102. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +0 -1746
  103. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +0 -2885
  104. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +0 -747
  105. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +0 -46
  106. data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +0 -46
  107. data/ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c +0 -41
  108. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +0 -54
  109. data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +0 -99
  110. data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +0 -108
  111. data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +0 -114
  112. data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +0 -119
  113. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +0 -26
  114. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +0 -163
  115. data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +0 -59
  116. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +0 -60
  117. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +0 -61
  118. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +0 -74
  119. data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +0 -62
  120. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +0 -110
  121. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +0 -59
  122. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +0 -57
  123. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +0 -70
  124. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +0 -78
  125. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -52
  126. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +0 -46
  127. data/ext/ffi_c/libffi/testsuite/libffi.call/overread.c +0 -54
  128. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +0 -127
  129. data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +0 -59
  130. data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc_tc.c +0 -114
  131. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +0 -36
  132. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +0 -43
  133. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +0 -42
  134. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +0 -35
  135. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +0 -36
  136. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +0 -49
  137. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +0 -42
  138. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +0 -34
  139. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +0 -41
  140. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +0 -48
  141. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +0 -36
  142. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +0 -42
  143. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +0 -38
  144. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +0 -42
  145. data/ext/ffi_c/libffi/testsuite/libffi.call/s55.c +0 -60
  146. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +0 -43
  147. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +0 -49
  148. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +0 -49
  149. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +0 -55
  150. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +0 -67
  151. data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +0 -57
  152. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +0 -67
  153. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +0 -60
  154. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +0 -64
  155. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +0 -66
  156. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +0 -64
  157. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +0 -74
  158. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +0 -81
  159. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +0 -68
  160. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c +0 -63
  161. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c +0 -65
  162. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c +0 -65
  163. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c +0 -67
  164. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c +0 -67
  165. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c +0 -93
  166. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c +0 -61
  167. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_int_float.c +0 -88
  168. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c +0 -63
  169. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c +0 -90
  170. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +0 -61
  171. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +0 -78
  172. data/ext/ffi_c/libffi/testsuite/libffi.call/va_2.c +0 -220
  173. data/ext/ffi_c/libffi/testsuite/libffi.call/va_3.c +0 -154
  174. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +0 -134
  175. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +0 -135
  176. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +0 -141
  177. data/ext/ffi_c/libffi/testsuite/libffi.call/x32.c +0 -31
  178. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp +0 -67
  179. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn0.c +0 -90
  180. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn1.c +0 -83
  181. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn2.c +0 -83
  182. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn3.c +0 -102
  183. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn4.c +0 -91
  184. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn5.c +0 -94
  185. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn6.c +0 -92
  186. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_loc_fn0.c +0 -96
  187. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_simple.c +0 -61
  188. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_12byte.c +0 -112
  189. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_16byte.c +0 -117
  190. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_18byte.c +0 -120
  191. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_19byte.c +0 -131
  192. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_1_1byte.c +0 -93
  193. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte.c +0 -109
  194. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte1.c +0 -113
  195. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_24byte.c +0 -145
  196. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_2byte.c +0 -103
  197. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3_1byte.c +0 -114
  198. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte1.c +0 -103
  199. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte2.c +0 -103
  200. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +0 -113
  201. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4_1byte.c +0 -120
  202. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4byte.c +0 -103
  203. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5_1_byte.c +0 -137
  204. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5byte.c +0 -116
  205. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_64byte.c +0 -148
  206. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6_1_byte.c +0 -140
  207. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6byte.c +0 -121
  208. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7_1_byte.c +0 -155
  209. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7byte.c +0 -121
  210. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_8byte.c +0 -102
  211. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte1.c +0 -103
  212. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte2.c +0 -103
  213. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_double.c +0 -111
  214. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_float.c +0 -109
  215. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble.c +0 -111
  216. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c +0 -147
  217. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c +0 -152
  218. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_pointer.c +0 -113
  219. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint16.c +0 -108
  220. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint32.c +0 -106
  221. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint64.c +0 -109
  222. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint16.c +0 -108
  223. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint32.c +0 -109
  224. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint64.c +0 -111
  225. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_dbls_struct.c +0 -68
  226. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double.c +0 -43
  227. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double_va.c +0 -69
  228. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_float.c +0 -46
  229. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble.c +0 -115
  230. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble_va.c +0 -80
  231. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_args.c +0 -70
  232. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c +0 -55
  233. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_schar.c +0 -78
  234. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshort.c +0 -79
  235. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +0 -94
  236. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_uchar.c +0 -99
  237. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushort.c +0 -78
  238. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +0 -94
  239. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer.c +0 -79
  240. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer_stack.c +0 -152
  241. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_schar.c +0 -47
  242. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sint.c +0 -44
  243. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sshort.c +0 -45
  244. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +0 -125
  245. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar.c +0 -45
  246. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint.c +0 -47
  247. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +0 -49
  248. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +0 -49
  249. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulonglong.c +0 -49
  250. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort.c +0 -46
  251. data/ext/ffi_c/libffi/testsuite/libffi.closures/err_bad_abi.c +0 -36
  252. data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +0 -1
  253. data/ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c +0 -343
  254. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct.c +0 -175
  255. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct1.c +0 -161
  256. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct10.c +0 -146
  257. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +0 -137
  258. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c +0 -86
  259. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c +0 -115
  260. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct2.c +0 -119
  261. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct3.c +0 -120
  262. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct4.c +0 -120
  263. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct5.c +0 -121
  264. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct6.c +0 -142
  265. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct7.c +0 -120
  266. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct8.c +0 -142
  267. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct9.c +0 -142
  268. data/ext/ffi_c/libffi/testsuite/libffi.closures/problem1.c +0 -90
  269. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c +0 -86
  270. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c +0 -102
  271. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c +0 -101
  272. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large.c +0 -145
  273. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large2.c +0 -148
  274. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium.c +0 -124
  275. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium2.c +0 -125
  276. data/ext/ffi_c/libffi/testsuite/libffi.closures/testclosure.c +0 -75
  277. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest.cc +0 -118
  278. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc +0 -55
  279. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +0 -91
  280. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +0 -10
  281. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +0 -10
  282. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +0 -10
  283. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +0 -42
  284. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +0 -10
  285. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +0 -10
  286. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +0 -10
  287. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +0 -71
  288. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +0 -10
  289. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +0 -10
  290. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +0 -10
  291. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +0 -80
  292. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +0 -10
  293. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +0 -16
  294. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +0 -10
  295. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp +0 -36
  296. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +0 -51
  297. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +0 -7
  298. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +0 -7
  299. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +0 -7
  300. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +0 -10
  301. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +0 -10
  302. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +0 -86
  303. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +0 -10
  304. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +0 -1
  305. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +0 -78
  306. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +0 -10
  307. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +0 -10
  308. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +0 -10
  309. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +0 -37
  310. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +0 -41
  311. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +0 -10
  312. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +0 -10
  313. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +0 -10
  314. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +0 -44
  315. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +0 -10
  316. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +0 -10
  317. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +0 -10
  318. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +0 -10
  319. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +0 -10
  320. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +0 -10
  321. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +0 -34
  322. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +0 -28
  323. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +0 -1
  324. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +0 -36
  325. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +0 -19
  326. data/lib/ffi/tools/types_generator.rb +0 -137
  327. data/rakelib/ffi_gem_helper.rb +0 -65
@@ -1,46 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check for proper argument alignment.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <twalljava@java.net> (from many_win32.c) */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "ffitest.h"
10
-
11
- static float ABI_ATTR align_arguments(int i1,
12
- double f2,
13
- int i3,
14
- double f4)
15
- {
16
- return i1+f2+i3+f4;
17
- }
18
-
19
- int main(void)
20
- {
21
- ffi_cif cif;
22
- ffi_type *args[4] = {
23
- &ffi_type_sint,
24
- &ffi_type_double,
25
- &ffi_type_sint,
26
- &ffi_type_double
27
- };
28
- double fa[2] = {1,2};
29
- int ia[2] = {1,2};
30
- void *values[4] = {&ia[0], &fa[0], &ia[1], &fa[1]};
31
- float f, ff;
32
-
33
- /* Initialize the cif */
34
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 4,
35
- &ffi_type_float, args) == FFI_OK);
36
-
37
- ff = align_arguments(ia[0], fa[0], ia[1], fa[1]);
38
-
39
- ffi_call(&cif, FFI_FN(align_arguments), &f, values);
40
-
41
- if (f == ff)
42
- printf("align arguments tests ok!\n");
43
- else
44
- CHECK(0);
45
- exit(0);
46
- }
@@ -1,46 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check for proper argument alignment.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <twalljava@java.net> (from many_win32.c) */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "ffitest.h"
10
-
11
- static float ABI_ATTR align_arguments(int i1,
12
- double f2,
13
- int i3,
14
- double f4)
15
- {
16
- return i1+f2+i3+f4;
17
- }
18
-
19
- int main(void)
20
- {
21
- ffi_cif cif;
22
- ffi_type *args[4] = {
23
- &ffi_type_sint,
24
- &ffi_type_double,
25
- &ffi_type_sint,
26
- &ffi_type_double
27
- };
28
- double fa[2] = {1,2};
29
- int ia[2] = {1,2};
30
- void *values[4] = {&ia[0], &fa[0], &ia[1], &fa[1]};
31
- float f, ff;
32
-
33
- /* Initialize the cif */
34
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 4,
35
- &ffi_type_float, args) == FFI_OK);
36
-
37
- ff = align_arguments(ia[0], fa[0], ia[1], fa[1]);;
38
-
39
- ffi_call(&cif, FFI_FN(align_arguments), &f, values);
40
-
41
- if (f == ff)
42
- printf("align arguments tests ok!\n");
43
- else
44
- CHECK(0);
45
- exit(0);
46
- }
@@ -1,41 +0,0 @@
1
- /* Area: bpo-38748
2
- Purpose: test for stdcall alignment problem
3
- Source: github.com/python/cpython/pull/26204 */
4
-
5
- /* { dg-do run } */
6
-
7
- #include "ffitest.h"
8
- #include "ffi_common.h"
9
-
10
- static UINT32 ABI_ATTR align_arguments(UINT32 l1,
11
- UINT64 l2)
12
- {
13
- return l1 + (UINT32) l2;
14
- }
15
-
16
- int main(void)
17
- {
18
- ffi_cif cif;
19
- ffi_type *args[4] = {
20
- &ffi_type_uint32,
21
- &ffi_type_uint64
22
- };
23
- ffi_arg lr1, lr2;
24
- UINT32 l1 = 1;
25
- UINT64 l2 = 2;
26
- void *values[2] = {&l1, &l2};
27
-
28
- /* Initialize the cif */
29
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 2,
30
- &ffi_type_uint32, args) == FFI_OK);
31
-
32
- lr1 = align_arguments(l1, l2);
33
-
34
- ffi_call(&cif, FFI_FN(align_arguments), &lr2, values);
35
-
36
- if (lr1 == lr2)
37
- printf("bpo-38748 arguments tests ok!\n");
38
- else
39
- CHECK(0);
40
- exit(0);
41
- }
@@ -1,54 +0,0 @@
1
- # Copyright (C) 2003, 2006, 2009, 2010, 2014 Free Software Foundation, Inc.
2
-
3
- # This program is free software; you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation; either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with this program; see the file COPYING3. If not see
15
- # <http://www.gnu.org/licenses/>.
16
-
17
- dg-init
18
- libffi-init
19
-
20
- global srcdir subdir
21
-
22
- if { [string match $compiler_vendor "microsoft"] } {
23
- # -wd4005 macro redefinition
24
- # -wd4244 implicit conversion to type of smaller size
25
- # -wd4305 truncation to smaller type
26
- # -wd4477 printf %lu of uintptr_t
27
- # -wd4312 implicit conversion to type of greater size
28
- # -wd4311 pointer truncation to unsigned long
29
- # -EHsc C++ Exception Handling (no SEH exceptions)
30
- set additional_options "-wd4005 -wd4244 -wd4305 -wd4477 -wd4312 -wd4311 -EHsc";
31
- } else {
32
- set additional_options "";
33
- }
34
-
35
- set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.c]]
36
-
37
- run-many-tests $tlist $additional_options
38
-
39
- set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.cc]]
40
-
41
- # No C++ for or1k
42
- if { [istarget "or1k-*-*"] } {
43
- foreach test $tlist {
44
- unsupported "$test"
45
- }
46
- } else {
47
- run-many-tests $tlist $additional_options
48
- }
49
-
50
- dg-finish
51
-
52
- # Local Variables:
53
- # tcl-indent-level:4
54
- # End:
@@ -1,99 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check structures with array and callback.
3
- Limitations: none.
4
- PR: none.
5
- Originator: David Tenty <daltenty@ibm.com> */
6
-
7
- /* { dg-do run } */
8
- #include "ffitest.h"
9
-
10
- static int i=5;
11
-
12
- static void callback(void) { i++; }
13
-
14
- typedef struct
15
- {
16
- unsigned char c1;
17
- double s[2];
18
- unsigned char c2;
19
- } test_structure_12;
20
-
21
- static test_structure_12 ABI_ATTR struct12 (test_structure_12 ts, void (*func)(void))
22
- {
23
- ts.c1 += 1;
24
- ts.c2 += 1;
25
- ts.s[0] += 1;
26
- ts.s[1] += 1;
27
-
28
- func();
29
- return ts;
30
- }
31
-
32
- int main (void)
33
- {
34
- ffi_cif cif;
35
- ffi_type *args[MAX_ARGS];
36
- void *values[MAX_ARGS];
37
- ffi_type ts12_type,ts12a_type;
38
- ffi_type *ts12_type_elements[4];
39
- ffi_type *ts12a_type_elements[3];
40
-
41
- test_structure_12 ts12_arg;
42
- void (*ptr)(void)=&callback;
43
-
44
- test_structure_12 *ts12_result =
45
- (test_structure_12 *) malloc (sizeof(test_structure_12));
46
-
47
- ts12a_type.size = 0;
48
- ts12a_type.alignment = 0;
49
- ts12a_type.type = FFI_TYPE_STRUCT;
50
- ts12a_type.elements = ts12a_type_elements;
51
- ts12a_type_elements[0] = &ffi_type_double;
52
- ts12a_type_elements[1] = &ffi_type_double;
53
- ts12a_type_elements[2] = NULL;
54
-
55
- ts12_type.size = 0;
56
- ts12_type.alignment = 0;
57
- ts12_type.type = FFI_TYPE_STRUCT;
58
- ts12_type.elements = ts12_type_elements;
59
- ts12_type_elements[0] = &ffi_type_uchar;
60
- ts12_type_elements[1] = &ts12a_type;
61
- ts12_type_elements[2] = &ffi_type_uchar;
62
- ts12_type_elements[3] = NULL;
63
-
64
-
65
- args[0] = &ts12_type;
66
- args[1] = &ffi_type_pointer;
67
- values[0] = &ts12_arg;
68
- values[1] = &ptr;
69
-
70
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts12_type, args) == FFI_OK);
71
-
72
- ts12_arg.c1 = 5;
73
- ts12_arg.c2 = 6;
74
- ts12_arg.s[0] = 7.77;
75
- ts12_arg.s[1] = 8.88;
76
-
77
- printf ("%u\n", ts12_arg.c1);
78
- printf ("%u\n", ts12_arg.c2);
79
- printf ("%g\n", ts12_arg.s[0]);
80
- printf ("%g\n", ts12_arg.s[1]);
81
- printf ("%d\n", i);
82
-
83
- ffi_call(&cif, FFI_FN(struct12), ts12_result, values);
84
-
85
- printf ("%u\n", ts12_result->c1);
86
- printf ("%u\n", ts12_result->c2);
87
- printf ("%g\n", ts12_result->s[0]);
88
- printf ("%g\n", ts12_result->s[1]);
89
- printf ("%d\n", i);
90
- CHECK(ts12_result->c1 == 5 + 1);
91
- CHECK(ts12_result->c2 == 6 + 1);
92
- CHECK(ts12_result->s[0] == 7.77 + 1);
93
- CHECK(ts12_result->s[1] == 8.88 + 1);
94
- CHECK(i == 5 + 1);
95
- CHECK(ts12_type.size == sizeof(test_structure_12));
96
-
97
- free (ts12_result);
98
- exit(0);
99
- }
@@ -1,108 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check structures with nested array and callback.
3
- Limitations: none.
4
- PR: none.
5
- Originator: David Tenty <daltenty@ibm.com> */
6
-
7
- /* { dg-do run } */
8
- #include "ffitest.h"
9
-
10
- static int i=5;
11
-
12
- static void callback(void) { i++; }
13
-
14
- typedef struct
15
- {
16
- struct { double d; } s1;
17
- double s[2];
18
- unsigned char c2;
19
- } test_structure_12;
20
-
21
- static test_structure_12 ABI_ATTR struct12 (test_structure_12 ts, void (*func)(void))
22
- {
23
- ts.s1.d += 1;
24
- ts.c2 += 1;
25
- ts.s[0] += 1;
26
- ts.s[1] += 1;
27
-
28
- func();
29
- return ts;
30
- }
31
-
32
- int main (void)
33
- {
34
- ffi_cif cif;
35
- ffi_type *args[MAX_ARGS];
36
- void *values[MAX_ARGS];
37
- ffi_type ts12_type,ts12a_type, ts12b_type;
38
- ffi_type *ts12_type_elements[4];
39
- ffi_type *ts12a_type_elements[2];
40
- ffi_type *ts12b_type_elements[3];
41
-
42
-
43
- test_structure_12 ts12_arg;
44
- void (*ptr)(void)=&callback;
45
-
46
- test_structure_12 *ts12_result =
47
- (test_structure_12 *) malloc (sizeof(test_structure_12));
48
-
49
- ts12a_type.size = 0;
50
- ts12a_type.alignment = 0;
51
- ts12a_type.type = FFI_TYPE_STRUCT;
52
- ts12a_type.elements = ts12a_type_elements;
53
- ts12a_type_elements[0] = &ffi_type_double;
54
- ts12a_type_elements[1] = NULL;
55
-
56
- ts12b_type.size = 0;
57
- ts12b_type.alignment = 0;
58
- ts12b_type.type = FFI_TYPE_STRUCT;
59
- ts12b_type.elements = ts12b_type_elements;
60
- ts12b_type_elements[0] = &ffi_type_double;
61
- ts12b_type_elements[1] = &ffi_type_double;
62
- ts12b_type_elements[2] = NULL;
63
-
64
- ts12_type.size = 0;
65
- ts12_type.alignment = 0;
66
- ts12_type.type = FFI_TYPE_STRUCT;
67
- ts12_type.elements = ts12_type_elements;
68
- ts12_type_elements[0] = &ts12a_type;
69
- ts12_type_elements[1] = &ts12b_type;
70
- ts12_type_elements[2] = &ffi_type_uchar;
71
- ts12_type_elements[3] = NULL;
72
-
73
-
74
- args[0] = &ts12_type;
75
- args[1] = &ffi_type_pointer;
76
- values[0] = &ts12_arg;
77
- values[1] = &ptr;
78
-
79
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts12_type, args) == FFI_OK);
80
-
81
- ts12_arg.s1.d = 5.55;
82
- ts12_arg.c2 = 6;
83
- ts12_arg.s[0] = 7.77;
84
- ts12_arg.s[1] = 8.88;
85
-
86
- printf ("%g\n", ts12_arg.s1.d);
87
- printf ("%u\n", ts12_arg.c2);
88
- printf ("%g\n", ts12_arg.s[0]);
89
- printf ("%g\n", ts12_arg.s[1]);
90
- printf ("%d\n", i);
91
-
92
- ffi_call(&cif, FFI_FN(struct12), ts12_result, values);
93
-
94
- printf ("%g\n", ts12_result->s1.d);
95
- printf ("%u\n", ts12_result->c2);
96
- printf ("%g\n", ts12_result->s[0]);
97
- printf ("%g\n", ts12_result->s[1]);
98
- printf ("%d\n", i);
99
- CHECK(ts12_result->s1.d == 5.55 + 1);
100
- CHECK(ts12_result->c2 == 6 + 1);
101
- CHECK(ts12_result->s[0] == 7.77 + 1);
102
- CHECK(ts12_result->s[1] == 8.88 + 1);
103
- CHECK(i == 5 + 1);
104
- CHECK(ts12_type.size == sizeof(test_structure_12));
105
-
106
- free (ts12_result);
107
- exit(0);
108
- }
@@ -1,114 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check structures with array and callback.
3
- Limitations: none.
4
- PR: none.
5
- Originator: David Tenty <daltenty@ibm.com> */
6
-
7
- /* { dg-do run } */
8
- #include "ffitest.h"
9
-
10
- static int i=5;
11
-
12
- static void callback(void) { i++; }
13
-
14
-
15
- typedef struct
16
- {
17
- struct { unsigned char c; double d; } s1;
18
- double s[2];
19
- unsigned char c2;
20
- } test_structure_12;
21
-
22
- static test_structure_12 ABI_ATTR struct12 (test_structure_12 ts, void (*func)(void))
23
- {
24
- ts.s1.c += 1;
25
- ts.s1.d += 1;
26
- ts.c2 += 1;
27
- ts.s[0] += 1;
28
- ts.s[1] += 1;
29
-
30
- func();
31
- return ts;
32
- }
33
-
34
- int main (void)
35
- {
36
- ffi_cif cif;
37
- ffi_type *args[MAX_ARGS];
38
- void *values[MAX_ARGS];
39
- ffi_type ts12_type,ts12b_type, ts12a_type;
40
- ffi_type *ts12_type_elements[4];
41
- ffi_type *ts12b_type_elements[3];
42
- ffi_type *ts12a_type_elements[3];
43
-
44
- test_structure_12 ts12_arg;
45
- void (*ptr)(void)=&callback;
46
-
47
- test_structure_12 *ts12_result =
48
- (test_structure_12 *) malloc (sizeof(test_structure_12));
49
-
50
- ts12a_type.size = 0;
51
- ts12a_type.alignment = 0;
52
- ts12a_type.type = FFI_TYPE_STRUCT;
53
- ts12a_type.elements = ts12a_type_elements;
54
- ts12a_type_elements[0] = &ffi_type_uchar;
55
- ts12a_type_elements[1] = &ffi_type_double;
56
- ts12a_type_elements[2] = NULL;
57
-
58
- ts12b_type.size = 0;
59
- ts12b_type.alignment = 0;
60
- ts12b_type.type = FFI_TYPE_STRUCT;
61
- ts12b_type.elements = ts12b_type_elements;
62
- ts12b_type_elements[0] = &ffi_type_double;
63
- ts12b_type_elements[1] = &ffi_type_double;
64
- ts12b_type_elements[2] = NULL;
65
-
66
- ts12_type.size = 0;
67
- ts12_type.alignment = 0;
68
- ts12_type.type = FFI_TYPE_STRUCT;
69
- ts12_type.elements = ts12_type_elements;
70
- ts12_type_elements[0] = &ts12a_type;
71
- ts12_type_elements[1] = &ts12b_type;
72
- ts12_type_elements[2] = &ffi_type_uchar;
73
- ts12_type_elements[3] = NULL;
74
-
75
-
76
- args[0] = &ts12_type;
77
- args[1] = &ffi_type_pointer;
78
- values[0] = &ts12_arg;
79
- values[1] = &ptr;
80
-
81
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts12_type, args) == FFI_OK);
82
-
83
- ts12_arg.s1.c = 5;
84
- ts12_arg.s1.d = 5.55;
85
- ts12_arg.c2 = 6;
86
- ts12_arg.s[0] = 7.77;
87
- ts12_arg.s[1] = 8.88;
88
-
89
- printf ("%d\n", ts12_arg.s1.c);
90
- printf ("%g\n", ts12_arg.s1.d);
91
- printf ("%u\n", ts12_arg.c2);
92
- printf ("%g\n", ts12_arg.s[0]);
93
- printf ("%g\n", ts12_arg.s[1]);
94
- printf ("%d\n", i);
95
-
96
- ffi_call(&cif, FFI_FN(struct12), ts12_result, values);
97
-
98
- printf ("%d\n", ts12_result->s1.c);
99
- printf ("%g\n", ts12_result->s1.d);
100
- printf ("%u\n", ts12_result->c2);
101
- printf ("%g\n", ts12_result->s[0]);
102
- printf ("%g\n", ts12_result->s[1]);
103
- printf ("%d\n", i);
104
- CHECK(ts12_result->s1.c == 5 + 1);
105
- CHECK(ts12_result->s1.d == 5.55 + 1);
106
- CHECK(ts12_result->c2 == 6 + 1);
107
- CHECK(ts12_result->s[0] == 7.77 + 1);
108
- CHECK(ts12_result->s[1] == 8.88 + 1);
109
- CHECK(i == 5 + 1);
110
- CHECK(ts12_type.size == sizeof(test_structure_12));
111
-
112
- free (ts12_result);
113
- exit(0);
114
- }
@@ -1,119 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check structures with array and callback.
3
- Limitations: none.
4
- PR: none.
5
- Originator: David Tenty <daltenty@ibm.com> */
6
-
7
- /* { dg-do run } */
8
- #include "ffitest.h"
9
-
10
- static int i=5;
11
-
12
- static void callback(void) { i++; }
13
-
14
-
15
- typedef struct
16
- {
17
- unsigned char c1;
18
- struct { double d; unsigned char c; } s[2];
19
- unsigned char c2;
20
- } test_structure_12;
21
-
22
- static test_structure_12 ABI_ATTR struct12 (test_structure_12 ts, void (*func)(void))
23
- {
24
- ts.c1 += 1;
25
- ts.s[0].d += 1;
26
- ts.s[0].c += 1;
27
- ts.s[1].d += 1;
28
- ts.s[1].c += 1;
29
- ts.c2 += 1;
30
-
31
- func();
32
- return ts;
33
- }
34
-
35
- int main (void)
36
- {
37
- ffi_cif cif;
38
- ffi_type *args[MAX_ARGS];
39
- void *values[MAX_ARGS];
40
- ffi_type ts12_type,ts12b_type, ts12a_type;
41
- ffi_type *ts12_type_elements[4];
42
- ffi_type *ts12b_type_elements[3];
43
- ffi_type *ts12a_type_elements[3];
44
-
45
- test_structure_12 ts12_arg;
46
- void (*ptr)(void)=&callback;
47
-
48
- test_structure_12 *ts12_result =
49
- (test_structure_12 *) malloc (sizeof(test_structure_12));
50
-
51
- ts12a_type.size = 0;
52
- ts12a_type.alignment = 0;
53
- ts12a_type.type = FFI_TYPE_STRUCT;
54
- ts12a_type.elements = ts12a_type_elements;
55
- ts12a_type_elements[0] = &ffi_type_double;
56
- ts12a_type_elements[1] = &ffi_type_uchar;
57
- ts12a_type_elements[2] = NULL;
58
-
59
- ts12b_type.size = 0;
60
- ts12b_type.alignment = 0;
61
- ts12b_type.type = FFI_TYPE_STRUCT;
62
- ts12b_type.elements = ts12b_type_elements;
63
- ts12b_type_elements[0] = &ts12a_type;
64
- ts12b_type_elements[1] = &ts12a_type;
65
- ts12b_type_elements[2] = NULL;
66
-
67
- ts12_type.size = 0;
68
- ts12_type.alignment = 0;
69
- ts12_type.type = FFI_TYPE_STRUCT;
70
- ts12_type.elements = ts12_type_elements;
71
- ts12_type_elements[0] = &ffi_type_uchar;
72
- ts12_type_elements[1] = &ts12b_type;
73
- ts12_type_elements[2] = &ffi_type_uchar;
74
- ts12_type_elements[3] = NULL;
75
-
76
-
77
- args[0] = &ts12_type;
78
- args[1] = &ffi_type_pointer;
79
- values[0] = &ts12_arg;
80
- values[1] = &ptr;
81
-
82
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts12_type, args) == FFI_OK);
83
-
84
- ts12_arg.c1 = 5;
85
- ts12_arg.s[0].d = 5.55;
86
- ts12_arg.s[0].c = 6;
87
- ts12_arg.s[1].d = 7.77;
88
- ts12_arg.s[1].c = 8;
89
- ts12_arg.c2 = 9;
90
-
91
- printf ("%u\n", ts12_arg.c1);
92
- printf ("%g\n", ts12_arg.s[0].d);
93
- printf ("%u\n", ts12_arg.s[0].c);
94
- printf ("%g\n", ts12_arg.s[1].d);
95
- printf ("%u\n", ts12_arg.s[1].c);
96
- printf ("%u\n", ts12_arg.c2);
97
- printf ("%d\n", i);
98
-
99
- ffi_call(&cif, FFI_FN(struct12), ts12_result, values);
100
-
101
- printf ("%u\n", ts12_result->c1);
102
- printf ("%g\n", ts12_result->s[0].d);
103
- printf ("%u\n", ts12_result->s[0].c);
104
- printf ("%g\n", ts12_result->s[1].d);
105
- printf ("%u\n", ts12_result->s[1].c);
106
- printf ("%u\n", ts12_result->c2);
107
- printf ("%d\n", i);
108
- CHECK(ts12_result->c1 == 5 + 1);
109
- CHECK(ts12_result->s[0].d == 5.55 + 1);
110
- CHECK(ts12_result->s[0].c == 6 + 1);
111
- CHECK(ts12_result->s[1].d == 7.77 + 1);
112
- CHECK(ts12_result->s[1].c == 8 + 1);
113
- CHECK(ts12_result->c2 == 9 + 1);
114
- CHECK(i == 5 + 1);
115
- CHECK(ts12_type.size == sizeof(test_structure_12));
116
-
117
- free (ts12_result);
118
- exit(0);
119
- }
@@ -1,26 +0,0 @@
1
- /* Area: ffi_prep_cif
2
- Purpose: Test error return for bad typedefs.
3
- Limitations: none.
4
- PR: none.
5
- Originator: Blake Chaffin 6/6/2007 */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "ffitest.h"
10
-
11
- int main (void)
12
- {
13
- ffi_cif cif;
14
- ffi_type* arg_types[1];
15
-
16
- ffi_type badType = ffi_type_void;
17
-
18
- arg_types[0] = NULL;
19
-
20
- badType.size = 0;
21
-
22
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &badType,
23
- arg_types) == FFI_BAD_TYPEDEF);
24
-
25
- exit(0);
26
- }