ffi 1.17.3 → 1.17.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +10 -1
  4. data/ext/ffi_c/StructLayout.c +129 -12
  5. data/ffi.gemspec +3 -1
  6. data/lib/ffi/version.rb +1 -1
  7. data.tar.gz.sig +0 -0
  8. metadata +1 -269
  9. metadata.gz.sig +0 -0
  10. data/ext/ffi_c/libffi/.allow-ai-service +0 -0
  11. data/ext/ffi_c/libffi/.ci/Containerfile.ppc64le +0 -12
  12. data/ext/ffi_c/libffi/.ci/ar-lib +0 -270
  13. data/ext/ffi_c/libffi/.ci/bfin-sim.exp +0 -58
  14. data/ext/ffi_c/libffi/.ci/build-cross-in-container.sh +0 -18
  15. data/ext/ffi_c/libffi/.ci/build-in-container.sh +0 -10
  16. data/ext/ffi_c/libffi/.ci/build.sh +0 -129
  17. data/ext/ffi_c/libffi/.ci/compile +0 -351
  18. data/ext/ffi_c/libffi/.ci/install.sh +0 -74
  19. data/ext/ffi_c/libffi/.ci/m32r-sim.exp +0 -58
  20. data/ext/ffi_c/libffi/.ci/moxie-sim.exp +0 -60
  21. data/ext/ffi_c/libffi/.ci/msvs-detect +0 -1103
  22. data/ext/ffi_c/libffi/.ci/or1k-sim.exp +0 -58
  23. data/ext/ffi_c/libffi/.ci/powerpc-eabisim.exp +0 -58
  24. data/ext/ffi_c/libffi/.ci/site.exp +0 -35
  25. data/ext/ffi_c/libffi/.ci/unix-noexec.exp +0 -7
  26. data/ext/ffi_c/libffi/.ci/wine-sim.exp +0 -55
  27. data/ext/ffi_c/libffi/.gail-labels +0 -44
  28. data/ext/ffi_c/libffi/.gitattributes +0 -4
  29. data/ext/ffi_c/libffi/.github/issue_template.md +0 -10
  30. data/ext/ffi_c/libffi/.github/workflows/build.yml +0 -358
  31. data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +0 -215
  32. data/ext/ffi_c/libffi/.github/workflows/label-new-issue.yaml +0 -15
  33. data/ext/ffi_c/libffi/.github/workflows/tarball.yml +0 -55
  34. data/ext/ffi_c/libffi/.gitignore +0 -46
  35. data/ext/ffi_c/libffi/testsuite/Makefile.am +0 -89
  36. data/ext/ffi_c/libffi/testsuite/config/default.exp +0 -1
  37. data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +0 -34
  38. data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +0 -46
  39. data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +0 -86
  40. data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +0 -23
  41. data/ext/ffi_c/libffi/testsuite/emscripten/test.html +0 -7
  42. data/ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py +0 -51
  43. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +0 -695
  44. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +0 -283
  45. data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +0 -45
  46. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +0 -28
  47. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +0 -78
  48. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +0 -50
  49. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +0 -63
  50. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +0 -1746
  51. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +0 -2885
  52. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +0 -747
  53. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +0 -46
  54. data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +0 -46
  55. data/ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c +0 -41
  56. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +0 -54
  57. data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +0 -99
  58. data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +0 -108
  59. data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +0 -114
  60. data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +0 -119
  61. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +0 -26
  62. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +0 -166
  63. data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +0 -59
  64. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +0 -60
  65. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +0 -61
  66. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +0 -74
  67. data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +0 -62
  68. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +0 -110
  69. data/ext/ffi_c/libffi/testsuite/libffi.call/longjmp.c +0 -60
  70. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +0 -59
  71. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +0 -57
  72. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +0 -70
  73. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +0 -78
  74. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -52
  75. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +0 -46
  76. data/ext/ffi_c/libffi/testsuite/libffi.call/overread.c +0 -54
  77. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +0 -127
  78. data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +0 -59
  79. data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc_tc.c +0 -114
  80. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +0 -36
  81. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +0 -43
  82. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +0 -42
  83. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +0 -35
  84. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +0 -36
  85. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +0 -49
  86. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +0 -42
  87. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +0 -34
  88. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +0 -41
  89. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +0 -48
  90. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +0 -36
  91. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +0 -42
  92. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +0 -38
  93. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +0 -42
  94. data/ext/ffi_c/libffi/testsuite/libffi.call/s55.c +0 -60
  95. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +0 -43
  96. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +0 -49
  97. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +0 -49
  98. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +0 -55
  99. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +0 -67
  100. data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +0 -57
  101. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +0 -67
  102. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +0 -60
  103. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +0 -64
  104. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +0 -66
  105. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +0 -64
  106. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +0 -74
  107. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +0 -81
  108. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +0 -68
  109. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c +0 -63
  110. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c +0 -65
  111. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c +0 -65
  112. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c +0 -67
  113. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c +0 -67
  114. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c +0 -93
  115. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c +0 -61
  116. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_int_float.c +0 -88
  117. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c +0 -63
  118. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c +0 -90
  119. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +0 -61
  120. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +0 -78
  121. data/ext/ffi_c/libffi/testsuite/libffi.call/va_2.c +0 -220
  122. data/ext/ffi_c/libffi/testsuite/libffi.call/va_3.c +0 -154
  123. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +0 -134
  124. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +0 -135
  125. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +0 -141
  126. data/ext/ffi_c/libffi/testsuite/libffi.call/x32.c +0 -31
  127. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp +0 -67
  128. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn0.c +0 -90
  129. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn1.c +0 -83
  130. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn2.c +0 -83
  131. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn3.c +0 -102
  132. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn4.c +0 -91
  133. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn5.c +0 -94
  134. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn6.c +0 -92
  135. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_loc_fn0.c +0 -96
  136. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_simple.c +0 -61
  137. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_12byte.c +0 -112
  138. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_16byte.c +0 -117
  139. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_18byte.c +0 -120
  140. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_19byte.c +0 -131
  141. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_1_1byte.c +0 -93
  142. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte.c +0 -109
  143. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte1.c +0 -113
  144. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_24byte.c +0 -145
  145. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_2byte.c +0 -103
  146. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3_1byte.c +0 -114
  147. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte1.c +0 -103
  148. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte2.c +0 -103
  149. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +0 -113
  150. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4_1byte.c +0 -120
  151. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4byte.c +0 -103
  152. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5_1_byte.c +0 -137
  153. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5byte.c +0 -116
  154. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_64byte.c +0 -148
  155. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6_1_byte.c +0 -140
  156. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6byte.c +0 -121
  157. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7_1_byte.c +0 -155
  158. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7byte.c +0 -121
  159. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_8byte.c +0 -102
  160. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte1.c +0 -103
  161. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte2.c +0 -103
  162. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_double.c +0 -111
  163. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_float.c +0 -109
  164. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble.c +0 -111
  165. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c +0 -147
  166. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c +0 -152
  167. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_pointer.c +0 -113
  168. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint16.c +0 -108
  169. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint32.c +0 -106
  170. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint64.c +0 -109
  171. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint16.c +0 -108
  172. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint32.c +0 -109
  173. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint64.c +0 -111
  174. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_dbls_struct.c +0 -68
  175. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double.c +0 -43
  176. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double_va.c +0 -69
  177. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_float.c +0 -46
  178. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble.c +0 -115
  179. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble_va.c +0 -80
  180. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_args.c +0 -70
  181. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c +0 -55
  182. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_schar.c +0 -78
  183. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshort.c +0 -79
  184. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +0 -94
  185. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_uchar.c +0 -99
  186. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushort.c +0 -78
  187. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +0 -94
  188. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer.c +0 -79
  189. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer_stack.c +0 -152
  190. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_schar.c +0 -47
  191. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sint.c +0 -44
  192. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sshort.c +0 -45
  193. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +0 -125
  194. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar.c +0 -45
  195. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint.c +0 -47
  196. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +0 -49
  197. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +0 -49
  198. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulonglong.c +0 -49
  199. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort.c +0 -46
  200. data/ext/ffi_c/libffi/testsuite/libffi.closures/err_bad_abi.c +0 -36
  201. data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +0 -1
  202. data/ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c +0 -342
  203. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct.c +0 -175
  204. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct1.c +0 -161
  205. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct10.c +0 -146
  206. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +0 -137
  207. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c +0 -86
  208. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c +0 -115
  209. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct2.c +0 -119
  210. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct3.c +0 -120
  211. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct4.c +0 -120
  212. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct5.c +0 -121
  213. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct6.c +0 -142
  214. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct7.c +0 -120
  215. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct8.c +0 -142
  216. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct9.c +0 -142
  217. data/ext/ffi_c/libffi/testsuite/libffi.closures/problem1.c +0 -90
  218. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c +0 -86
  219. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c +0 -102
  220. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c +0 -101
  221. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large.c +0 -145
  222. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large2.c +0 -148
  223. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium.c +0 -124
  224. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium2.c +0 -125
  225. data/ext/ffi_c/libffi/testsuite/libffi.closures/testclosure.c +0 -75
  226. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest.cc +0 -120
  227. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc +0 -57
  228. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +0 -91
  229. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +0 -10
  230. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +0 -10
  231. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +0 -10
  232. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +0 -42
  233. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +0 -10
  234. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +0 -10
  235. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +0 -10
  236. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +0 -71
  237. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +0 -10
  238. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +0 -10
  239. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +0 -10
  240. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +0 -80
  241. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +0 -10
  242. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +0 -16
  243. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +0 -10
  244. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp +0 -36
  245. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +0 -51
  246. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +0 -7
  247. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +0 -7
  248. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +0 -7
  249. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +0 -10
  250. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +0 -10
  251. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +0 -86
  252. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +0 -10
  253. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +0 -1
  254. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +0 -78
  255. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +0 -10
  256. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +0 -10
  257. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +0 -10
  258. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +0 -37
  259. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +0 -41
  260. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +0 -10
  261. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +0 -10
  262. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +0 -10
  263. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +0 -44
  264. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +0 -10
  265. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +0 -10
  266. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +0 -10
  267. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +0 -10
  268. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +0 -10
  269. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +0 -10
  270. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +0 -34
  271. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +0 -28
  272. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +0 -1
  273. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +0 -36
  274. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +0 -19
  275. data/ext/ffi_c/libffi/testsuite/libffi.threads/ffitest.h +0 -1
  276. data/ext/ffi_c/libffi/testsuite/libffi.threads/threads.exp +0 -50
  277. data/ext/ffi_c/libffi/testsuite/libffi.threads/tsan.c +0 -74
@@ -1,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"