ffi 1.17.0 → 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 (359) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +51 -0
  4. data/Gemfile +8 -3
  5. data/README.md +1 -0
  6. data/Rakefile +8 -5
  7. data/Steepfile +8 -0
  8. data/ext/ffi_c/DynamicLibrary.c +1 -1
  9. data/ext/ffi_c/Function.c +54 -34
  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 +20 -15
  14. data/ext/ffi_c/libffi/Makefile.in +41 -54
  15. data/ext/ffi_c/libffi/README.md +40 -4
  16. data/ext/ffi_c/libffi/acinclude.m4 +6 -0
  17. data/ext/ffi_c/libffi/config.guess +80 -22
  18. data/ext/ffi_c/libffi/config.sub +161 -80
  19. data/ext/ffi_c/libffi/configure +135 -135
  20. data/ext/ffi_c/libffi/configure.ac +28 -14
  21. data/ext/ffi_c/libffi/configure.host +6 -6
  22. data/ext/ffi_c/libffi/doc/Makefile.in +4 -0
  23. data/ext/ffi_c/libffi/doc/libffi.texi +27 -4
  24. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  25. data/ext/ffi_c/libffi/fficonfig.h.in +3 -3
  26. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +1 -28
  27. data/ext/ffi_c/libffi/include/Makefile.in +4 -0
  28. data/ext/ffi_c/libffi/include/ffi.h.in +19 -1
  29. data/ext/ffi_c/libffi/include/ffi_cfi.h +2 -0
  30. data/ext/ffi_c/libffi/include/ffi_common.h +17 -0
  31. data/ext/ffi_c/libffi/libffi.map.in +13 -1
  32. data/ext/ffi_c/libffi/libtool-version +1 -1
  33. data/ext/ffi_c/libffi/m4/asmcfi.m4 +28 -11
  34. data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +13 -3
  35. data/ext/ffi_c/libffi/man/Makefile.in +4 -0
  36. data/ext/ffi_c/libffi/src/aarch64/ffi.c +7 -4
  37. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +2 -2
  38. data/ext/ffi_c/libffi/src/aarch64/internal.h +63 -17
  39. data/ext/ffi_c/libffi/src/aarch64/sysv.S +22 -12
  40. data/ext/ffi_c/libffi/src/arc/arcompact.S +2 -2
  41. data/ext/ffi_c/libffi/src/arc/ffi.c +6 -2
  42. data/ext/ffi_c/libffi/src/arm/sysv.S +1 -1
  43. data/ext/ffi_c/libffi/src/closures.c +3 -3
  44. data/ext/ffi_c/libffi/src/dlmalloc.c +1 -0
  45. data/ext/ffi_c/libffi/src/mips/ffitarget.h +2 -4
  46. data/ext/ffi_c/libffi/src/mips/n32.S +4 -0
  47. data/ext/ffi_c/libffi/src/mips/o32.S +4 -0
  48. data/ext/ffi_c/libffi/src/or1k/ffi.c +2 -2
  49. data/ext/ffi_c/libffi/src/pa/linux.S +4 -0
  50. data/ext/ffi_c/libffi/src/powerpc/ffi.c +19 -0
  51. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +26 -19
  52. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +26 -16
  53. data/ext/ffi_c/libffi/src/powerpc/internal.h +10 -0
  54. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +47 -0
  55. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +24 -0
  56. data/ext/ffi_c/libffi/src/prep_cif.c +1 -4
  57. data/ext/ffi_c/libffi/src/riscv/ffi.c +39 -16
  58. data/ext/ffi_c/libffi/src/riscv/internal.h +7 -0
  59. data/ext/ffi_c/libffi/src/riscv/sysv.S +24 -0
  60. data/ext/ffi_c/libffi/src/s390/ffi.c +28 -1
  61. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  62. data/ext/ffi_c/libffi/src/s390/sysv.S +38 -0
  63. data/ext/ffi_c/libffi/src/sparc/ffi.c +16 -0
  64. data/ext/ffi_c/libffi/src/tramp.c +6 -1
  65. data/ext/ffi_c/libffi/src/types.c +23 -1
  66. data/ext/ffi_c/libffi/src/{wasm32 → wasm}/ffi.c +166 -315
  67. data/ext/ffi_c/libffi/src/{wasm32 → wasm}/ffitarget.h +17 -0
  68. data/ext/ffi_c/libffi/src/x86/ffi.c +4 -1
  69. data/ext/ffi_c/libffi/src/x86/ffi64.c +4 -1
  70. data/ext/ffi_c/libffi/src/x86/ffitarget.h +0 -3
  71. data/ext/ffi_c/libffi/src/x86/sysv.S +1 -3
  72. data/ext/ffi_c/libffi/src/x86/sysv_intel.S +1 -3
  73. data/ext/ffi_c/libffi/testsuite/Makefile.in +10 -4
  74. data/ext/ffi_c/libffi.mk +5 -0
  75. data/ffi.gemspec +7 -6
  76. data/lib/ffi/autopointer.rb +6 -0
  77. data/lib/ffi/compat.rb +11 -0
  78. data/lib/ffi/ffi.rb +59 -0
  79. data/lib/ffi/function.rb +23 -0
  80. data/lib/ffi/library.rb +19 -3
  81. data/lib/ffi/struct_by_reference.rb +1 -1
  82. data/lib/ffi/version.rb +1 -1
  83. data/samples/hello_ractor.rb +9 -1
  84. data/samples/qsort_ractor.rb +9 -1
  85. data/sig/ffi/auto_pointer.rbs +1 -2
  86. data/sig/ffi/errno.rbs +8 -0
  87. data/sig/ffi/library.rbs +1 -1
  88. data/sig/ffi/platform.rbs +49 -0
  89. data/sig/ffi/struct.rbs +2 -2
  90. data/sig/ffi/struct_by_reference.rbs +1 -1
  91. data/sig/ffi.rbs +4 -1
  92. data.tar.gz.sig +0 -0
  93. metadata +25 -339
  94. metadata.gz.sig +0 -0
  95. data/ext/ffi_c/libffi/.allow-ai-service +0 -0
  96. data/ext/ffi_c/libffi/.appveyor/site.exp +0 -16
  97. data/ext/ffi_c/libffi/.appveyor/unix-noexec.exp +0 -7
  98. data/ext/ffi_c/libffi/.appveyor.yml +0 -84
  99. data/ext/ffi_c/libffi/.ci/ar-lib +0 -270
  100. data/ext/ffi_c/libffi/.ci/bfin-sim.exp +0 -58
  101. data/ext/ffi_c/libffi/.ci/build-cross-in-container.sh +0 -18
  102. data/ext/ffi_c/libffi/.ci/build-in-container.sh +0 -10
  103. data/ext/ffi_c/libffi/.ci/build.sh +0 -124
  104. data/ext/ffi_c/libffi/.ci/compile +0 -351
  105. data/ext/ffi_c/libffi/.ci/install.sh +0 -78
  106. data/ext/ffi_c/libffi/.ci/m32r-sim.exp +0 -58
  107. data/ext/ffi_c/libffi/.ci/moxie-sim.exp +0 -60
  108. data/ext/ffi_c/libffi/.ci/msvs-detect +0 -1103
  109. data/ext/ffi_c/libffi/.ci/or1k-sim.exp +0 -58
  110. data/ext/ffi_c/libffi/.ci/powerpc-eabisim.exp +0 -58
  111. data/ext/ffi_c/libffi/.ci/site.exp +0 -29
  112. data/ext/ffi_c/libffi/.ci/wine-sim.exp +0 -55
  113. data/ext/ffi_c/libffi/.circleci/config.yml +0 -156
  114. data/ext/ffi_c/libffi/.gitattributes +0 -4
  115. data/ext/ffi_c/libffi/.github/issue_template.md +0 -10
  116. data/ext/ffi_c/libffi/.github/workflows/build.yml +0 -479
  117. data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +0 -172
  118. data/ext/ffi_c/libffi/.gitignore +0 -46
  119. data/ext/ffi_c/libffi/src/nios2/ffi.c +0 -304
  120. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +0 -52
  121. data/ext/ffi_c/libffi/src/nios2/sysv.S +0 -136
  122. data/ext/ffi_c/libffi/testsuite/Makefile.am +0 -87
  123. data/ext/ffi_c/libffi/testsuite/config/default.exp +0 -1
  124. data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +0 -54
  125. data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +0 -63
  126. data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +0 -86
  127. data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +0 -48
  128. data/ext/ffi_c/libffi/testsuite/emscripten/test.html +0 -7
  129. data/ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py +0 -51
  130. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +0 -682
  131. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +0 -283
  132. data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +0 -45
  133. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +0 -28
  134. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +0 -78
  135. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +0 -50
  136. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +0 -63
  137. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +0 -1746
  138. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +0 -2885
  139. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +0 -747
  140. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +0 -46
  141. data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +0 -46
  142. data/ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c +0 -41
  143. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +0 -54
  144. data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +0 -99
  145. data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +0 -108
  146. data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +0 -114
  147. data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +0 -119
  148. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +0 -26
  149. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +0 -163
  150. data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +0 -59
  151. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +0 -60
  152. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +0 -61
  153. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +0 -74
  154. data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +0 -62
  155. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +0 -110
  156. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +0 -59
  157. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +0 -57
  158. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +0 -70
  159. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +0 -78
  160. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -52
  161. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +0 -46
  162. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +0 -127
  163. data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +0 -59
  164. data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc_tc.c +0 -114
  165. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +0 -36
  166. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +0 -43
  167. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +0 -42
  168. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +0 -35
  169. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +0 -36
  170. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +0 -49
  171. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +0 -42
  172. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +0 -34
  173. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +0 -41
  174. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +0 -48
  175. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +0 -36
  176. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +0 -42
  177. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +0 -38
  178. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +0 -42
  179. data/ext/ffi_c/libffi/testsuite/libffi.call/s55.c +0 -60
  180. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +0 -43
  181. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +0 -49
  182. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +0 -49
  183. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +0 -55
  184. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +0 -67
  185. data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +0 -57
  186. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +0 -67
  187. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +0 -60
  188. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +0 -64
  189. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +0 -66
  190. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +0 -64
  191. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +0 -74
  192. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +0 -81
  193. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +0 -68
  194. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c +0 -63
  195. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c +0 -65
  196. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c +0 -65
  197. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c +0 -67
  198. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c +0 -67
  199. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c +0 -93
  200. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c +0 -61
  201. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c +0 -63
  202. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c +0 -90
  203. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +0 -61
  204. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +0 -78
  205. data/ext/ffi_c/libffi/testsuite/libffi.call/va_2.c +0 -220
  206. data/ext/ffi_c/libffi/testsuite/libffi.call/va_3.c +0 -154
  207. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +0 -134
  208. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +0 -134
  209. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +0 -140
  210. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp +0 -67
  211. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn0.c +0 -90
  212. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn1.c +0 -83
  213. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn2.c +0 -83
  214. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn3.c +0 -102
  215. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn4.c +0 -91
  216. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn5.c +0 -94
  217. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn6.c +0 -92
  218. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_loc_fn0.c +0 -96
  219. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_simple.c +0 -61
  220. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_12byte.c +0 -112
  221. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_16byte.c +0 -117
  222. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_18byte.c +0 -120
  223. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_19byte.c +0 -131
  224. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_1_1byte.c +0 -93
  225. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte.c +0 -109
  226. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte1.c +0 -113
  227. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_24byte.c +0 -145
  228. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_2byte.c +0 -103
  229. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3_1byte.c +0 -114
  230. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte1.c +0 -103
  231. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte2.c +0 -103
  232. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +0 -113
  233. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4_1byte.c +0 -120
  234. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4byte.c +0 -103
  235. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5_1_byte.c +0 -137
  236. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5byte.c +0 -116
  237. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_64byte.c +0 -148
  238. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6_1_byte.c +0 -140
  239. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6byte.c +0 -121
  240. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7_1_byte.c +0 -155
  241. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7byte.c +0 -121
  242. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_8byte.c +0 -102
  243. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte1.c +0 -103
  244. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte2.c +0 -103
  245. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_double.c +0 -111
  246. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_float.c +0 -109
  247. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble.c +0 -111
  248. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c +0 -147
  249. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c +0 -152
  250. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_pointer.c +0 -113
  251. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint16.c +0 -108
  252. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint32.c +0 -106
  253. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint64.c +0 -109
  254. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint16.c +0 -108
  255. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint32.c +0 -109
  256. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint64.c +0 -111
  257. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_dbls_struct.c +0 -68
  258. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double.c +0 -43
  259. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double_va.c +0 -69
  260. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_float.c +0 -46
  261. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble.c +0 -115
  262. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble_va.c +0 -80
  263. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_args.c +0 -70
  264. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c +0 -55
  265. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_schar.c +0 -78
  266. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshort.c +0 -79
  267. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +0 -94
  268. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_uchar.c +0 -99
  269. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushort.c +0 -78
  270. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +0 -94
  271. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer.c +0 -79
  272. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer_stack.c +0 -152
  273. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_schar.c +0 -47
  274. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sint.c +0 -44
  275. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sshort.c +0 -45
  276. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +0 -125
  277. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar.c +0 -45
  278. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint.c +0 -47
  279. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +0 -49
  280. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +0 -49
  281. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulonglong.c +0 -49
  282. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort.c +0 -46
  283. data/ext/ffi_c/libffi/testsuite/libffi.closures/err_bad_abi.c +0 -36
  284. data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +0 -1
  285. data/ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c +0 -343
  286. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct.c +0 -175
  287. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct1.c +0 -161
  288. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct10.c +0 -146
  289. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +0 -137
  290. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c +0 -86
  291. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c +0 -115
  292. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct2.c +0 -119
  293. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct3.c +0 -120
  294. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct4.c +0 -120
  295. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct5.c +0 -121
  296. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct6.c +0 -142
  297. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct7.c +0 -120
  298. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct8.c +0 -142
  299. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct9.c +0 -142
  300. data/ext/ffi_c/libffi/testsuite/libffi.closures/problem1.c +0 -90
  301. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c +0 -86
  302. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c +0 -102
  303. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c +0 -101
  304. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large.c +0 -145
  305. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large2.c +0 -148
  306. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium.c +0 -124
  307. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium2.c +0 -125
  308. data/ext/ffi_c/libffi/testsuite/libffi.closures/testclosure.c +0 -75
  309. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest.cc +0 -118
  310. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc +0 -55
  311. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +0 -91
  312. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +0 -10
  313. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +0 -10
  314. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +0 -10
  315. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +0 -42
  316. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +0 -10
  317. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +0 -10
  318. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +0 -10
  319. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +0 -71
  320. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +0 -10
  321. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +0 -10
  322. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +0 -10
  323. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +0 -80
  324. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +0 -10
  325. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +0 -16
  326. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +0 -10
  327. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp +0 -36
  328. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +0 -51
  329. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +0 -7
  330. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +0 -7
  331. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +0 -7
  332. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +0 -10
  333. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +0 -10
  334. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +0 -86
  335. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +0 -10
  336. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +0 -1
  337. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +0 -78
  338. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +0 -10
  339. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +0 -10
  340. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +0 -10
  341. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +0 -37
  342. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +0 -41
  343. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +0 -10
  344. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +0 -10
  345. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +0 -10
  346. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +0 -44
  347. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +0 -10
  348. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +0 -10
  349. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +0 -10
  350. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +0 -10
  351. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +0 -10
  352. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +0 -10
  353. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +0 -34
  354. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +0 -28
  355. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +0 -1
  356. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +0 -36
  357. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +0 -19
  358. data/lib/ffi/tools/types_generator.rb +0 -137
  359. data/rakelib/ffi_gem_helper.rb +0 -65
