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,125 +0,0 @@
1
- /* Area: ffi_call, closure_call
2
- Purpose: Check structure returning with different structure size.
3
- Depending on the ABI. Check bigger struct which overlaps
4
- the gp and fp register count on Darwin/AIX/ppc64.
5
- Limitations: none.
6
- PR: none.
7
- Originator: Blake Chaffin 6/21/2007 */
8
-
9
- /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
10
- /* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */
11
- #include "ffitest.h"
12
-
13
- typedef struct struct_72byte {
14
- double a;
15
- double b;
16
- double c;
17
- double d;
18
- double e;
19
- double f;
20
- double g;
21
- double h;
22
- long long i;
23
- } struct_72byte;
24
-
25
- static struct_72byte cls_struct_72byte_fn(
26
- struct_72byte b0,
27
- struct_72byte b1,
28
- struct_72byte b2,
29
- struct_72byte b3)
30
- {
31
- struct_72byte result;
32
-
33
- result.a = b0.a + b1.a + b2.a + b3.a;
34
- result.b = b0.b + b1.b + b2.b + b3.b;
35
- result.c = b0.c + b1.c + b2.c + b3.c;
36
- result.d = b0.d + b1.d + b2.d + b3.d;
37
- result.e = b0.e + b1.e + b2.e + b3.e;
38
- result.f = b0.f + b1.f + b2.f + b3.f;
39
- result.g = b0.g + b1.g + b2.g + b3.g;
40
- result.h = b0.h + b1.h + b2.h + b3.h;
41
- result.i = b0.i + b1.i + b2.i + b3.i;
42
-
43
- printf("%g %g %g %g %g %g %g %g %" PRIdLL "\n", result.a, result.b, result.c,
44
- result.d, result.e, result.f, result.g, result.h, result.i);
45
-
46
- return result;
47
- }
48
-
49
- static void
50
- cls_struct_72byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__)
51
- {
52
- struct_72byte b0, b1, b2, b3;
53
-
54
- b0 = *(struct_72byte*)(args[0]);
55
- b1 = *(struct_72byte*)(args[1]);
56
- b2 = *(struct_72byte*)(args[2]);
57
- b3 = *(struct_72byte*)(args[3]);
58
-
59
- *(struct_72byte*)resp = cls_struct_72byte_fn(b0, b1, b2, b3);
60
- }
61
-
62
- int main (void)
63
- {
64
- ffi_cif cif;
65
- void *code;
66
- ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
67
- void* args_dbl[5];
68
- ffi_type* cls_struct_fields[10];
69
- ffi_type cls_struct_type;
70
- ffi_type* dbl_arg_types[5];
71
-
72
- struct_72byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 7 };
73
- struct_72byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4 };
74
- struct_72byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 3 };
75
- struct_72byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 2 };
76
- struct_72byte res_dbl;
77
-
78
- cls_struct_type.size = 0;
79
- cls_struct_type.alignment = 0;
80
- cls_struct_type.type = FFI_TYPE_STRUCT;
81
- cls_struct_type.elements = cls_struct_fields;
82
-
83
- cls_struct_fields[0] = &ffi_type_double;
84
- cls_struct_fields[1] = &ffi_type_double;
85
- cls_struct_fields[2] = &ffi_type_double;
86
- cls_struct_fields[3] = &ffi_type_double;
87
- cls_struct_fields[4] = &ffi_type_double;
88
- cls_struct_fields[5] = &ffi_type_double;
89
- cls_struct_fields[6] = &ffi_type_double;
90
- cls_struct_fields[7] = &ffi_type_double;
91
- cls_struct_fields[8] = &ffi_type_sint64;
92
- cls_struct_fields[9] = NULL;
93
-
94
- dbl_arg_types[0] = &cls_struct_type;
95
- dbl_arg_types[1] = &cls_struct_type;
96
- dbl_arg_types[2] = &cls_struct_type;
97
- dbl_arg_types[3] = &cls_struct_type;
98
- dbl_arg_types[4] = NULL;
99
-
100
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type,
101
- dbl_arg_types) == FFI_OK);
102
-
103
- args_dbl[0] = &e_dbl;
104
- args_dbl[1] = &f_dbl;
105
- args_dbl[2] = &g_dbl;
106
- args_dbl[3] = &h_dbl;
107
- args_dbl[4] = NULL;
108
-
109
- ffi_call(&cif, FFI_FN(cls_struct_72byte_fn), &res_dbl, args_dbl);
110
- /* { dg-output "22 15 17 25 6 13 19 18 16" } */
111
- printf("res: %g %g %g %g %g %g %g %g %" PRIdLL "\n", res_dbl.a, res_dbl.b, res_dbl.c,
112
- res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i);
113
- /* { dg-output "\nres: 22 15 17 25 6 13 19 18 16" } */
114
-
115
- CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_72byte_gn, NULL, code) == FFI_OK);
116
-
117
- res_dbl = ((struct_72byte(*)(struct_72byte, struct_72byte,
118
- struct_72byte, struct_72byte))(code))(e_dbl, f_dbl, g_dbl, h_dbl);
119
- /* { dg-output "\n22 15 17 25 6 13 19 18 16" } */
120
- printf("res: %g %g %g %g %g %g %g %g %" PRIdLL "\n", res_dbl.a, res_dbl.b, res_dbl.c,
121
- res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i);
122
- /* { dg-output "\nres: 22 15 17 25 6 13 19 18 16" } */
123
-
124
- exit(0);
125
- }
@@ -1,75 +0,0 @@
1
- /* Area: closure_call
2
- Purpose: Check return value float.
3
- Limitations: none.
4
- PR: 41908.
5
- Originator: <rfm@gnu.org> 20091102 */
6
-
7
- /* { dg-do run } */
8
- #include "ffitest.h"
9
-
10
- typedef struct cls_struct_combined {
11
- float a;
12
- float b;
13
- float c;
14
- float d;
15
- } cls_struct_combined;
16
-
17
- static void cls_struct_combined_fn(struct cls_struct_combined arg)
18
- {
19
- printf("%g %g %g %g\n",
20
- arg.a, arg.b,
21
- arg.c, arg.d);
22
- fflush(stdout);
23
-
24
- CHECK_FLOAT_EQ(arg.a, 4);
25
- CHECK_FLOAT_EQ(arg.b, 5);
26
- CHECK_FLOAT_EQ(arg.c, 1);
27
- CHECK_FLOAT_EQ(arg.d, 8);
28
- }
29
-
30
- static void
31
- cls_struct_combined_gn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__,
32
- void** args, void* userdata __UNUSED__)
33
- {
34
- struct cls_struct_combined a0;
35
-
36
- a0 = *(struct cls_struct_combined*)(args[0]);
37
-
38
- cls_struct_combined_fn(a0);
39
- }
40
-
41
-
42
- int main (void)
43
- {
44
- ffi_cif cif;
45
- void *code;
46
- ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
47
- ffi_type* cls_struct_fields0[5];
48
- ffi_type cls_struct_type0;
49
- ffi_type* dbl_arg_types[5];
50
-
51
- struct cls_struct_combined g_dbl = {4.0, 5.0, 1.0, 8.0};
52
-
53
- cls_struct_type0.size = 0;
54
- cls_struct_type0.alignment = 0;
55
- cls_struct_type0.type = FFI_TYPE_STRUCT;
56
- cls_struct_type0.elements = cls_struct_fields0;
57
-
58
- cls_struct_fields0[0] = &ffi_type_float;
59
- cls_struct_fields0[1] = &ffi_type_float;
60
- cls_struct_fields0[2] = &ffi_type_float;
61
- cls_struct_fields0[3] = &ffi_type_float;
62
- cls_struct_fields0[4] = NULL;
63
-
64
- dbl_arg_types[0] = &cls_struct_type0;
65
- dbl_arg_types[1] = NULL;
66
-
67
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_void,
68
- dbl_arg_types) == FFI_OK);
69
-
70
- CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_combined_gn, NULL, code) == FFI_OK);
71
-
72
- ((void(*)(cls_struct_combined)) (code))(g_dbl);
73
- /* { dg-output "4 5 1 8" } */
74
- exit(0);
75
- }
@@ -1,120 +0,0 @@
1
- /* Area: ffi_closure, unwind info
2
- Purpose: Check if the unwind information is passed correctly.
3
- Limitations: none.
4
- PR: none.
5
- Originator: Jeff Sturm <jsturm@one-point.com> */
6
-
7
- /* { dg-do run { xfail moxie*-*-* } } */
8
-
9
- #include "ffitest.h"
10
-
11
- void ABI_ATTR
12
- closure_test_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__,
13
- void** args __UNUSED__, void* userdata __UNUSED__)
14
- {
15
- throw 9;
16
- }
17
-
18
- typedef void (*closure_test_type)();
19
-
20
- void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp,
21
- void** args, void* userdata __UNUSED__)
22
- {
23
- *(ffi_arg*)resp =
24
- (int)*(float *)args[0] +(int)(*(float *)args[1]) +
25
- (int)(*(float *)args[2]) + (int)*(float *)args[3] +
26
- (int)(*(signed short *)args[4]) + (int)(*(float *)args[5]) +
27
- (int)*(float *)args[6] + (int)(*(int *)args[7]) +
28
- (int)(*(double*)args[8]) + (int)*(int *)args[9] +
29
- (int)(*(int *)args[10]) + (int)(*(float *)args[11]) +
30
- (int)*(int *)args[12] + (int)(*(int *)args[13]) +
31
- (int)(*(int *)args[14]) + *(int *)args[15] + (int)(intptr_t)userdata;
32
-
33
- printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n",
34
- (int)*(float *)args[0], (int)(*(float *)args[1]),
35
- (int)(*(float *)args[2]), (int)*(float *)args[3],
36
- (int)(*(signed short *)args[4]), (int)(*(float *)args[5]),
37
- (int)*(float *)args[6], (int)(*(int *)args[7]),
38
- (int)(*(double *)args[8]), (int)*(int *)args[9],
39
- (int)(*(int *)args[10]), (int)(*(float *)args[11]),
40
- (int)*(int *)args[12], (int)(*(int *)args[13]),
41
- (int)(*(int *)args[14]), *(int *)args[15],
42
- (int)(intptr_t)userdata, (int)*(ffi_arg*)resp);
43
-
44
- throw (int)*(ffi_arg*)resp;
45
- }
46
-
47
- typedef int (*closure_test_type1)(float, float, float, float, signed short,
48
- float, float, int, double, int, int, float,
49
- int, int, int, int);
50
-
51
- #ifdef __EMSCRIPTEN__
52
- extern "C"
53
- #endif
54
- int main (void)
55
- {
56
- ffi_cif cif;
57
- void *code;
58
- ffi_closure *pcl = (ffi_closure *)ffi_closure_alloc(sizeof(ffi_closure), &code);
59
- ffi_type * cl_arg_types[17];
60
-
61
- {
62
- cl_arg_types[1] = NULL;
63
-
64
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0,
65
- &ffi_type_void, cl_arg_types) == FFI_OK);
66
- CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn, NULL, code) == FFI_OK);
67
-
68
- try
69
- {
70
- (*((closure_test_type)(code)))();
71
- } catch (int exception_code)
72
- {
73
- CHECK(exception_code == 9);
74
- }
75
-
76
- printf("part one OK\n");
77
- /* { dg-output "part one OK" } */
78
- }
79
-
80
- {
81
-
82
- cl_arg_types[0] = &ffi_type_float;
83
- cl_arg_types[1] = &ffi_type_float;
84
- cl_arg_types[2] = &ffi_type_float;
85
- cl_arg_types[3] = &ffi_type_float;
86
- cl_arg_types[4] = &ffi_type_sshort;
87
- cl_arg_types[5] = &ffi_type_float;
88
- cl_arg_types[6] = &ffi_type_float;
89
- cl_arg_types[7] = &ffi_type_uint;
90
- cl_arg_types[8] = &ffi_type_double;
91
- cl_arg_types[9] = &ffi_type_uint;
92
- cl_arg_types[10] = &ffi_type_uint;
93
- cl_arg_types[11] = &ffi_type_float;
94
- cl_arg_types[12] = &ffi_type_uint;
95
- cl_arg_types[13] = &ffi_type_uint;
96
- cl_arg_types[14] = &ffi_type_uint;
97
- cl_arg_types[15] = &ffi_type_uint;
98
- cl_arg_types[16] = NULL;
99
-
100
- /* Initialize the cif */
101
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16,
102
- &ffi_type_sint, cl_arg_types) == FFI_OK);
103
-
104
- CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn1,
105
- (void *) 3 /* userdata */, code) == FFI_OK);
106
- try
107
- {
108
- (*((closure_test_type1)code))
109
- (1.1, 2.2, 3.3, 4.4, 127, 5.5, 6.6, 8, 9, 10, 11, 12.0, 13,
110
- 19, 21, 1);
111
- /* { dg-output "\n1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */
112
- } catch (int exception_code)
113
- {
114
- CHECK(exception_code == 255);
115
- }
116
- printf("part two OK\n");
117
- /* { dg-output "\npart two OK" } */
118
- }
119
- exit(0);
120
- }
@@ -1,57 +0,0 @@
1
- /* Area: ffi_call, unwind info
2
- Purpose: Check if the unwind information is passed correctly.
3
- Limitations: none.
4
- PR: none.
5
- Originator: Andreas Tobler <andreast@gcc.gnu.org> 20061213 */
6
-
7
- /* { dg-do run { xfail moxie*-*-* } } */
8
-
9
- #include "ffitest.h"
10
-
11
- static int checking(int a __UNUSED__, short b __UNUSED__,
12
- signed char c __UNUSED__)
13
- {
14
- throw 9;
15
- }
16
-
17
- #ifdef __EMSCRIPTEN__
18
- extern "C"
19
- #endif
20
- int main (void)
21
- {
22
- ffi_cif cif;
23
- ffi_type *args[MAX_ARGS];
24
- void *values[MAX_ARGS];
25
- ffi_arg rint;
26
-
27
- signed int si;
28
- signed short ss;
29
- signed char sc;
30
-
31
- args[0] = &ffi_type_sint;
32
- values[0] = &si;
33
- args[1] = &ffi_type_sshort;
34
- values[1] = &ss;
35
- args[2] = &ffi_type_schar;
36
- values[2] = &sc;
37
-
38
- /* Initialize the cif */
39
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3,
40
- &ffi_type_sint, args) == FFI_OK);
41
-
42
- si = -6;
43
- ss = -12;
44
- sc = -1;
45
- {
46
- try
47
- {
48
- ffi_call(&cif, FFI_FN(checking), &rint, values);
49
- } catch (int exception_code)
50
- {
51
- CHECK(exception_code == 9);
52
- }
53
- printf("part one OK\n");
54
- /* { dg-output "part one OK" } */
55
- }
56
- exit(0);
57
- }
@@ -1,91 +0,0 @@
1
- /* -*-c-*- */
2
- #include "ffitest.h"
3
- #include <complex.h>
4
-
5
- typedef struct cls_struct_align {
6
- unsigned char a;
7
- _Complex T_C_TYPE b;
8
- unsigned char c;
9
- } cls_struct_align;
10
-
11
- cls_struct_align cls_struct_align_fn(
12
- struct cls_struct_align a1, struct cls_struct_align a2)
13
- {
14
- struct cls_struct_align result;
15
-
16
- result.a = a1.a + a2.a;
17
- result.b = a1.b + a2.b;
18
- result.c = a1.c + a2.c;
19
-
20
- printf("%d %f,%fi %d %d %f,%fi %d: %d %f,%fi %d\n",
21
- a1.a, T_CONV creal (a1.b), T_CONV cimag (a1.b), a1.c,
22
- a2.a, T_CONV creal (a2.b), T_CONV cimag (a2.b), a2.c,
23
- result.a, T_CONV creal (result.b), T_CONV cimag (result.b), result.c);
24
-
25
- return result;
26
- }
27
-
28
- static void
29
- cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args,
30
- void* userdata __UNUSED__)
31
- {
32
-
33
- struct cls_struct_align a1, a2;
34
-
35
- a1 = *(struct cls_struct_align*)(args[0]);
36
- a2 = *(struct cls_struct_align*)(args[1]);
37
-
38
- *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2);
39
- }
40
-
41
- int main (void)
42
- {
43
- ffi_cif cif;
44
- void *code;
45
- ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
46
- void* args_c[5];
47
- ffi_type* cls_struct_fields[4];
48
- ffi_type cls_struct_type;
49
- ffi_type* c_arg_types[5];
50
-
51
- struct cls_struct_align g_c = { 12, 4951 + 7 * I, 127 };
52
- struct cls_struct_align f_c = { 1, 9320 + 1 * I, 13 };
53
- struct cls_struct_align res_c;
54
-
55
- cls_struct_type.size = 0;
56
- cls_struct_type.alignment = 0;
57
- cls_struct_type.type = FFI_TYPE_STRUCT;
58
- cls_struct_type.elements = cls_struct_fields;
59
-
60
- cls_struct_fields[0] = &ffi_type_uchar;
61
- cls_struct_fields[1] = &T_FFI_TYPE;
62
- cls_struct_fields[2] = &ffi_type_uchar;
63
- cls_struct_fields[3] = NULL;
64
-
65
- c_arg_types[0] = &cls_struct_type;
66
- c_arg_types[1] = &cls_struct_type;
67
- c_arg_types[2] = NULL;
68
-
69
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type,
70
- c_arg_types) == FFI_OK);
71
-
72
- args_c[0] = &g_c;
73
- args_c[1] = &f_c;
74
- args_c[2] = NULL;
75
-
76
- ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_c, args_c);
77
- /* { dg-output "12 4951,7i 127 1 9320,1i 13: 13 14271,8i 140" } */
78
- printf("res: %d %f,%fi %d\n",
79
- res_c.a, T_CONV creal (res_c.b), T_CONV cimag (res_c.b), res_c.c);
80
- /* { dg-output "\nres: 13 14271,8i 140" } */
81
-
82
- CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK);
83
-
84
- res_c = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_c, f_c);
85
- /* { dg-output "\n12 4951,7i 127 1 9320,1i 13: 13 14271,8i 140" } */
86
- printf("res: %d %f,%fi %d\n",
87
- res_c.a, T_CONV creal (res_c.b), T_CONV cimag (res_c.b), res_c.c);
88
- /* { dg-output "\nres: 13 14271,8i 140" } */
89
-
90
- exit(0);
91
- }
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call, closure_call
2
- Purpose: Check structure alignment of 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 "cls_align_complex.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call, closure_call
2
- Purpose: Check structure alignment of 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 "cls_align_complex.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call, closure_call
2
- Purpose: Check structure alignment of 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 "cls_align_complex.inc"
@@ -1,42 +0,0 @@
1
- /* -*-c-*- */
2
- #include "ffitest.h"
3
- #include <complex.h>
4
-
5
- static void cls_ret_complex_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
6
- void* userdata __UNUSED__)
7
- {
8
- _Complex T_C_TYPE *pa;
9
- _Complex T_C_TYPE *pr;
10
- pa = (_Complex T_C_TYPE *)args[0];
11
- pr = (_Complex T_C_TYPE *)resp;
12
- *pr = *pa;
13
-
14
- printf("%.6f,%.6fi: %.6f,%.6fi\n",
15
- T_CONV creal (*pa), T_CONV cimag (*pa),
16
- T_CONV creal (*pr), T_CONV cimag (*pr));
17
- }
18
- typedef _Complex T_C_TYPE (*cls_ret_complex)(_Complex T_C_TYPE);
19
-
20
- int main (void)
21
- {
22
- ffi_cif cif;
23
- void *code;
24
- ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
25
- ffi_type * cl_arg_types[2];
26
- _Complex T_C_TYPE res;
27
-
28
- cl_arg_types[0] = &T_FFI_TYPE;
29
- cl_arg_types[1] = NULL;
30
-
31
- /* Initialize the cif */
32
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
33
- &T_FFI_TYPE, cl_arg_types) == FFI_OK);
34
-
35
- CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_complex_fn, NULL, code) == FFI_OK);
36
-
37
- res = (*((cls_ret_complex)code))(0.125 + 128.0 * I);
38
- printf("res: %.6f,%.6fi\n", T_CONV creal (res), T_CONV cimag (res));
39
- CHECK (res == (0.125 + 128.0 * I));
40
-
41
- exit(0);
42
- }
@@ -1,10 +0,0 @@
1
- /* Area: closure_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 "cls_complex.inc"
@@ -1,10 +0,0 @@
1
- /* Area: closure_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 "cls_complex.inc"
@@ -1,10 +0,0 @@
1
- /* Area: closure_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 "cls_complex.inc"
@@ -1,71 +0,0 @@
1
- /* -*-c-*- */
2
- #include "ffitest.h"
3
- #include <complex.h>
4
-
5
- typedef struct Cs {
6
- _Complex T_C_TYPE x;
7
- _Complex T_C_TYPE y;
8
- } Cs;
9
-
10
- Cs gc;
11
-
12
- void
13
- closure_test_fn(Cs p)
14
- {
15
- printf("%.1f,%.1fi %.1f,%.1fi\n",
16
- T_CONV creal (p.x), T_CONV cimag (p.x),
17
- T_CONV creal (p.y), T_CONV cimag (p.y));
18
- gc = p;
19
- }
20
-
21
- void
22
- closure_test_gn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__,
23
- void** args, void* userdata __UNUSED__)
24
- {
25
- closure_test_fn(*(Cs*)args[0]);
26
- }
27
-
28
- int main(int argc __UNUSED__, char** argv __UNUSED__)
29
- {
30
- ffi_cif cif;
31
-
32
- void *code;
33
- ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
34
- ffi_type *cl_arg_types[1];
35
-
36
- ffi_type ts1_type;
37
- ffi_type* ts1_type_elements[4];
38
-
39
- Cs arg = { 1.0 + 11.0 * I, 2.0 + 22.0 * I};
40
-
41
- ts1_type.size = 0;
42
- ts1_type.alignment = 0;
43
- ts1_type.type = FFI_TYPE_STRUCT;
44
- ts1_type.elements = ts1_type_elements;
45
-
46
- ts1_type_elements[0] = &T_FFI_TYPE;
47
- ts1_type_elements[1] = &T_FFI_TYPE;
48
- ts1_type_elements[2] = NULL;
49
-
50
- cl_arg_types[0] = &ts1_type;
51
-
52
- /* Initialize the cif */
53
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
54
- &ffi_type_void, cl_arg_types) == FFI_OK);
55
-
56
- CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_gn, NULL, code) == FFI_OK);
57
-
58
- gc.x = 0.0 + 0.0 * I;
59
- gc.y = 0.0 + 0.0 * I;
60
- ((void*(*)(Cs))(code))(arg);
61
- /* { dg-output "1.0,11.0i 2.0,22.0i\n" } */
62
- CHECK (gc.x == arg.x && gc.y == arg.y);
63
-
64
- gc.x = 0.0 + 0.0 * I;
65
- gc.y = 0.0 + 0.0 * I;
66
- closure_test_fn(arg);
67
- /* { dg-output "1.0,11.0i 2.0,22.0i\n" } */
68
- CHECK (gc.x == arg.x && gc.y == arg.y);
69
-
70
- return 0;
71
- }
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call, closure_call
2
- Purpose: Check complex arguments in structs.
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_struct.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call, closure_call
2
- Purpose: Check complex arguments in structs.
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 "cls_complex_struct.inc"
@@ -1,10 +0,0 @@
1
- /* Area: ffi_call, closure_call
2
- Purpose: Check complex arguments in structs.
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_struct.inc"