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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +10 -1
- data/ext/ffi_c/StructLayout.c +129 -12
- data/ffi.gemspec +3 -1
- data/lib/ffi/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +1 -269
- metadata.gz.sig +0 -0
- data/ext/ffi_c/libffi/.allow-ai-service +0 -0
- data/ext/ffi_c/libffi/.ci/Containerfile.ppc64le +0 -12
- data/ext/ffi_c/libffi/.ci/ar-lib +0 -270
- data/ext/ffi_c/libffi/.ci/bfin-sim.exp +0 -58
- data/ext/ffi_c/libffi/.ci/build-cross-in-container.sh +0 -18
- data/ext/ffi_c/libffi/.ci/build-in-container.sh +0 -10
- data/ext/ffi_c/libffi/.ci/build.sh +0 -129
- data/ext/ffi_c/libffi/.ci/compile +0 -351
- data/ext/ffi_c/libffi/.ci/install.sh +0 -74
- data/ext/ffi_c/libffi/.ci/m32r-sim.exp +0 -58
- data/ext/ffi_c/libffi/.ci/moxie-sim.exp +0 -60
- data/ext/ffi_c/libffi/.ci/msvs-detect +0 -1103
- data/ext/ffi_c/libffi/.ci/or1k-sim.exp +0 -58
- data/ext/ffi_c/libffi/.ci/powerpc-eabisim.exp +0 -58
- data/ext/ffi_c/libffi/.ci/site.exp +0 -35
- data/ext/ffi_c/libffi/.ci/unix-noexec.exp +0 -7
- data/ext/ffi_c/libffi/.ci/wine-sim.exp +0 -55
- data/ext/ffi_c/libffi/.gail-labels +0 -44
- data/ext/ffi_c/libffi/.gitattributes +0 -4
- data/ext/ffi_c/libffi/.github/issue_template.md +0 -10
- data/ext/ffi_c/libffi/.github/workflows/build.yml +0 -358
- data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +0 -215
- data/ext/ffi_c/libffi/.github/workflows/label-new-issue.yaml +0 -15
- data/ext/ffi_c/libffi/.github/workflows/tarball.yml +0 -55
- data/ext/ffi_c/libffi/.gitignore +0 -46
- data/ext/ffi_c/libffi/testsuite/Makefile.am +0 -89
- data/ext/ffi_c/libffi/testsuite/config/default.exp +0 -1
- data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +0 -34
- data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +0 -46
- data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +0 -86
- data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +0 -23
- data/ext/ffi_c/libffi/testsuite/emscripten/test.html +0 -7
- data/ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py +0 -51
- data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +0 -695
- data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +0 -283
- data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +0 -45
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +0 -28
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +0 -50
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +0 -63
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +0 -1746
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +0 -2885
- data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +0 -747
- data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +0 -46
- data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +0 -46
- data/ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c +0 -41
- data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +0 -54
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +0 -99
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +0 -108
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +0 -114
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +0 -119
- data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +0 -26
- data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +0 -166
- data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +0 -59
- data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +0 -60
- data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +0 -61
- data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +0 -74
- data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +0 -62
- data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +0 -110
- data/ext/ffi_c/libffi/testsuite/libffi.call/longjmp.c +0 -60
- data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +0 -59
- data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +0 -57
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +0 -70
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -52
- data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +0 -46
- data/ext/ffi_c/libffi/testsuite/libffi.call/overread.c +0 -54
- data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +0 -127
- data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +0 -59
- data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc_tc.c +0 -114
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +0 -43
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +0 -35
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +0 -34
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +0 -41
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +0 -48
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +0 -38
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/s55.c +0 -60
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +0 -43
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +0 -55
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +0 -67
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +0 -57
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +0 -67
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +0 -60
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +0 -64
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +0 -66
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +0 -64
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +0 -74
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +0 -81
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +0 -68
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c +0 -63
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c +0 -65
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c +0 -65
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c +0 -67
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c +0 -67
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c +0 -93
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c +0 -61
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_int_float.c +0 -88
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c +0 -63
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +0 -61
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_2.c +0 -220
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_3.c +0 -154
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +0 -134
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +0 -135
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +0 -141
- data/ext/ffi_c/libffi/testsuite/libffi.call/x32.c +0 -31
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp +0 -67
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn0.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn1.c +0 -83
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn2.c +0 -83
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn3.c +0 -102
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn4.c +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn5.c +0 -94
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn6.c +0 -92
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_loc_fn0.c +0 -96
- data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_simple.c +0 -61
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_12byte.c +0 -112
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_16byte.c +0 -117
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_18byte.c +0 -120
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_19byte.c +0 -131
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_1_1byte.c +0 -93
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte.c +0 -109
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte1.c +0 -113
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_24byte.c +0 -145
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_2byte.c +0 -103
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3_1byte.c +0 -114
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte1.c +0 -103
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte2.c +0 -103
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +0 -113
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4_1byte.c +0 -120
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4byte.c +0 -103
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5_1_byte.c +0 -137
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5byte.c +0 -116
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_64byte.c +0 -148
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6_1_byte.c +0 -140
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6byte.c +0 -121
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7_1_byte.c +0 -155
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7byte.c +0 -121
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_8byte.c +0 -102
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte1.c +0 -103
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte2.c +0 -103
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_double.c +0 -111
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_float.c +0 -109
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble.c +0 -111
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c +0 -147
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c +0 -152
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_pointer.c +0 -113
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint16.c +0 -108
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint32.c +0 -106
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint64.c +0 -109
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint16.c +0 -108
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint32.c +0 -109
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint64.c +0 -111
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_dbls_struct.c +0 -68
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double.c +0 -43
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double_va.c +0 -69
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_float.c +0 -46
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble.c +0 -115
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble_va.c +0 -80
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_args.c +0 -70
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c +0 -55
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_schar.c +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshort.c +0 -79
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +0 -94
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_uchar.c +0 -99
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushort.c +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +0 -94
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer.c +0 -79
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer_stack.c +0 -152
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_schar.c +0 -47
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sint.c +0 -44
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sshort.c +0 -45
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +0 -125
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar.c +0 -45
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint.c +0 -47
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulonglong.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort.c +0 -46
- data/ext/ffi_c/libffi/testsuite/libffi.closures/err_bad_abi.c +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +0 -1
- data/ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c +0 -342
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct.c +0 -175
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct1.c +0 -161
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct10.c +0 -146
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +0 -137
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c +0 -86
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c +0 -115
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct2.c +0 -119
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct3.c +0 -120
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct4.c +0 -120
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct5.c +0 -121
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct6.c +0 -142
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct7.c +0 -120
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct8.c +0 -142
- data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct9.c +0 -142
- data/ext/ffi_c/libffi/testsuite/libffi.closures/problem1.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c +0 -86
- data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c +0 -102
- data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c +0 -101
- data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large.c +0 -145
- data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_large2.c +0 -148
- data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium.c +0 -124
- data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium2.c +0 -125
- data/ext/ffi_c/libffi/testsuite/libffi.closures/testclosure.c +0 -75
- data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest.cc +0 -120
- data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc +0 -57
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +0 -71
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +0 -80
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +0 -16
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +0 -51
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +0 -7
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +0 -7
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +0 -7
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +0 -86
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +0 -1
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +0 -37
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +0 -41
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +0 -44
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +0 -34
- data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +0 -28
- data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +0 -1
- data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +0 -19
- data/ext/ffi_c/libffi/testsuite/libffi.threads/ffitest.h +0 -1
- data/ext/ffi_c/libffi/testsuite/libffi.threads/threads.exp +0 -50
- data/ext/ffi_c/libffi/testsuite/libffi.threads/tsan.c +0 -74
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check structures.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
#include "ffitest.h"
|
|
9
|
-
|
|
10
|
-
typedef struct
|
|
11
|
-
{
|
|
12
|
-
float f;
|
|
13
|
-
int i;
|
|
14
|
-
} test_structure_9;
|
|
15
|
-
|
|
16
|
-
static test_structure_9 ABI_ATTR struct9 (test_structure_9 ts)
|
|
17
|
-
{
|
|
18
|
-
ts.f += 1;
|
|
19
|
-
ts.i += 1;
|
|
20
|
-
|
|
21
|
-
return ts;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
int main (void)
|
|
25
|
-
{
|
|
26
|
-
ffi_cif cif;
|
|
27
|
-
ffi_type *args[MAX_ARGS];
|
|
28
|
-
void *values[MAX_ARGS];
|
|
29
|
-
ffi_type ts9_type;
|
|
30
|
-
ffi_type *ts9_type_elements[3];
|
|
31
|
-
|
|
32
|
-
test_structure_9 ts9_arg;
|
|
33
|
-
|
|
34
|
-
/* This is a hack to get a properly aligned result buffer */
|
|
35
|
-
test_structure_9 *ts9_result =
|
|
36
|
-
(test_structure_9 *) malloc (sizeof(test_structure_9));
|
|
37
|
-
|
|
38
|
-
ts9_type.size = 0;
|
|
39
|
-
ts9_type.alignment = 0;
|
|
40
|
-
ts9_type.type = FFI_TYPE_STRUCT;
|
|
41
|
-
ts9_type.elements = ts9_type_elements;
|
|
42
|
-
ts9_type_elements[0] = &ffi_type_float;
|
|
43
|
-
ts9_type_elements[1] = &ffi_type_sint;
|
|
44
|
-
ts9_type_elements[2] = NULL;
|
|
45
|
-
|
|
46
|
-
args[0] = &ts9_type;
|
|
47
|
-
values[0] = &ts9_arg;
|
|
48
|
-
|
|
49
|
-
/* Initialize the cif */
|
|
50
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts9_type, args) == FFI_OK);
|
|
51
|
-
|
|
52
|
-
ts9_arg.f = 5.55f;
|
|
53
|
-
ts9_arg.i = 5;
|
|
54
|
-
|
|
55
|
-
printf ("%g\n", ts9_arg.f);
|
|
56
|
-
printf ("%d\n", ts9_arg.i);
|
|
57
|
-
|
|
58
|
-
ffi_call(&cif, FFI_FN(struct9), ts9_result, values);
|
|
59
|
-
|
|
60
|
-
printf ("%g\n", ts9_result->f);
|
|
61
|
-
printf ("%d\n", ts9_result->i);
|
|
62
|
-
|
|
63
|
-
CHECK(ts9_result->f == 5.55f + 1);
|
|
64
|
-
CHECK(ts9_result->i == 5 + 1);
|
|
65
|
-
|
|
66
|
-
free (ts9_result);
|
|
67
|
-
exit(0);
|
|
68
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check structures.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
#include "ffitest.h"
|
|
9
|
-
|
|
10
|
-
typedef struct
|
|
11
|
-
{
|
|
12
|
-
unsigned int ui01;
|
|
13
|
-
unsigned int ui02;
|
|
14
|
-
} test_structure_1;
|
|
15
|
-
|
|
16
|
-
static test_structure_1 ABI_ATTR struct1(test_structure_1 ts)
|
|
17
|
-
{
|
|
18
|
-
ts.ui02++;
|
|
19
|
-
|
|
20
|
-
return ts;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
int main (void)
|
|
24
|
-
{
|
|
25
|
-
ffi_cif cif;
|
|
26
|
-
ffi_type *args[MAX_ARGS];
|
|
27
|
-
void *values[MAX_ARGS];
|
|
28
|
-
ffi_type ts1_type;
|
|
29
|
-
ffi_type *ts1_type_elements[3];
|
|
30
|
-
|
|
31
|
-
test_structure_1 ts1_arg;
|
|
32
|
-
|
|
33
|
-
/* This is a hack to get a properly aligned result buffer */
|
|
34
|
-
test_structure_1 *ts1_result =
|
|
35
|
-
(test_structure_1 *) malloc (sizeof(test_structure_1));
|
|
36
|
-
|
|
37
|
-
ts1_type.size = 0;
|
|
38
|
-
ts1_type.alignment = 0;
|
|
39
|
-
ts1_type.type = FFI_TYPE_STRUCT;
|
|
40
|
-
ts1_type.elements = ts1_type_elements;
|
|
41
|
-
ts1_type_elements[0] = &ffi_type_uint;
|
|
42
|
-
ts1_type_elements[1] = &ffi_type_uint;
|
|
43
|
-
ts1_type_elements[2] = NULL;
|
|
44
|
-
|
|
45
|
-
args[0] = &ts1_type;
|
|
46
|
-
values[0] = &ts1_arg;
|
|
47
|
-
|
|
48
|
-
/* Initialize the cif */
|
|
49
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
|
|
50
|
-
&ts1_type, args) == FFI_OK);
|
|
51
|
-
|
|
52
|
-
ts1_arg.ui02 = 555;
|
|
53
|
-
|
|
54
|
-
ffi_call(&cif, FFI_FN(struct1), ts1_result, values);
|
|
55
|
-
|
|
56
|
-
CHECK(ts1_result->ui02 == 556);
|
|
57
|
-
|
|
58
|
-
/* This will fail if ffi_call isn't passing the struct by value. */
|
|
59
|
-
CHECK(ts1_arg.ui02 == 555);
|
|
60
|
-
|
|
61
|
-
free (ts1_result);
|
|
62
|
-
exit(0);
|
|
63
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check structures.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
#include "ffitest.h"
|
|
9
|
-
|
|
10
|
-
typedef struct
|
|
11
|
-
{
|
|
12
|
-
unsigned int ui01;
|
|
13
|
-
unsigned int ui02;
|
|
14
|
-
unsigned int ui03;
|
|
15
|
-
} test_structure_1;
|
|
16
|
-
|
|
17
|
-
static test_structure_1 ABI_ATTR struct1(test_structure_1 ts)
|
|
18
|
-
{
|
|
19
|
-
ts.ui03++;
|
|
20
|
-
|
|
21
|
-
return ts;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
int main (void)
|
|
25
|
-
{
|
|
26
|
-
ffi_cif cif;
|
|
27
|
-
ffi_type *args[MAX_ARGS];
|
|
28
|
-
void *values[MAX_ARGS];
|
|
29
|
-
ffi_type ts1_type;
|
|
30
|
-
ffi_type *ts1_type_elements[4];
|
|
31
|
-
|
|
32
|
-
test_structure_1 ts1_arg;
|
|
33
|
-
|
|
34
|
-
/* This is a hack to get a properly aligned result buffer */
|
|
35
|
-
test_structure_1 *ts1_result =
|
|
36
|
-
(test_structure_1 *) malloc (sizeof(test_structure_1));
|
|
37
|
-
|
|
38
|
-
ts1_type.size = 0;
|
|
39
|
-
ts1_type.alignment = 0;
|
|
40
|
-
ts1_type.type = FFI_TYPE_STRUCT;
|
|
41
|
-
ts1_type.elements = ts1_type_elements;
|
|
42
|
-
ts1_type_elements[0] = &ffi_type_uint;
|
|
43
|
-
ts1_type_elements[1] = &ffi_type_uint;
|
|
44
|
-
ts1_type_elements[2] = &ffi_type_uint;
|
|
45
|
-
ts1_type_elements[3] = NULL;
|
|
46
|
-
|
|
47
|
-
args[0] = &ts1_type;
|
|
48
|
-
values[0] = &ts1_arg;
|
|
49
|
-
|
|
50
|
-
/* Initialize the cif */
|
|
51
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
|
|
52
|
-
&ts1_type, args) == FFI_OK);
|
|
53
|
-
|
|
54
|
-
ts1_arg.ui03 = 555;
|
|
55
|
-
|
|
56
|
-
ffi_call(&cif, FFI_FN(struct1), ts1_result, values);
|
|
57
|
-
|
|
58
|
-
CHECK(ts1_result->ui03 == 556);
|
|
59
|
-
|
|
60
|
-
/* This will fail if ffi_call isn't passing the struct by value. */
|
|
61
|
-
CHECK(ts1_arg.ui03 == 555);
|
|
62
|
-
|
|
63
|
-
free (ts1_result);
|
|
64
|
-
exit(0);
|
|
65
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check structures.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
#include "ffitest.h"
|
|
9
|
-
|
|
10
|
-
typedef struct
|
|
11
|
-
{
|
|
12
|
-
float f01;
|
|
13
|
-
float f02;
|
|
14
|
-
float f03;
|
|
15
|
-
} test_structure_1;
|
|
16
|
-
|
|
17
|
-
static test_structure_1 ABI_ATTR struct1(test_structure_1 ts)
|
|
18
|
-
{
|
|
19
|
-
ts.f03++;
|
|
20
|
-
|
|
21
|
-
return ts;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
int main (void)
|
|
25
|
-
{
|
|
26
|
-
ffi_cif cif;
|
|
27
|
-
ffi_type *args[MAX_ARGS];
|
|
28
|
-
void *values[MAX_ARGS];
|
|
29
|
-
ffi_type ts1_type;
|
|
30
|
-
ffi_type *ts1_type_elements[5];
|
|
31
|
-
|
|
32
|
-
test_structure_1 ts1_arg;
|
|
33
|
-
|
|
34
|
-
/* This is a hack to get a properly aligned result buffer */
|
|
35
|
-
test_structure_1 *ts1_result =
|
|
36
|
-
(test_structure_1 *) malloc (sizeof(test_structure_1));
|
|
37
|
-
|
|
38
|
-
ts1_type.size = 0;
|
|
39
|
-
ts1_type.alignment = 0;
|
|
40
|
-
ts1_type.type = FFI_TYPE_STRUCT;
|
|
41
|
-
ts1_type.elements = ts1_type_elements;
|
|
42
|
-
ts1_type_elements[0] = &ffi_type_float;
|
|
43
|
-
ts1_type_elements[1] = &ffi_type_float;
|
|
44
|
-
ts1_type_elements[2] = &ffi_type_float;
|
|
45
|
-
ts1_type_elements[3] = NULL;
|
|
46
|
-
|
|
47
|
-
args[0] = &ts1_type;
|
|
48
|
-
values[0] = &ts1_arg;
|
|
49
|
-
|
|
50
|
-
/* Initialize the cif */
|
|
51
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
|
|
52
|
-
&ts1_type, args) == FFI_OK);
|
|
53
|
-
|
|
54
|
-
ts1_arg.f03 = 555.5;
|
|
55
|
-
|
|
56
|
-
ffi_call(&cif, FFI_FN(struct1), ts1_result, values);
|
|
57
|
-
|
|
58
|
-
CHECK(fabs(ts1_result->f03 - 556.5) < FLT_EPSILON);
|
|
59
|
-
|
|
60
|
-
/* This will fail if ffi_call isn't passing the struct by value. */
|
|
61
|
-
CHECK(fabs(ts1_arg.f03 - 555.5) < FLT_EPSILON);
|
|
62
|
-
|
|
63
|
-
free (ts1_result);
|
|
64
|
-
exit(0);
|
|
65
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check structures.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
#include "ffitest.h"
|
|
9
|
-
|
|
10
|
-
typedef struct
|
|
11
|
-
{
|
|
12
|
-
unsigned int ui01;
|
|
13
|
-
unsigned int ui02;
|
|
14
|
-
unsigned int ui03;
|
|
15
|
-
unsigned int ui04;
|
|
16
|
-
} test_structure_1;
|
|
17
|
-
|
|
18
|
-
static test_structure_1 ABI_ATTR struct1(test_structure_1 ts)
|
|
19
|
-
{
|
|
20
|
-
ts.ui04++;
|
|
21
|
-
|
|
22
|
-
return ts;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
int main (void)
|
|
26
|
-
{
|
|
27
|
-
ffi_cif cif;
|
|
28
|
-
ffi_type *args[MAX_ARGS];
|
|
29
|
-
void *values[MAX_ARGS];
|
|
30
|
-
ffi_type ts1_type;
|
|
31
|
-
ffi_type *ts1_type_elements[5];
|
|
32
|
-
|
|
33
|
-
test_structure_1 ts1_arg;
|
|
34
|
-
|
|
35
|
-
/* This is a hack to get a properly aligned result buffer */
|
|
36
|
-
test_structure_1 *ts1_result =
|
|
37
|
-
(test_structure_1 *) malloc (sizeof(test_structure_1));
|
|
38
|
-
|
|
39
|
-
ts1_type.size = 0;
|
|
40
|
-
ts1_type.alignment = 0;
|
|
41
|
-
ts1_type.type = FFI_TYPE_STRUCT;
|
|
42
|
-
ts1_type.elements = ts1_type_elements;
|
|
43
|
-
ts1_type_elements[0] = &ffi_type_uint;
|
|
44
|
-
ts1_type_elements[1] = &ffi_type_uint;
|
|
45
|
-
ts1_type_elements[2] = &ffi_type_uint;
|
|
46
|
-
ts1_type_elements[3] = &ffi_type_uint;
|
|
47
|
-
ts1_type_elements[4] = NULL;
|
|
48
|
-
|
|
49
|
-
args[0] = &ts1_type;
|
|
50
|
-
values[0] = &ts1_arg;
|
|
51
|
-
|
|
52
|
-
/* Initialize the cif */
|
|
53
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
|
|
54
|
-
&ts1_type, args) == FFI_OK);
|
|
55
|
-
|
|
56
|
-
ts1_arg.ui04 = 555;
|
|
57
|
-
|
|
58
|
-
ffi_call(&cif, FFI_FN(struct1), ts1_result, values);
|
|
59
|
-
|
|
60
|
-
CHECK(ts1_result->ui04 == 556);
|
|
61
|
-
|
|
62
|
-
/* This will fail if ffi_call isn't passing the struct by value. */
|
|
63
|
-
CHECK(ts1_arg.ui04 == 555);
|
|
64
|
-
|
|
65
|
-
free (ts1_result);
|
|
66
|
-
exit(0);
|
|
67
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check structures.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
#include "ffitest.h"
|
|
9
|
-
|
|
10
|
-
typedef struct
|
|
11
|
-
{
|
|
12
|
-
float f01;
|
|
13
|
-
float f02;
|
|
14
|
-
float f03;
|
|
15
|
-
float f04;
|
|
16
|
-
} test_structure_1;
|
|
17
|
-
|
|
18
|
-
static test_structure_1 ABI_ATTR struct1(test_structure_1 ts)
|
|
19
|
-
{
|
|
20
|
-
ts.f04++;
|
|
21
|
-
|
|
22
|
-
return ts;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
int main (void)
|
|
26
|
-
{
|
|
27
|
-
ffi_cif cif;
|
|
28
|
-
ffi_type *args[MAX_ARGS];
|
|
29
|
-
void *values[MAX_ARGS];
|
|
30
|
-
ffi_type ts1_type;
|
|
31
|
-
ffi_type *ts1_type_elements[5];
|
|
32
|
-
|
|
33
|
-
test_structure_1 ts1_arg;
|
|
34
|
-
|
|
35
|
-
/* This is a hack to get a properly aligned result buffer */
|
|
36
|
-
test_structure_1 *ts1_result =
|
|
37
|
-
(test_structure_1 *) malloc (sizeof(test_structure_1));
|
|
38
|
-
|
|
39
|
-
ts1_type.size = 0;
|
|
40
|
-
ts1_type.alignment = 0;
|
|
41
|
-
ts1_type.type = FFI_TYPE_STRUCT;
|
|
42
|
-
ts1_type.elements = ts1_type_elements;
|
|
43
|
-
ts1_type_elements[0] = &ffi_type_float;
|
|
44
|
-
ts1_type_elements[1] = &ffi_type_float;
|
|
45
|
-
ts1_type_elements[2] = &ffi_type_float;
|
|
46
|
-
ts1_type_elements[3] = &ffi_type_float;
|
|
47
|
-
ts1_type_elements[4] = NULL;
|
|
48
|
-
|
|
49
|
-
args[0] = &ts1_type;
|
|
50
|
-
values[0] = &ts1_arg;
|
|
51
|
-
|
|
52
|
-
/* Initialize the cif */
|
|
53
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
|
|
54
|
-
&ts1_type, args) == FFI_OK);
|
|
55
|
-
|
|
56
|
-
ts1_arg.f04 = 555.5;
|
|
57
|
-
|
|
58
|
-
ffi_call(&cif, FFI_FN(struct1), ts1_result, values);
|
|
59
|
-
|
|
60
|
-
CHECK(fabs(ts1_result->f04 - 556.5) < FLT_EPSILON);
|
|
61
|
-
|
|
62
|
-
/* This will fail if ffi_call isn't passing the struct by value. */
|
|
63
|
-
CHECK(fabs(ts1_arg.f04 - 555.5) < FLT_EPSILON);
|
|
64
|
-
|
|
65
|
-
free (ts1_result);
|
|
66
|
-
exit(0);
|
|
67
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check structures.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
#include "ffitest.h"
|
|
9
|
-
|
|
10
|
-
typedef struct
|
|
11
|
-
{
|
|
12
|
-
unsigned int ui01;
|
|
13
|
-
unsigned int ui02;
|
|
14
|
-
unsigned int ui03;
|
|
15
|
-
unsigned int ui04;
|
|
16
|
-
unsigned int ui05;
|
|
17
|
-
unsigned int ui06;
|
|
18
|
-
unsigned int ui07;
|
|
19
|
-
unsigned int ui08;
|
|
20
|
-
unsigned int ui09;
|
|
21
|
-
unsigned int ui10;
|
|
22
|
-
unsigned int ui11;
|
|
23
|
-
unsigned int ui12;
|
|
24
|
-
unsigned int ui13;
|
|
25
|
-
unsigned int ui14;
|
|
26
|
-
unsigned int ui15;
|
|
27
|
-
unsigned int ui16;
|
|
28
|
-
unsigned int ui17;
|
|
29
|
-
} test_structure_1;
|
|
30
|
-
|
|
31
|
-
static test_structure_1 ABI_ATTR struct1(test_structure_1 ts)
|
|
32
|
-
{
|
|
33
|
-
ts.ui17++;
|
|
34
|
-
|
|
35
|
-
return ts;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
int main (void)
|
|
39
|
-
{
|
|
40
|
-
ffi_cif cif;
|
|
41
|
-
ffi_type *args[MAX_ARGS];
|
|
42
|
-
void *values[MAX_ARGS];
|
|
43
|
-
ffi_type ts1_type;
|
|
44
|
-
ffi_type *ts1_type_elements[18];
|
|
45
|
-
|
|
46
|
-
test_structure_1 ts1_arg;
|
|
47
|
-
|
|
48
|
-
/* This is a hack to get a properly aligned result buffer */
|
|
49
|
-
test_structure_1 *ts1_result =
|
|
50
|
-
(test_structure_1 *) malloc (sizeof(test_structure_1));
|
|
51
|
-
|
|
52
|
-
ts1_type.size = 0;
|
|
53
|
-
ts1_type.alignment = 0;
|
|
54
|
-
ts1_type.type = FFI_TYPE_STRUCT;
|
|
55
|
-
ts1_type.elements = ts1_type_elements;
|
|
56
|
-
ts1_type_elements[0] = &ffi_type_uint;
|
|
57
|
-
ts1_type_elements[1] = &ffi_type_uint;
|
|
58
|
-
ts1_type_elements[2] = &ffi_type_uint;
|
|
59
|
-
ts1_type_elements[3] = &ffi_type_uint;
|
|
60
|
-
ts1_type_elements[4] = &ffi_type_uint;
|
|
61
|
-
ts1_type_elements[5] = &ffi_type_uint;
|
|
62
|
-
ts1_type_elements[6] = &ffi_type_uint;
|
|
63
|
-
ts1_type_elements[7] = &ffi_type_uint;
|
|
64
|
-
ts1_type_elements[8] = &ffi_type_uint;
|
|
65
|
-
ts1_type_elements[9] = &ffi_type_uint;
|
|
66
|
-
ts1_type_elements[10] = &ffi_type_uint;
|
|
67
|
-
ts1_type_elements[11] = &ffi_type_uint;
|
|
68
|
-
ts1_type_elements[12] = &ffi_type_uint;
|
|
69
|
-
ts1_type_elements[13] = &ffi_type_uint;
|
|
70
|
-
ts1_type_elements[14] = &ffi_type_uint;
|
|
71
|
-
ts1_type_elements[15] = &ffi_type_uint;
|
|
72
|
-
ts1_type_elements[16] = &ffi_type_uint;
|
|
73
|
-
ts1_type_elements[17] = NULL;
|
|
74
|
-
|
|
75
|
-
args[0] = &ts1_type;
|
|
76
|
-
values[0] = &ts1_arg;
|
|
77
|
-
|
|
78
|
-
/* Initialize the cif */
|
|
79
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
|
|
80
|
-
&ts1_type, args) == FFI_OK);
|
|
81
|
-
|
|
82
|
-
ts1_arg.ui17 = 555;
|
|
83
|
-
|
|
84
|
-
ffi_call(&cif, FFI_FN(struct1), ts1_result, values);
|
|
85
|
-
|
|
86
|
-
CHECK(ts1_result->ui17 == 556);
|
|
87
|
-
|
|
88
|
-
/* This will fail if ffi_call isn't passing the struct by value. */
|
|
89
|
-
CHECK(ts1_arg.ui17 == 555);
|
|
90
|
-
|
|
91
|
-
free (ts1_result);
|
|
92
|
-
exit(0);
|
|
93
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check structures.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
#include "ffitest.h"
|
|
9
|
-
|
|
10
|
-
typedef struct
|
|
11
|
-
{
|
|
12
|
-
unsigned int ui17;
|
|
13
|
-
} test_structure_1;
|
|
14
|
-
|
|
15
|
-
static test_structure_1 ABI_ATTR struct1(test_structure_1 ts)
|
|
16
|
-
{
|
|
17
|
-
ts.ui17++;
|
|
18
|
-
|
|
19
|
-
return ts;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
int main (void)
|
|
23
|
-
{
|
|
24
|
-
ffi_cif cif;
|
|
25
|
-
ffi_type *args[MAX_ARGS];
|
|
26
|
-
void *values[MAX_ARGS];
|
|
27
|
-
ffi_type ts1_type;
|
|
28
|
-
ffi_type *ts1_type_elements[2];
|
|
29
|
-
|
|
30
|
-
test_structure_1 ts1_arg;
|
|
31
|
-
|
|
32
|
-
/* This is a hack to get a properly aligned result buffer */
|
|
33
|
-
test_structure_1 *ts1_result =
|
|
34
|
-
(test_structure_1 *) malloc (sizeof(test_structure_1));
|
|
35
|
-
|
|
36
|
-
ts1_type.size = 0;
|
|
37
|
-
ts1_type.alignment = 0;
|
|
38
|
-
ts1_type.type = FFI_TYPE_STRUCT;
|
|
39
|
-
ts1_type.elements = ts1_type_elements;
|
|
40
|
-
ts1_type_elements[0] = &ffi_type_uint;
|
|
41
|
-
ts1_type_elements[1] = NULL;
|
|
42
|
-
|
|
43
|
-
args[0] = &ts1_type;
|
|
44
|
-
values[0] = &ts1_arg;
|
|
45
|
-
|
|
46
|
-
/* Initialize the cif */
|
|
47
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
|
|
48
|
-
&ts1_type, args) == FFI_OK);
|
|
49
|
-
|
|
50
|
-
ts1_arg.ui17 = 555;
|
|
51
|
-
|
|
52
|
-
ffi_call(&cif, FFI_FN(struct1), ts1_result, values);
|
|
53
|
-
|
|
54
|
-
CHECK(ts1_result->ui17 == 556);
|
|
55
|
-
|
|
56
|
-
/* This will fail if ffi_call isn't passing the struct by value. */
|
|
57
|
-
CHECK(ts1_arg.ui17 == 555);
|
|
58
|
-
|
|
59
|
-
free (ts1_result);
|
|
60
|
-
exit(0);
|
|
61
|
-
}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Demonstrate structures with integers corrupting earlier floats
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: #848
|
|
5
|
-
Originator: kellda */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
#include "ffitest.h"
|
|
9
|
-
|
|
10
|
-
typedef struct
|
|
11
|
-
{
|
|
12
|
-
unsigned long i;
|
|
13
|
-
float f;
|
|
14
|
-
} test_structure_int_float;
|
|
15
|
-
|
|
16
|
-
static float ABI_ATTR struct_int_float(test_structure_int_float ts1,
|
|
17
|
-
test_structure_int_float ts2 __UNUSED__,
|
|
18
|
-
test_structure_int_float ts3 __UNUSED__,
|
|
19
|
-
test_structure_int_float ts4 __UNUSED__,
|
|
20
|
-
test_structure_int_float ts5 __UNUSED__,
|
|
21
|
-
test_structure_int_float ts6 __UNUSED__)
|
|
22
|
-
{
|
|
23
|
-
return ts1.f;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
int main (void)
|
|
27
|
-
{
|
|
28
|
-
ffi_cif cif;
|
|
29
|
-
ffi_type *args[MAX_ARGS];
|
|
30
|
-
void *values[MAX_ARGS];
|
|
31
|
-
ffi_type ts_type;
|
|
32
|
-
ffi_type *ts_type_elements[3];
|
|
33
|
-
float rfloat;
|
|
34
|
-
|
|
35
|
-
test_structure_int_float ts_arg[6];
|
|
36
|
-
|
|
37
|
-
ts_type.size = 0;
|
|
38
|
-
ts_type.alignment = 0;
|
|
39
|
-
ts_type.type = FFI_TYPE_STRUCT;
|
|
40
|
-
ts_type.elements = ts_type_elements;
|
|
41
|
-
ts_type_elements[0] = &ffi_type_ulong;
|
|
42
|
-
ts_type_elements[1] = &ffi_type_float;
|
|
43
|
-
ts_type_elements[2] = NULL;
|
|
44
|
-
|
|
45
|
-
args[0] = &ts_type;
|
|
46
|
-
values[0] = &ts_arg[0];
|
|
47
|
-
args[1] = &ts_type;
|
|
48
|
-
values[1] = &ts_arg[1];
|
|
49
|
-
args[2] = &ts_type;
|
|
50
|
-
values[2] = &ts_arg[2];
|
|
51
|
-
args[3] = &ts_type;
|
|
52
|
-
values[3] = &ts_arg[3];
|
|
53
|
-
args[4] = &ts_type;
|
|
54
|
-
values[4] = &ts_arg[4];
|
|
55
|
-
args[5] = &ts_type;
|
|
56
|
-
values[5] = &ts_arg[5];
|
|
57
|
-
|
|
58
|
-
/* Initialize the cif */
|
|
59
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 6, &ffi_type_float, args) == FFI_OK);
|
|
60
|
-
|
|
61
|
-
ts_arg[0].i = 1;
|
|
62
|
-
ts_arg[0].f = 11.11f;
|
|
63
|
-
ts_arg[1].i = 2;
|
|
64
|
-
ts_arg[1].f = 22.22f;
|
|
65
|
-
ts_arg[2].i = 3;
|
|
66
|
-
ts_arg[2].f = 33.33f;
|
|
67
|
-
ts_arg[3].i = 4;
|
|
68
|
-
ts_arg[3].f = 44.44f;
|
|
69
|
-
ts_arg[4].i = 5;
|
|
70
|
-
ts_arg[4].f = 55.55f;
|
|
71
|
-
ts_arg[5].i = 6;
|
|
72
|
-
ts_arg[5].f = 66.66f;
|
|
73
|
-
|
|
74
|
-
printf ("%g\n", ts_arg[0].f);
|
|
75
|
-
printf ("%g\n", ts_arg[1].f);
|
|
76
|
-
printf ("%g\n", ts_arg[2].f);
|
|
77
|
-
printf ("%g\n", ts_arg[3].f);
|
|
78
|
-
printf ("%g\n", ts_arg[4].f);
|
|
79
|
-
printf ("%g\n", ts_arg[5].f);
|
|
80
|
-
|
|
81
|
-
ffi_call(&cif, FFI_FN(struct_int_float), &rfloat, values);
|
|
82
|
-
|
|
83
|
-
printf ("%g\n", rfloat);
|
|
84
|
-
|
|
85
|
-
CHECK(fabs(rfloat - 11.11) < 3 * FLT_EPSILON);
|
|
86
|
-
|
|
87
|
-
exit(0);
|
|
88
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check structures.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: From the original ffitest.c */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
#include "ffitest.h"
|
|
9
|
-
typedef struct
|
|
10
|
-
{
|
|
11
|
-
short x;
|
|
12
|
-
short y;
|
|
13
|
-
} test_structure_5;
|
|
14
|
-
|
|
15
|
-
static test_structure_5 ABI_ATTR struct5(test_structure_5 inp)
|
|
16
|
-
{
|
|
17
|
-
inp.x *= 2;
|
|
18
|
-
inp.y *= 3;
|
|
19
|
-
|
|
20
|
-
return inp;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
int main (void)
|
|
24
|
-
{
|
|
25
|
-
ffi_cif cif;
|
|
26
|
-
ffi_type *args[MAX_ARGS];
|
|
27
|
-
void *values[MAX_ARGS];
|
|
28
|
-
ffi_type ts5_type;
|
|
29
|
-
ffi_type *ts5_type_elements[3];
|
|
30
|
-
|
|
31
|
-
test_structure_5 ts5_arg1;
|
|
32
|
-
|
|
33
|
-
/* This is a hack to get a properly aligned result buffer */
|
|
34
|
-
test_structure_5 *ts5_result =
|
|
35
|
-
(test_structure_5 *) malloc (sizeof(test_structure_5));
|
|
36
|
-
|
|
37
|
-
ts5_type.size = 0;
|
|
38
|
-
ts5_type.alignment = 0;
|
|
39
|
-
ts5_type.type = FFI_TYPE_STRUCT;
|
|
40
|
-
ts5_type.elements = ts5_type_elements;
|
|
41
|
-
ts5_type_elements[0] = &ffi_type_sshort;
|
|
42
|
-
ts5_type_elements[1] = &ffi_type_sshort;
|
|
43
|
-
ts5_type_elements[2] = NULL;
|
|
44
|
-
|
|
45
|
-
args[0] = &ts5_type;
|
|
46
|
-
values[0] = &ts5_arg1;
|
|
47
|
-
|
|
48
|
-
/* Initialize the cif */
|
|
49
|
-
CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts5_type, args) == FFI_OK);
|
|
50
|
-
|
|
51
|
-
ts5_arg1.x = 99;
|
|
52
|
-
ts5_arg1.y = 88;
|
|
53
|
-
|
|
54
|
-
ffi_call (&cif, FFI_FN(struct5), ts5_result, values);
|
|
55
|
-
|
|
56
|
-
CHECK(ts5_result->x == 99*2);
|
|
57
|
-
CHECK(ts5_result->y == 88*3);
|
|
58
|
-
CHECK(ts5_arg1.x == 99);
|
|
59
|
-
CHECK(ts5_arg1.y == 88);
|
|
60
|
-
|
|
61
|
-
free (ts5_result);
|
|
62
|
-
exit(0);
|
|
63
|
-
}
|