@@ -1,7 +0,0 @@
1
- /* -*-c-*- */
2
- /* Complex base type. */
3
- #define T_FFI_TYPE ffi_type_complex_double
4
- /* C type corresponding to the base type. */
5
- #define T_C_TYPE double
6
- /* C cast for a value of type T_C_TYPE that is passed to printf. */
7
- #define T_CONV
@@ -1,7 +0,0 @@
1
- /* -*-c-*- */
2
- /* Complex base type. */
3
- #define T_FFI_TYPE ffi_type_complex_float
4
- /* C type corresponding to the base type. */
5
- #define T_C_TYPE float
6
- /* C cast for a value of type T_C_TYPE that is passed to printf. */
7
- #define T_CONV (double)
@@ -1,7 +0,0 @@
1
- /* -*-c-*- */
2
- /* Complex base type. */
3
- #define T_FFI_TYPE ffi_type_complex_longdouble
4
- /* C type corresponding to the base type. */
5
- #define T_C_TYPE long double
6
- /* C cast for a value of type T_C_TYPE that is passed to printf. */
7
- #define T_CONV
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check complex types.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_double.inc"
10
- #include "complex.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check complex types.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_float.inc"
10
- #include "complex.inc"
@@ -1,86 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check non-standard complex types.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "ffitest.h"
10
- #include "ffi.h"
11
- #include <complex.h>
12
-
13
- _Complex int f_complex(_Complex int c, int x, int *py)
14
- {
15
- __real__ c = -2 * __real__ c;
16
- __imag__ c = __imag__ c + 1;
17
- *py += x;
18
- return c;
19
- }
20
-
21
- /*
22
- * This macro can be used to define new complex type descriptors
23
- * in a platform independent way.
24
- *
25
- * name: Name of the new descriptor is ffi_type_complex_<name>.
26
- * type: The C base type of the complex type.
27
- */
28
- #define FFI_COMPLEX_TYPEDEF(name, type, ffitype) \
29
- static ffi_type *ffi_elements_complex_##name [2] = { \
30
- (ffi_type *)(&ffitype), NULL \
31
- }; \
32
- struct struct_align_complex_##name { \
33
- char c; \
34
- _Complex type x; \
35
- }; \
36
- ffi_type ffi_type_complex_##name = { \
37
- sizeof(_Complex type), \
38
- offsetof(struct struct_align_complex_##name, x), \
39
- FFI_TYPE_COMPLEX, \
40
- (ffi_type **)ffi_elements_complex_##name \
41
- }
42
-
43
- /* Define new complex type descriptors using the macro: */
44
- /* ffi_type_complex_sint */
45
- FFI_COMPLEX_TYPEDEF(sint, int, ffi_type_sint);
46
- /* ffi_type_complex_uchar */
47
- FFI_COMPLEX_TYPEDEF(uchar, unsigned char, ffi_type_uint8);
48
-
49
- int main (void)
50
- {
51
- ffi_cif cif;
52
- ffi_type *args[MAX_ARGS];
53
- void *values[MAX_ARGS];
54
-
55
- _Complex int tc_arg;
56
- _Complex int tc_result;
57
- int tc_int_arg_x;
58
- int tc_y;
59
- int *tc_ptr_arg_y = &tc_y;
60
-
61
- args[0] = &ffi_type_complex_sint;
62
- args[1] = &ffi_type_sint;
63
- args[2] = &ffi_type_pointer;
64
- values[0] = &tc_arg;
65
- values[1] = &tc_int_arg_x;
66
- values[2] = &tc_ptr_arg_y;
67
-
68
- /* Initialize the cif */
69
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &ffi_type_complex_sint, args)
70
- == FFI_OK);
71
-
72
- tc_arg = 1 + 7 * I;
73
- tc_int_arg_x = 1234;
74
- tc_y = 9876;
75
- ffi_call(&cif, FFI_FN(f_complex), &tc_result, values);
76
-
77
- printf ("%d,%di %d,%di, x %d 1234, y %d 11110\n",
78
- (int)tc_result, (int)(tc_result * -I), 2, 8, tc_int_arg_x, tc_y);
79
- /* dg-output "-2,8i 2,8i, x 1234 1234, y 11110 11110" */
80
- CHECK (creal (tc_result) == -2);
81
- CHECK (cimag (tc_result) == 8);
82
- CHECK (tc_int_arg_x == 1234);
83
- CHECK (*tc_ptr_arg_y == 11110);
84
-
85
- exit(0);
86
- }
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check complex types.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_longdouble.inc"
10
- #include "complex.inc"
@@ -1 +0,0 @@
1
- #include "../libffi.call/ffitest.h"
@@ -1,78 +0,0 @@
1
- /* -*-c-*- */
2
- #include "ffitest.h"
3
-
4
- #include <stdlib.h>
5
- #include <complex.h>
6
-
7
- static _Complex T_C_TYPE many(_Complex T_C_TYPE c1,
8
- _Complex T_C_TYPE c2,
9
- _Complex T_C_TYPE c3,
10
- _Complex T_C_TYPE c4,
11
- _Complex T_C_TYPE c5,
12
- _Complex T_C_TYPE c6,
13
- _Complex T_C_TYPE c7,
14
- _Complex T_C_TYPE c8,
15
- _Complex T_C_TYPE c9,
16
- _Complex T_C_TYPE c10,
17
- _Complex T_C_TYPE c11,
18
- _Complex T_C_TYPE c12,
19
- _Complex T_C_TYPE c13)
20
- {
21
- printf("0 :%f,%fi\n"
22
- "1 :%f,%fi\n"
23
- "2 :%f,%fi\n"
24
- "3 :%f,%fi\n"
25
- "4 :%f,%fi\n"
26
- "5 :%f,%fi\n"
27
- "6 :%f,%fi\n"
28
- "7 :%f,%fi\n"
29
- "8 :%f,%fi\n"
30
- "9 :%f,%fi\n"
31
- "10:%f,%fi\n"
32
- "11:%f,%fi\n"
33
- "12:%f,%fi\n",
34
- T_CONV creal (c1), T_CONV cimag (c1),
35
- T_CONV creal (c2), T_CONV cimag (c2),
36
- T_CONV creal (c3), T_CONV cimag (c3),
37
- T_CONV creal (c4), T_CONV cimag (c4),
38
- T_CONV creal (c5), T_CONV cimag (c5),
39
- T_CONV creal (c6), T_CONV cimag (c6),
40
- T_CONV creal (c7), T_CONV cimag (c7),
41
- T_CONV creal (c8), T_CONV cimag (c8),
42
- T_CONV creal (c9), T_CONV cimag (c9),
43
- T_CONV creal (c10), T_CONV cimag (c10),
44
- T_CONV creal (c11), T_CONV cimag (c11),
45
- T_CONV creal (c12), T_CONV cimag (c12),
46
- T_CONV creal (c13), T_CONV cimag (c13));
47
-
48
- return (c1+c2-c3-c4+c5+c6+c7-c8-c9-c10-c11+c12+c13);
49
- }
50
-
51
- int main (void)
52
- {
53
- ffi_cif cif;
54
- ffi_type *args[13];
55
- void *values[13];
56
- _Complex T_C_TYPE ca[13];
57
- _Complex T_C_TYPE c, cc;
58
- int i;
59
-
60
- for (i = 0; i < 13; i++)
61
- {
62
- args[i] = &T_FFI_TYPE;
63
- values[i] = &ca[i];
64
- ca[i] = i + (-20 - i) * I;
65
- }
66
-
67
- /* Initialize the cif */
68
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 13, &T_FFI_TYPE, args) == FFI_OK);
69
-
70
- ffi_call(&cif, FFI_FN(many), &c, values);
71
-
72
- cc = many(ca[0], ca[1], ca[2], ca[3], ca[4], ca[5], ca[6], ca[7], ca[8],
73
- ca[9], ca[10], ca[11], ca[12]);
74
- CHECK(creal (cc) == creal (c));
75
- CHECK(cimag (cc) == cimag (c));
76
-
77
- exit(0);
78
- }
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check return value complex, with many arguments
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_double.inc"
10
- #include "many_complex.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check return value complex, with many arguments
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_float.inc"
10
- #include "many_complex.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check return value complex, with many arguments
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_longdouble.inc"
10
- #include "many_complex.inc"
@@ -1,37 +0,0 @@
1
- /* -*-c-*- */
2
- #include "ffitest.h"
3
- #include <complex.h>
4
-
5
- static _Complex T_C_TYPE return_c(_Complex T_C_TYPE c)
6
- {
7
- printf ("%f,%fi\n", T_CONV creal (c), T_CONV cimag (c));
8
- return 2 * c;
9
- }
10
- int main (void)
11
- {
12
- ffi_cif cif;
13
- ffi_type *args[MAX_ARGS];
14
- void *values[MAX_ARGS];
15
- _Complex T_C_TYPE c, rc, rc2;
16
- T_C_TYPE cr, ci;
17
-
18
- args[0] = &T_FFI_TYPE;
19
- values[0] = &c;
20
-
21
- /* Initialize the cif */
22
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
23
- &T_FFI_TYPE, args) == FFI_OK);
24
-
25
- for (cr = -127.0; cr < 127; cr++)
26
- {
27
- ci = 1000.0 - cr;
28
- c = cr + ci * I;
29
- ffi_call(&cif, FFI_FN(return_c), &rc, values);
30
- rc2 = return_c(c);
31
- printf ("%f,%fi vs %f,%fi\n",
32
- T_CONV creal (rc), T_CONV cimag (rc),
33
- T_CONV creal (rc2), T_CONV cimag (rc2));
34
- CHECK(rc == 2 * c);
35
- }
36
- exit(0);
37
- }
@@ -1,41 +0,0 @@
1
- /* -*-c-*- */
2
- #include "ffitest.h"
3
- #include <complex.h>
4
-
5
- static _Complex T_C_TYPE return_c(_Complex T_C_TYPE c1, float fl2, unsigned int in3, _Complex T_C_TYPE c4)
6
- {
7
- return c1 + fl2 + in3 + c4;
8
- }
9
- int main (void)
10
- {
11
- ffi_cif cif;
12
- ffi_type *args[MAX_ARGS];
13
- void *values[MAX_ARGS];
14
- _Complex T_C_TYPE c1, c4, rc, rc2;
15
- float fl2;
16
- unsigned int in3;
17
- args[0] = &T_FFI_TYPE;
18
- args[1] = &ffi_type_float;
19
- args[2] = &ffi_type_uint;
20
- args[3] = &T_FFI_TYPE;
21
- values[0] = &c1;
22
- values[1] = &fl2;
23
- values[2] = &in3;
24
- values[3] = &c4;
25
-
26
- /* Initialize the cif */
27
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4,
28
- &T_FFI_TYPE, args) == FFI_OK);
29
- c1 = 127.0 + 255.0 * I;
30
- fl2 = 128.0;
31
- in3 = 255;
32
- c4 = 512.7 + 1024.1 * I;
33
-
34
- ffi_call(&cif, FFI_FN(return_c), &rc, values);
35
- rc2 = return_c(c1, fl2, in3, c4);
36
- printf ("%f,%fi vs %f,%fi\n",
37
- T_CONV creal (rc), T_CONV cimag (rc),
38
- T_CONV creal (rc2), T_CONV cimag (rc2));
39
- CHECK(rc == rc2);
40
- exit(0);
41
- }
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check return value complex.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_double.inc"
10
- #include "return_complex1.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check return value complex.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_float.inc"
10
- #include "return_complex1.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check return value complex.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_longdouble.inc"
10
- #include "return_complex1.inc"
@@ -1,44 +0,0 @@
1
- /* -*-c-*- */
2
- #include "ffitest.h"
3
- #include <complex.h>
4
-
5
- _Complex T_C_TYPE
6
- return_c(_Complex T_C_TYPE c1, _Complex T_C_TYPE c2,
7
- unsigned int in3, _Complex T_C_TYPE c4)
8
- {
9
- volatile _Complex T_C_TYPE r = c1 + c2 + in3 + c4;
10
- return r;
11
- }
12
-
13
- int main (void)
14
- {
15
- ffi_cif cif;
16
- ffi_type *args[MAX_ARGS];
17
- void *values[MAX_ARGS];
18
- _Complex T_C_TYPE c1, c2, c4, rc, rc2;
19
- unsigned int in3;
20
- args[0] = &T_FFI_TYPE;
21
- args[1] = &T_FFI_TYPE;
22
- args[2] = &ffi_type_uint;
23
- args[3] = &T_FFI_TYPE;
24
- values[0] = &c1;
25
- values[1] = &c2;
26
- values[2] = &in3;
27
- values[3] = &c4;
28
-
29
- /* Initialize the cif */
30
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4,
31
- &T_FFI_TYPE, args) == FFI_OK);
32
- c1 = 127.0 + 255.0 * I;
33
- c2 = 128.0 + 256.0;
34
- in3 = 255;
35
- c4 = 512.7 + 1024.1 * I;
36
-
37
- ffi_call(&cif, FFI_FN(return_c), &rc, values);
38
- rc2 = return_c(c1, c2, in3, c4);
39
- printf ("%f,%fi vs %f,%fi\n",
40
- T_CONV creal (rc), T_CONV cimag (rc),
41
- T_CONV creal (rc2), T_CONV cimag (rc2));
42
- CHECK(rc == rc2);
43
- exit(0);
44
- }
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check return value complex.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_double.inc"
10
- #include "return_complex2.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check return value complex.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_float.inc"
10
- #include "return_complex2.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check return value complex.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_longdouble.inc"
10
- #include "return_complex2.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check return value complex.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_double.inc"
10
- #include "return_complex.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check return value complex.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_float.inc"
10
- #include "return_complex.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check return value complex.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "complex_defs_longdouble.inc"
10
- #include "return_complex.inc"
@@ -1,34 +0,0 @@
1
- /* { dg-do run } */
2
-
3
- #include "static-chain.h"
4
-
5
- #if defined(__GNUC__) && !defined(__clang__) && defined(STATIC_CHAIN_REG)
6
-
7
- #include "ffitest.h"
8
-
9
- /* Blatent assumption here that the prologue doesn't clobber the
10
- static chain for trivial functions. If this is not true, don't
11
- define STATIC_CHAIN_REG, and we'll test what we can via other tests. */
12
- void *doit(void)
13
- {
14
- register void *chain __asm__(STATIC_CHAIN_REG);
15
- return chain;
16
- }
17
-
18
- int main()
19
- {
20
- ffi_cif cif;
21
- void *result;
22
-
23
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 0, &ffi_type_pointer, NULL) == FFI_OK);
24
-
25
- ffi_call_go(&cif, FFI_FN(doit), &result, NULL, &result);
26
-
27
- CHECK(result == &result);
28
-
29
- return 0;
30
- }
31
-
32
- #else /* UNSUPPORTED */
33
- int main() { return 0; }
34
- #endif
@@ -1,28 +0,0 @@
1
- /* { dg-do run } */
2
-
3
- #include "ffitest.h"
4
-
5
- void doit(ffi_cif *cif, void *rvalue, void **avalue, void *closure)
6
- {
7
- (void)cif;
8
- (void)avalue;
9
- *(void **)rvalue = closure;
10
- }
11
-
12
- typedef void * (*FN)(void);
13
-
14
- int main()
15
- {
16
- ffi_cif cif;
17
- ffi_go_closure cl;
18
- void *result;
19
-
20
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 0, &ffi_type_pointer, NULL) == FFI_OK);
21
- CHECK(ffi_prep_go_closure(&cl, &cif, doit) == FFI_OK);
22
-
23
- ffi_call_go(&cif, FFI_FN(*(FN *)&cl), &result, NULL, &cl);
24
-
25
- CHECK(result == &cl);
26
-
27
- exit(0);
28
- }
@@ -1 +0,0 @@
1
- #include "../libffi.call/ffitest.h"
@@ -1,36 +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
- set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.{c,cc}]]
23
-
24
- if { [libffi_feature_test "#ifdef FFI_GO_CLOSURES"] } {
25
- run-many-tests $tlist ""
26
- } else {
27
- foreach test $tlist {
28
- unsupported "$test"
29
- }
30
- }
31
-
32
- dg-finish
33
-
34
- # Local Variables:
35
- # tcl-indent-level:4
36
- # End:
@@ -1,19 +0,0 @@
1
- #ifdef __aarch64__
2
- # define STATIC_CHAIN_REG "x18"
3
- #elif defined(__alpha__)
4
- # define STATIC_CHAIN_REG "$1"
5
- #elif defined(__arm__)
6
- # define STATIC_CHAIN_REG "ip"
7
- #elif defined(__sparc__)
8
- # if defined(__arch64__) || defined(__sparcv9)
9
- # define STATIC_CHAIN_REG "g5"
10
- # else
11
- # define STATIC_CHAIN_REG "g2"
12
- # endif
13
- #elif defined(__x86_64__)
14
- # define STATIC_CHAIN_REG "r10"
15
- #elif defined(__i386__)
16
- # ifndef ABI_NUM
17
- # define STATIC_CHAIN_REG "ecx" /* FFI_DEFAULT_ABI only */
18
- # endif
19
- #endif