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,80 +0,0 @@
1
- /* -*-c-*- */
2
- #include "ffitest.h"
3
- #include <stdio.h>
4
- #include <stdlib.h>
5
- #include <stdarg.h>
6
- #include <complex.h>
7
-
8
- static _Complex T_C_TYPE gComplexValue1 = 1 + 2 * I;
9
- static _Complex T_C_TYPE gComplexValue2 = 3 + 4 * I;
10
-
11
- static int cls_variadic(const char *format, ...)
12
- {
13
- va_list ap;
14
- _Complex T_C_TYPE p1, p2;
15
-
16
- va_start (ap, format);
17
- p1 = va_arg (ap, _Complex T_C_TYPE);
18
- p2 = va_arg (ap, _Complex T_C_TYPE);
19
- va_end (ap);
20
-
21
- return printf(format, T_CONV creal (p1), T_CONV cimag (p1),
22
- T_CONV creal (p2), T_CONV cimag (p2));
23
- }
24
-
25
- static void
26
- cls_complex_va_fn(ffi_cif* cif __UNUSED__, void* resp,
27
- void** args, void* userdata __UNUSED__)
28
- {
29
- char* format = *(char**)args[0];
30
- gComplexValue1 = *(_Complex T_C_TYPE*)args[1];
31
- gComplexValue2 = *(_Complex T_C_TYPE*)args[2];
32
-
33
- *(ffi_arg*)resp =
34
- printf(format,
35
- T_CONV creal (gComplexValue1), T_CONV cimag (gComplexValue1),
36
- T_CONV creal (gComplexValue2), T_CONV cimag (gComplexValue2));
37
- }
38
-
39
- int main (void)
40
- {
41
- ffi_cif cif;
42
- void *code;
43
- ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
44
- void* args[4];
45
- ffi_type* arg_types[4];
46
- char *format = "%.1f,%.1fi %.1f,%.1fi\n";
47
-
48
- _Complex T_C_TYPE complexArg1 = 1.0 + 22.0 *I;
49
- _Complex T_C_TYPE complexArg2 = 333.0 + 4444.0 *I;
50
- ffi_arg res = 0;
51
-
52
- arg_types[0] = &ffi_type_pointer;
53
- arg_types[1] = &T_FFI_TYPE;
54
- arg_types[2] = &T_FFI_TYPE;
55
- arg_types[3] = NULL;
56
-
57
- /* This printf call is variadic */
58
- CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 3, &ffi_type_sint,
59
- arg_types) == FFI_OK);
60
-
61
- args[0] = &format;
62
- args[1] = &complexArg1;
63
- args[2] = &complexArg2;
64
- args[3] = NULL;
65
-
66
- ffi_call(&cif, FFI_FN(cls_variadic), &res, args);
67
- printf("res: %d\n", (int) res);
68
- CHECK (res == 24);
69
-
70
- CHECK(ffi_prep_closure_loc(pcl, &cif, cls_complex_va_fn, NULL, code)
71
- == FFI_OK);
72
-
73
- res = ((int(*)(char *, ...))(code))(format, complexArg1, complexArg2);
74
- CHECK (gComplexValue1 == complexArg1);
75
- CHECK (gComplexValue2 == complexArg2);
76
- printf("res: %d\n", (int) res);
77
- CHECK (res == 24);
78
-
79
- exit(0);
80
- }
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call, closure_call
2
- Purpose: Test complex' passed in variable argument lists.
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 "cls_complex_va.inc"
@@ -1,16 +0,0 @@
1
- /* Area: ffi_call, closure_call
2
- Purpose: Test complex' passed in variable argument lists.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <vogt@linux.vnet.ibm.com>. */
6
-
7
- /* { dg-do run } */
8
-
9
- /* Alpha splits _Complex into two arguments. It's illegal to pass
10
- float through varargs, so _Complex float goes badly. In sort of
11
- gets passed as _Complex double, but the compiler doesn't agree
12
- with itself on this issue. */
13
- /* { dg-do run { xfail alpha*-*-* } } */
14
-
15
- #include "complex_defs_float.inc"
16
- #include "cls_complex_va.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call, closure_call
2
- Purpose: Test complex' passed in variable argument lists.
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 "cls_complex_va.inc"
@@ -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_TARGET_HAS_COMPLEX_TYPE"] } {
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,51 +0,0 @@
1
- /* -*-c-*-*/
2
- #include "ffitest.h"
3
- #include <complex.h>
4
-
5
- static _Complex T_C_TYPE f_complex(_Complex T_C_TYPE c, int x, int *py)
6
- {
7
- c = -(2 * creal (c)) + (cimag (c) + 1)* I;
8
- *py += x;
9
-
10
- return c;
11
- }
12
-
13
- int main (void)
14
- {
15
- ffi_cif cif;
16
- ffi_type *args[MAX_ARGS];
17
- void *values[MAX_ARGS];
18
-
19
- _Complex T_C_TYPE tc_arg;
20
- _Complex T_C_TYPE tc_result;
21
- int tc_int_arg_x;
22
- int tc_y;
23
- int *tc_ptr_arg_y = &tc_y;
24
-
25
- args[0] = &T_FFI_TYPE;
26
- args[1] = &ffi_type_sint;
27
- args[2] = &ffi_type_pointer;
28
- values[0] = &tc_arg;
29
- values[1] = &tc_int_arg_x;
30
- values[2] = &tc_ptr_arg_y;
31
-
32
- /* Initialize the cif */
33
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3,
34
- &T_FFI_TYPE, args) == FFI_OK);
35
-
36
- tc_arg = 1 + 7 * I;
37
- tc_int_arg_x = 1234;
38
- tc_y = 9876;
39
- ffi_call(&cif, FFI_FN(f_complex), &tc_result, values);
40
-
41
- printf ("%f,%fi %f,%fi, x %d 1234, y %d 11110\n",
42
- T_CONV creal (tc_result), T_CONV cimag (tc_result),
43
- T_CONV creal (2.0), T_CONV creal (8.0), tc_int_arg_x, tc_y);
44
-
45
- CHECK (creal (tc_result) == -2);
46
- CHECK (cimag (tc_result) == 8);
47
- CHECK (tc_int_arg_x == 1234);
48
- CHECK (*tc_ptr_arg_y == 11110);
49
-
50
- exit(0);
51
- }
@@ -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"