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,46 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check for proper argument alignment.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <twalljava@java.net> (from many_win32.c) */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "ffitest.h"
10
-
11
- static float ABI_ATTR align_arguments(int i1,
12
- double f2,
13
- int i3,
14
- double f4)
15
- {
16
- return i1+f2+i3+f4;
17
- }
18
-
19
- int main(void)
20
- {
21
- ffi_cif cif;
22
- ffi_type *args[4] = {
23
- &ffi_type_sint,
24
- &ffi_type_double,
25
- &ffi_type_sint,
26
- &ffi_type_double
27
- };
28
- double fa[2] = {1,2};
29
- int ia[2] = {1,2};
30
- void *values[4] = {&ia[0], &fa[0], &ia[1], &fa[1]};
31
- float f, ff;
32
-
33
- /* Initialize the cif */
34
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 4,
35
- &ffi_type_float, args) == FFI_OK);
36
-
37
- ff = align_arguments(ia[0], fa[0], ia[1], fa[1]);
38
-
39
- ffi_call(&cif, FFI_FN(align_arguments), &f, values);
40
-
41
- if (f == ff)
42
- printf("align arguments tests ok!\n");
43
- else
44
- CHECK(0);
45
- exit(0);
46
- }
@@ -1,46 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check for proper argument alignment.
3
- Limitations: none.
4
- PR: none.
5
- Originator: <twalljava@java.net> (from many_win32.c) */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "ffitest.h"
10
-
11
- static float ABI_ATTR align_arguments(int i1,
12
- double f2,
13
- int i3,
14
- double f4)
15
- {
16
- return i1+f2+i3+f4;
17
- }
18
-
19
- int main(void)
20
- {
21
- ffi_cif cif;
22
- ffi_type *args[4] = {
23
- &ffi_type_sint,
24
- &ffi_type_double,
25
- &ffi_type_sint,
26
- &ffi_type_double
27
- };
28
- double fa[2] = {1,2};
29
- int ia[2] = {1,2};
30
- void *values[4] = {&ia[0], &fa[0], &ia[1], &fa[1]};
31
- float f, ff;
32
-
33
- /* Initialize the cif */
34
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 4,
35
- &ffi_type_float, args) == FFI_OK);
36
-
37
- ff = align_arguments(ia[0], fa[0], ia[1], fa[1]);;
38
-
39
- ffi_call(&cif, FFI_FN(align_arguments), &f, values);
40
-
41
- if (f == ff)
42
- printf("align arguments tests ok!\n");
43
- else
44
- CHECK(0);
45
- exit(0);
46
- }
@@ -1,41 +0,0 @@
1
- /* Area: bpo-38748
2
- Purpose: test for stdcall alignment problem
3
- Source: github.com/python/cpython/pull/26204 */
4
-
5
- /* { dg-do run } */
6
-
7
- #include "ffitest.h"
8
- #include "ffi_common.h"
9
-
10
- static UINT32 ABI_ATTR align_arguments(UINT32 l1,
11
- UINT64 l2)
12
- {
13
- return l1 + (UINT32) l2;
14
- }
15
-
16
- int main(void)
17
- {
18
- ffi_cif cif;
19
- ffi_type *args[4] = {
20
- &ffi_type_uint32,
21
- &ffi_type_uint64
22
- };
23
- ffi_arg lr1, lr2;
24
- UINT32 l1 = 1;
25
- UINT64 l2 = 2;
26
- void *values[2] = {&l1, &l2};
27
-
28
- /* Initialize the cif */
29
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 2,
30
- &ffi_type_uint32, args) == FFI_OK);
31
-
32
- lr1 = align_arguments(l1, l2);
33
-
34
- ffi_call(&cif, FFI_FN(align_arguments), &lr2, values);
35
-
36
- if (lr1 == lr2)
37
- printf("bpo-38748 arguments tests ok!\n");
38
- else
39
- CHECK(0);
40
- exit(0);
41
- }
@@ -1,54 +0,0 @@
1
- # Copyright (C) 2003, 2006, 2009, 2010, 2014 Free Software Foundation, Inc.
2
-
3
- # This program is free software; you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation; either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with this program; see the file COPYING3. If not see
15
- # <http://www.gnu.org/licenses/>.
16
-
17
- dg-init
18
- libffi-init
19
-
20
- global srcdir subdir
21
-
22
- if { [string match $compiler_vendor "microsoft"] } {
23
- # -wd4005 macro redefinition
24
- # -wd4244 implicit conversion to type of smaller size
25
- # -wd4305 truncation to smaller type
26
- # -wd4477 printf %lu of uintptr_t
27
- # -wd4312 implicit conversion to type of greater size
28
- # -wd4311 pointer truncation to unsigned long
29
- # -EHsc C++ Exception Handling (no SEH exceptions)
30
- set additional_options "-wd4005 -wd4244 -wd4305 -wd4477 -wd4312 -wd4311 -EHsc";
31
- } else {
32
- set additional_options "";
33
- }
34
-
35
- set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.c]]
36
-
37
- run-many-tests $tlist $additional_options
38
-
39
- set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.cc]]
40
-
41
- # No C++ for or1k
42
- if { [istarget "or1k-*-*"] } {
43
- foreach test $tlist {
44
- unsupported "$test"
45
- }
46
- } else {
47
- run-many-tests $tlist $additional_options
48
- }
49
-
50
- dg-finish
51
-
52
- # Local Variables:
53
- # tcl-indent-level:4
54
- # End:
@@ -1,99 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check structures with array and callback.
3
- Limitations: none.
4
- PR: none.
5
- Originator: David Tenty <daltenty@ibm.com> */
6
-
7
- /* { dg-do run } */
8
- #include "ffitest.h"
9
-
10
- static int i=5;
11
-
12
- static void callback(void) { i++; }
13
-
14
- typedef struct
15
- {
16
- unsigned char c1;
17
- double s[2];
18
- unsigned char c2;
19
- } test_structure_12;
20
-
21
- static test_structure_12 ABI_ATTR struct12 (test_structure_12 ts, void (*func)(void))
22
- {
23
- ts.c1 += 1;
24
- ts.c2 += 1;
25
- ts.s[0] += 1;
26
- ts.s[1] += 1;
27
-
28
- func();
29
- return ts;
30
- }
31
-
32
- int main (void)
33
- {
34
- ffi_cif cif;
35
- ffi_type *args[MAX_ARGS];
36
- void *values[MAX_ARGS];
37
- ffi_type ts12_type,ts12a_type;
38
- ffi_type *ts12_type_elements[4];
39
- ffi_type *ts12a_type_elements[3];
40
-
41
- test_structure_12 ts12_arg;
42
- void (*ptr)(void)=&callback;
43
-
44
- test_structure_12 *ts12_result =
45
- (test_structure_12 *) malloc (sizeof(test_structure_12));
46
-
47
- ts12a_type.size = 0;
48
- ts12a_type.alignment = 0;
49
- ts12a_type.type = FFI_TYPE_STRUCT;
50
- ts12a_type.elements = ts12a_type_elements;
51
- ts12a_type_elements[0] = &ffi_type_double;
52
- ts12a_type_elements[1] = &ffi_type_double;
53
- ts12a_type_elements[2] = NULL;
54
-
55
- ts12_type.size = 0;
56
- ts12_type.alignment = 0;
57
- ts12_type.type = FFI_TYPE_STRUCT;
58
- ts12_type.elements = ts12_type_elements;
59
- ts12_type_elements[0] = &ffi_type_uchar;
60
- ts12_type_elements[1] = &ts12a_type;
61
- ts12_type_elements[2] = &ffi_type_uchar;
62
- ts12_type_elements[3] = NULL;
63
-
64
-
65
- args[0] = &ts12_type;
66
- args[1] = &ffi_type_pointer;
67
- values[0] = &ts12_arg;
68
- values[1] = &ptr;
69
-
70
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts12_type, args) == FFI_OK);
71
-
72
- ts12_arg.c1 = 5;
73
- ts12_arg.c2 = 6;
74
- ts12_arg.s[0] = 7.77;
75
- ts12_arg.s[1] = 8.88;
76
-
77
- printf ("%u\n", ts12_arg.c1);
78
- printf ("%u\n", ts12_arg.c2);
79
- printf ("%g\n", ts12_arg.s[0]);
80
- printf ("%g\n", ts12_arg.s[1]);
81
- printf ("%d\n", i);
82
-
83
- ffi_call(&cif, FFI_FN(struct12), ts12_result, values);
84
-
85
- printf ("%u\n", ts12_result->c1);
86
- printf ("%u\n", ts12_result->c2);
87
- printf ("%g\n", ts12_result->s[0]);
88
- printf ("%g\n", ts12_result->s[1]);
89
- printf ("%d\n", i);
90
- CHECK(ts12_result->c1 == 5 + 1);
91
- CHECK(ts12_result->c2 == 6 + 1);
92
- CHECK(ts12_result->s[0] == 7.77 + 1);
93
- CHECK(ts12_result->s[1] == 8.88 + 1);
94
- CHECK(i == 5 + 1);
95
- CHECK(ts12_type.size == sizeof(test_structure_12));
96
-
97
- free (ts12_result);
98
- exit(0);
99
- }
@@ -1,108 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check structures with nested array and callback.
3
- Limitations: none.
4
- PR: none.
5
- Originator: David Tenty <daltenty@ibm.com> */
6
-
7
- /* { dg-do run } */
8
- #include "ffitest.h"
9
-
10
- static int i=5;
11
-
12
- static void callback(void) { i++; }
13
-
14
- typedef struct
15
- {
16
- struct { double d; } s1;
17
- double s[2];
18
- unsigned char c2;
19
- } test_structure_12;
20
-
21
- static test_structure_12 ABI_ATTR struct12 (test_structure_12 ts, void (*func)(void))
22
- {
23
- ts.s1.d += 1;
24
- ts.c2 += 1;
25
- ts.s[0] += 1;
26
- ts.s[1] += 1;
27
-
28
- func();
29
- return ts;
30
- }
31
-
32
- int main (void)
33
- {
34
- ffi_cif cif;
35
- ffi_type *args[MAX_ARGS];
36
- void *values[MAX_ARGS];
37
- ffi_type ts12_type,ts12a_type, ts12b_type;
38
- ffi_type *ts12_type_elements[4];
39
- ffi_type *ts12a_type_elements[2];
40
- ffi_type *ts12b_type_elements[3];
41
-
42
-
43
- test_structure_12 ts12_arg;
44
- void (*ptr)(void)=&callback;
45
-
46
- test_structure_12 *ts12_result =
47
- (test_structure_12 *) malloc (sizeof(test_structure_12));
48
-
49
- ts12a_type.size = 0;
50
- ts12a_type.alignment = 0;
51
- ts12a_type.type = FFI_TYPE_STRUCT;
52
- ts12a_type.elements = ts12a_type_elements;
53
- ts12a_type_elements[0] = &ffi_type_double;
54
- ts12a_type_elements[1] = NULL;
55
-
56
- ts12b_type.size = 0;
57
- ts12b_type.alignment = 0;
58
- ts12b_type.type = FFI_TYPE_STRUCT;
59
- ts12b_type.elements = ts12b_type_elements;
60
- ts12b_type_elements[0] = &ffi_type_double;
61
- ts12b_type_elements[1] = &ffi_type_double;
62
- ts12b_type_elements[2] = NULL;
63
-
64
- ts12_type.size = 0;
65
- ts12_type.alignment = 0;
66
- ts12_type.type = FFI_TYPE_STRUCT;
67
- ts12_type.elements = ts12_type_elements;
68
- ts12_type_elements[0] = &ts12a_type;
69
- ts12_type_elements[1] = &ts12b_type;
70
- ts12_type_elements[2] = &ffi_type_uchar;
71
- ts12_type_elements[3] = NULL;
72
-
73
-
74
- args[0] = &ts12_type;
75
- args[1] = &ffi_type_pointer;
76
- values[0] = &ts12_arg;
77
- values[1] = &ptr;
78
-
79
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts12_type, args) == FFI_OK);
80
-
81
- ts12_arg.s1.d = 5.55;
82
- ts12_arg.c2 = 6;
83
- ts12_arg.s[0] = 7.77;
84
- ts12_arg.s[1] = 8.88;
85
-
86
- printf ("%g\n", ts12_arg.s1.d);
87
- printf ("%u\n", ts12_arg.c2);
88
- printf ("%g\n", ts12_arg.s[0]);
89
- printf ("%g\n", ts12_arg.s[1]);
90
- printf ("%d\n", i);
91
-
92
- ffi_call(&cif, FFI_FN(struct12), ts12_result, values);
93
-
94
- printf ("%g\n", ts12_result->s1.d);
95
- printf ("%u\n", ts12_result->c2);
96
- printf ("%g\n", ts12_result->s[0]);
97
- printf ("%g\n", ts12_result->s[1]);
98
- printf ("%d\n", i);
99
- CHECK(ts12_result->s1.d == 5.55 + 1);
100
- CHECK(ts12_result->c2 == 6 + 1);
101
- CHECK(ts12_result->s[0] == 7.77 + 1);
102
- CHECK(ts12_result->s[1] == 8.88 + 1);
103
- CHECK(i == 5 + 1);
104
- CHECK(ts12_type.size == sizeof(test_structure_12));
105
-
106
- free (ts12_result);
107
- exit(0);
108
- }
@@ -1,114 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check structures with array and callback.
3
- Limitations: none.
4
- PR: none.
5
- Originator: David Tenty <daltenty@ibm.com> */
6
-
7
- /* { dg-do run } */
8
- #include "ffitest.h"
9
-
10
- static int i=5;
11
-
12
- static void callback(void) { i++; }
13
-
14
-
15
- typedef struct
16
- {
17
- struct { unsigned char c; double d; } s1;
18
- double s[2];
19
- unsigned char c2;
20
- } test_structure_12;
21
-
22
- static test_structure_12 ABI_ATTR struct12 (test_structure_12 ts, void (*func)(void))
23
- {
24
- ts.s1.c += 1;
25
- ts.s1.d += 1;
26
- ts.c2 += 1;
27
- ts.s[0] += 1;
28
- ts.s[1] += 1;
29
-
30
- func();
31
- return ts;
32
- }
33
-
34
- int main (void)
35
- {
36
- ffi_cif cif;
37
- ffi_type *args[MAX_ARGS];
38
- void *values[MAX_ARGS];
39
- ffi_type ts12_type,ts12b_type, ts12a_type;
40
- ffi_type *ts12_type_elements[4];
41
- ffi_type *ts12b_type_elements[3];
42
- ffi_type *ts12a_type_elements[3];
43
-
44
- test_structure_12 ts12_arg;
45
- void (*ptr)(void)=&callback;
46
-
47
- test_structure_12 *ts12_result =
48
- (test_structure_12 *) malloc (sizeof(test_structure_12));
49
-
50
- ts12a_type.size = 0;
51
- ts12a_type.alignment = 0;
52
- ts12a_type.type = FFI_TYPE_STRUCT;
53
- ts12a_type.elements = ts12a_type_elements;
54
- ts12a_type_elements[0] = &ffi_type_uchar;
55
- ts12a_type_elements[1] = &ffi_type_double;
56
- ts12a_type_elements[2] = NULL;
57
-
58
- ts12b_type.size = 0;
59
- ts12b_type.alignment = 0;
60
- ts12b_type.type = FFI_TYPE_STRUCT;
61
- ts12b_type.elements = ts12b_type_elements;
62
- ts12b_type_elements[0] = &ffi_type_double;
63
- ts12b_type_elements[1] = &ffi_type_double;
64
- ts12b_type_elements[2] = NULL;
65
-
66
- ts12_type.size = 0;
67
- ts12_type.alignment = 0;
68
- ts12_type.type = FFI_TYPE_STRUCT;
69
- ts12_type.elements = ts12_type_elements;
70
- ts12_type_elements[0] = &ts12a_type;
71
- ts12_type_elements[1] = &ts12b_type;
72
- ts12_type_elements[2] = &ffi_type_uchar;
73
- ts12_type_elements[3] = NULL;
74
-
75
-
76
- args[0] = &ts12_type;
77
- args[1] = &ffi_type_pointer;
78
- values[0] = &ts12_arg;
79
- values[1] = &ptr;
80
-
81
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts12_type, args) == FFI_OK);
82
-
83
- ts12_arg.s1.c = 5;
84
- ts12_arg.s1.d = 5.55;
85
- ts12_arg.c2 = 6;
86
- ts12_arg.s[0] = 7.77;
87
- ts12_arg.s[1] = 8.88;
88
-
89
- printf ("%d\n", ts12_arg.s1.c);
90
- printf ("%g\n", ts12_arg.s1.d);
91
- printf ("%u\n", ts12_arg.c2);
92
- printf ("%g\n", ts12_arg.s[0]);
93
- printf ("%g\n", ts12_arg.s[1]);
94
- printf ("%d\n", i);
95
-
96
- ffi_call(&cif, FFI_FN(struct12), ts12_result, values);
97
-
98
- printf ("%d\n", ts12_result->s1.c);
99
- printf ("%g\n", ts12_result->s1.d);
100
- printf ("%u\n", ts12_result->c2);
101
- printf ("%g\n", ts12_result->s[0]);
102
- printf ("%g\n", ts12_result->s[1]);
103
- printf ("%d\n", i);
104
- CHECK(ts12_result->s1.c == 5 + 1);
105
- CHECK(ts12_result->s1.d == 5.55 + 1);
106
- CHECK(ts12_result->c2 == 6 + 1);
107
- CHECK(ts12_result->s[0] == 7.77 + 1);
108
- CHECK(ts12_result->s[1] == 8.88 + 1);
109
- CHECK(i == 5 + 1);
110
- CHECK(ts12_type.size == sizeof(test_structure_12));
111
-
112
- free (ts12_result);
113
- exit(0);
114
- }
@@ -1,119 +0,0 @@
1
- /* Area: ffi_call
2
- Purpose: Check structures with array and callback.
3
- Limitations: none.
4
- PR: none.
5
- Originator: David Tenty <daltenty@ibm.com> */
6
-
7
- /* { dg-do run } */
8
- #include "ffitest.h"
9
-
10
- static int i=5;
11
-
12
- static void callback(void) { i++; }
13
-
14
-
15
- typedef struct
16
- {
17
- unsigned char c1;
18
- struct { double d; unsigned char c; } s[2];
19
- unsigned char c2;
20
- } test_structure_12;
21
-
22
- static test_structure_12 ABI_ATTR struct12 (test_structure_12 ts, void (*func)(void))
23
- {
24
- ts.c1 += 1;
25
- ts.s[0].d += 1;
26
- ts.s[0].c += 1;
27
- ts.s[1].d += 1;
28
- ts.s[1].c += 1;
29
- ts.c2 += 1;
30
-
31
- func();
32
- return ts;
33
- }
34
-
35
- int main (void)
36
- {
37
- ffi_cif cif;
38
- ffi_type *args[MAX_ARGS];
39
- void *values[MAX_ARGS];
40
- ffi_type ts12_type,ts12b_type, ts12a_type;
41
- ffi_type *ts12_type_elements[4];
42
- ffi_type *ts12b_type_elements[3];
43
- ffi_type *ts12a_type_elements[3];
44
-
45
- test_structure_12 ts12_arg;
46
- void (*ptr)(void)=&callback;
47
-
48
- test_structure_12 *ts12_result =
49
- (test_structure_12 *) malloc (sizeof(test_structure_12));
50
-
51
- ts12a_type.size = 0;
52
- ts12a_type.alignment = 0;
53
- ts12a_type.type = FFI_TYPE_STRUCT;
54
- ts12a_type.elements = ts12a_type_elements;
55
- ts12a_type_elements[0] = &ffi_type_double;
56
- ts12a_type_elements[1] = &ffi_type_uchar;
57
- ts12a_type_elements[2] = NULL;
58
-
59
- ts12b_type.size = 0;
60
- ts12b_type.alignment = 0;
61
- ts12b_type.type = FFI_TYPE_STRUCT;
62
- ts12b_type.elements = ts12b_type_elements;
63
- ts12b_type_elements[0] = &ts12a_type;
64
- ts12b_type_elements[1] = &ts12a_type;
65
- ts12b_type_elements[2] = NULL;
66
-
67
- ts12_type.size = 0;
68
- ts12_type.alignment = 0;
69
- ts12_type.type = FFI_TYPE_STRUCT;
70
- ts12_type.elements = ts12_type_elements;
71
- ts12_type_elements[0] = &ffi_type_uchar;
72
- ts12_type_elements[1] = &ts12b_type;
73
- ts12_type_elements[2] = &ffi_type_uchar;
74
- ts12_type_elements[3] = NULL;
75
-
76
-
77
- args[0] = &ts12_type;
78
- args[1] = &ffi_type_pointer;
79
- values[0] = &ts12_arg;
80
- values[1] = &ptr;
81
-
82
- CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts12_type, args) == FFI_OK);
83
-
84
- ts12_arg.c1 = 5;
85
- ts12_arg.s[0].d = 5.55;
86
- ts12_arg.s[0].c = 6;
87
- ts12_arg.s[1].d = 7.77;
88
- ts12_arg.s[1].c = 8;
89
- ts12_arg.c2 = 9;
90
-
91
- printf ("%u\n", ts12_arg.c1);
92
- printf ("%g\n", ts12_arg.s[0].d);
93
- printf ("%u\n", ts12_arg.s[0].c);
94
- printf ("%g\n", ts12_arg.s[1].d);
95
- printf ("%u\n", ts12_arg.s[1].c);
96
- printf ("%u\n", ts12_arg.c2);
97
- printf ("%d\n", i);
98
-
99
- ffi_call(&cif, FFI_FN(struct12), ts12_result, values);
100
-
101
- printf ("%u\n", ts12_result->c1);
102
- printf ("%g\n", ts12_result->s[0].d);
103
- printf ("%u\n", ts12_result->s[0].c);
104
- printf ("%g\n", ts12_result->s[1].d);
105
- printf ("%u\n", ts12_result->s[1].c);
106
- printf ("%u\n", ts12_result->c2);
107
- printf ("%d\n", i);
108
- CHECK(ts12_result->c1 == 5 + 1);
109
- CHECK(ts12_result->s[0].d == 5.55 + 1);
110
- CHECK(ts12_result->s[0].c == 6 + 1);
111
- CHECK(ts12_result->s[1].d == 7.77 + 1);
112
- CHECK(ts12_result->s[1].c == 8 + 1);
113
- CHECK(ts12_result->c2 == 9 + 1);
114
- CHECK(i == 5 + 1);
115
- CHECK(ts12_type.size == sizeof(test_structure_12));
116
-
117
- free (ts12_result);
118
- exit(0);
119
- }
@@ -1,26 +0,0 @@
1
- /* Area: ffi_prep_cif
2
- Purpose: Test error return for bad typedefs.
3
- Limitations: none.
4
- PR: none.
5
- Originator: Blake Chaffin 6/6/2007 */
6
-
7
- /* { dg-do run } */
8
-
9
- #include "ffitest.h"
10
-
11
- int main (void)
12
- {
13
- ffi_cif cif;
14
- ffi_type* arg_types[1];
15
-
16
- ffi_type badType = ffi_type_void;
17
-
18
- arg_types[0] = NULL;
19
-
20
- badType.size = 0;
21
-
22
- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &badType,
23
- arg_types) == FFI_BAD_TYPEDEF);
24
-
25
- exit(0);
26
- }