ffi 1.17.2 → 1.17.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +34 -0
- data/Gemfile +7 -4
- data/README.md +1 -0
- data/Rakefile +7 -4
- data/Steepfile +8 -0
- data/ext/ffi_c/DynamicLibrary.c +1 -1
- data/ext/ffi_c/Function.c +2 -0
- data/ext/ffi_c/MethodHandle.c +4 -2
- data/ext/ffi_c/StructLayout.c +129 -12
- data/ext/ffi_c/libffi/LICENSE +1 -1
- data/ext/ffi_c/libffi/Makefile.am +17 -13
- data/ext/ffi_c/libffi/Makefile.in +37 -30
- data/ext/ffi_c/libffi/README.md +22 -3
- data/ext/ffi_c/libffi/configure +105 -121
- data/ext/ffi_c/libffi/configure.ac +21 -8
- data/ext/ffi_c/libffi/configure.host +6 -1
- data/ext/ffi_c/libffi/doc/Makefile.in +3 -0
- data/ext/ffi_c/libffi/doc/libffi.texi +24 -1
- data/ext/ffi_c/libffi/doc/version.texi +4 -4
- data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +1 -28
- data/ext/ffi_c/libffi/include/Makefile.in +3 -0
- data/ext/ffi_c/libffi/include/ffi.h.in +19 -1
- data/ext/ffi_c/libffi/libffi.map.in +13 -1
- data/ext/ffi_c/libffi/libtool-version +1 -1
- data/ext/ffi_c/libffi/m4/asmcfi.m4 +28 -11
- data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +13 -3
- data/ext/ffi_c/libffi/man/Makefile.in +3 -0
- data/ext/ffi_c/libffi/src/aarch64/sysv.S +7 -1
- data/ext/ffi_c/libffi/src/arm/sysv.S +1 -1
- data/ext/ffi_c/libffi/src/pa/linux.S +4 -0
- data/ext/ffi_c/libffi/src/powerpc/ffi.c +6 -0
- data/ext/ffi_c/libffi/src/riscv/ffi.c +39 -16
- data/ext/ffi_c/libffi/src/riscv/internal.h +7 -0
- data/ext/ffi_c/libffi/src/riscv/sysv.S +24 -0
- data/ext/ffi_c/libffi/src/tramp.c +6 -1
- data/ext/ffi_c/libffi/src/types.c +23 -1
- data/ext/ffi_c/libffi/src/{wasm32 → wasm}/ffi.c +157 -54
- data/ext/ffi_c/libffi/src/{wasm32 → wasm}/ffitarget.h +17 -0
- data/ext/ffi_c/libffi/src/x86/ffitarget.h +0 -3
- data/ext/ffi_c/libffi/src/x86/sysv.S +1 -3
- data/ext/ffi_c/libffi/src/x86/sysv_intel.S +1 -3
- data/ext/ffi_c/libffi/testsuite/Makefile.in +6 -2
- data/ext/ffi_c/libffi.mk +5 -0
- data/ffi.gemspec +7 -6
- data/lib/ffi/autopointer.rb +6 -0
- data/lib/ffi/compat.rb +11 -0
- data/lib/ffi/function.rb +23 -0
- data/lib/ffi/library.rb +19 -3
- data/lib/ffi/struct_by_reference.rb +1 -1
- data/lib/ffi/version.rb +1 -1
- data/samples/hello_ractor.rb +9 -1
- data/samples/qsort_ractor.rb +9 -1
- data/sig/ffi/auto_pointer.rbs +1 -1
- data/sig/ffi/errno.rbs +8 -0
- data/sig/ffi/platform.rbs +49 -0
- data/sig/ffi/struct.rbs +2 -2
- data/sig/ffi/struct_by_reference.rbs +1 -1
- data/sig/ffi.rbs +4 -1
- data.tar.gz.sig +0 -0
- metadata +24 -338
- metadata.gz.sig +0 -0
- data/ext/ffi_c/libffi/.allow-ai-service +0 -0
- data/ext/ffi_c/libffi/.appveyor/site.exp +0 -16
- data/ext/ffi_c/libffi/.appveyor/unix-noexec.exp +0 -7
- data/ext/ffi_c/libffi/.appveyor.yml +0 -84
- 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 -124
- data/ext/ffi_c/libffi/.ci/compile +0 -351
- data/ext/ffi_c/libffi/.ci/install.sh +0 -78
- 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 -29
- data/ext/ffi_c/libffi/.ci/wine-sim.exp +0 -55
- 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 -479
- data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +0 -160
- data/ext/ffi_c/libffi/.gitignore +0 -46
- data/ext/ffi_c/libffi/testsuite/Makefile.am +0 -88
- 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 -682
- 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 -163
- 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/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 -343
- 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 -118
- data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc +0 -55
- 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/lib/ffi/tools/types_generator.rb +0 -137
- data/rakelib/ffi_gem_helper.rb +0 -65
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/* -*-c-*- */
|
|
2
|
-
#include "ffitest.h"
|
|
3
|
-
#include <stdio.h>
|
|
4
|
-
#include <stdlib.h>
|
|
5
|
-
#include <stdarg.h>
|
|
6
|
-
#include <complex.h>
|
|
7
|
-
|
|
8
|
-
static _Complex T_C_TYPE gComplexValue1 = 1 + 2 * I;
|
|
9
|
-
static _Complex T_C_TYPE gComplexValue2 = 3 + 4 * I;
|
|
10
|
-
|
|
11
|
-
static int cls_variadic(const char *format, ...)
|
|
12
|
-
{
|
|
13
|
-
va_list ap;
|
|
14
|
-
_Complex T_C_TYPE p1, p2;
|
|
15
|
-
|
|
16
|
-
va_start (ap, format);
|
|
17
|
-
p1 = va_arg (ap, _Complex T_C_TYPE);
|
|
18
|
-
p2 = va_arg (ap, _Complex T_C_TYPE);
|
|
19
|
-
va_end (ap);
|
|
20
|
-
|
|
21
|
-
return printf(format, T_CONV creal (p1), T_CONV cimag (p1),
|
|
22
|
-
T_CONV creal (p2), T_CONV cimag (p2));
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
static void
|
|
26
|
-
cls_complex_va_fn(ffi_cif* cif __UNUSED__, void* resp,
|
|
27
|
-
void** args, void* userdata __UNUSED__)
|
|
28
|
-
{
|
|
29
|
-
char* format = *(char**)args[0];
|
|
30
|
-
gComplexValue1 = *(_Complex T_C_TYPE*)args[1];
|
|
31
|
-
gComplexValue2 = *(_Complex T_C_TYPE*)args[2];
|
|
32
|
-
|
|
33
|
-
*(ffi_arg*)resp =
|
|
34
|
-
printf(format,
|
|
35
|
-
T_CONV creal (gComplexValue1), T_CONV cimag (gComplexValue1),
|
|
36
|
-
T_CONV creal (gComplexValue2), T_CONV cimag (gComplexValue2));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
int main (void)
|
|
40
|
-
{
|
|
41
|
-
ffi_cif cif;
|
|
42
|
-
void *code;
|
|
43
|
-
ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
|
|
44
|
-
void* args[4];
|
|
45
|
-
ffi_type* arg_types[4];
|
|
46
|
-
char *format = "%.1f,%.1fi %.1f,%.1fi\n";
|
|
47
|
-
|
|
48
|
-
_Complex T_C_TYPE complexArg1 = 1.0 + 22.0 *I;
|
|
49
|
-
_Complex T_C_TYPE complexArg2 = 333.0 + 4444.0 *I;
|
|
50
|
-
ffi_arg res = 0;
|
|
51
|
-
|
|
52
|
-
arg_types[0] = &ffi_type_pointer;
|
|
53
|
-
arg_types[1] = &T_FFI_TYPE;
|
|
54
|
-
arg_types[2] = &T_FFI_TYPE;
|
|
55
|
-
arg_types[3] = NULL;
|
|
56
|
-
|
|
57
|
-
/* This printf call is variadic */
|
|
58
|
-
CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 3, &ffi_type_sint,
|
|
59
|
-
arg_types) == FFI_OK);
|
|
60
|
-
|
|
61
|
-
args[0] = &format;
|
|
62
|
-
args[1] = &complexArg1;
|
|
63
|
-
args[2] = &complexArg2;
|
|
64
|
-
args[3] = NULL;
|
|
65
|
-
|
|
66
|
-
ffi_call(&cif, FFI_FN(cls_variadic), &res, args);
|
|
67
|
-
printf("res: %d\n", (int) res);
|
|
68
|
-
CHECK (res == 24);
|
|
69
|
-
|
|
70
|
-
CHECK(ffi_prep_closure_loc(pcl, &cif, cls_complex_va_fn, NULL, code)
|
|
71
|
-
== FFI_OK);
|
|
72
|
-
|
|
73
|
-
res = ((int(*)(char *, ...))(code))(format, complexArg1, complexArg2);
|
|
74
|
-
CHECK (gComplexValue1 == complexArg1);
|
|
75
|
-
CHECK (gComplexValue2 == complexArg2);
|
|
76
|
-
printf("res: %d\n", (int) res);
|
|
77
|
-
CHECK (res == 24);
|
|
78
|
-
|
|
79
|
-
exit(0);
|
|
80
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call, closure_call
|
|
2
|
-
Purpose: Test complex' passed in variable argument lists.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: <vogt@linux.vnet.ibm.com>. */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
|
|
9
|
-
#include "complex_defs_double.inc"
|
|
10
|
-
#include "cls_complex_va.inc"
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call, closure_call
|
|
2
|
-
Purpose: Test complex' passed in variable argument lists.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: <vogt@linux.vnet.ibm.com>. */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
|
|
9
|
-
/* Alpha splits _Complex into two arguments. It's illegal to pass
|
|
10
|
-
float through varargs, so _Complex float goes badly. In sort of
|
|
11
|
-
gets passed as _Complex double, but the compiler doesn't agree
|
|
12
|
-
with itself on this issue. */
|
|
13
|
-
/* { dg-do run { xfail alpha*-*-* } } */
|
|
14
|
-
|
|
15
|
-
#include "complex_defs_float.inc"
|
|
16
|
-
#include "cls_complex_va.inc"
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call, closure_call
|
|
2
|
-
Purpose: Test complex' passed in variable argument lists.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: <vogt@linux.vnet.ibm.com>. */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
|
|
9
|
-
#include "complex_defs_longdouble.inc"
|
|
10
|
-
#include "cls_complex_va.inc"
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Copyright (C) 2003, 2006, 2009, 2010, 2014 Free Software Foundation, Inc.
|
|
2
|
-
|
|
3
|
-
# This program is free software; you can redistribute it and/or modify
|
|
4
|
-
# it under the terms of the GNU General Public License as published by
|
|
5
|
-
# the Free Software Foundation; either version 3 of the License, or
|
|
6
|
-
# (at your option) any later version.
|
|
7
|
-
#
|
|
8
|
-
# This program is distributed in the hope that it will be useful,
|
|
9
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
-
# GNU General Public License for more details.
|
|
12
|
-
#
|
|
13
|
-
# You should have received a copy of the GNU General Public License
|
|
14
|
-
# along with this program; see the file COPYING3. If not see
|
|
15
|
-
# <http://www.gnu.org/licenses/>.
|
|
16
|
-
|
|
17
|
-
dg-init
|
|
18
|
-
libffi-init
|
|
19
|
-
|
|
20
|
-
global srcdir subdir
|
|
21
|
-
|
|
22
|
-
set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.{c,cc}]]
|
|
23
|
-
|
|
24
|
-
if { [libffi_feature_test "#ifdef FFI_TARGET_HAS_COMPLEX_TYPE"] } {
|
|
25
|
-
run-many-tests $tlist ""
|
|
26
|
-
} else {
|
|
27
|
-
foreach test $tlist {
|
|
28
|
-
unsupported "$test"
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
dg-finish
|
|
33
|
-
|
|
34
|
-
# Local Variables:
|
|
35
|
-
# tcl-indent-level:4
|
|
36
|
-
# End:
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/* -*-c-*-*/
|
|
2
|
-
#include "ffitest.h"
|
|
3
|
-
#include <complex.h>
|
|
4
|
-
|
|
5
|
-
static _Complex T_C_TYPE f_complex(_Complex T_C_TYPE c, int x, int *py)
|
|
6
|
-
{
|
|
7
|
-
c = -(2 * creal (c)) + (cimag (c) + 1)* I;
|
|
8
|
-
*py += x;
|
|
9
|
-
|
|
10
|
-
return c;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
int main (void)
|
|
14
|
-
{
|
|
15
|
-
ffi_cif cif;
|
|
16
|
-
ffi_type *args[MAX_ARGS];
|
|
17
|
-
void *values[MAX_ARGS];
|
|
18
|
-
|
|
19
|
-
_Complex T_C_TYPE tc_arg;
|
|
20
|
-
_Complex T_C_TYPE tc_result;
|
|
21
|
-
int tc_int_arg_x;
|
|
22
|
-
int tc_y;
|
|
23
|
-
int *tc_ptr_arg_y = &tc_y;
|
|
24
|
-
|
|
25
|
-
args[0] = &T_FFI_TYPE;
|
|
26
|
-
args[1] = &ffi_type_sint;
|
|
27
|
-
args[2] = &ffi_type_pointer;
|
|
28
|
-
values[0] = &tc_arg;
|
|
29
|
-
values[1] = &tc_int_arg_x;
|
|
30
|
-
values[2] = &tc_ptr_arg_y;
|
|
31
|
-
|
|
32
|
-
/* Initialize the cif */
|
|
33
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3,
|
|
34
|
-
&T_FFI_TYPE, args) == FFI_OK);
|
|
35
|
-
|
|
36
|
-
tc_arg = 1 + 7 * I;
|
|
37
|
-
tc_int_arg_x = 1234;
|
|
38
|
-
tc_y = 9876;
|
|
39
|
-
ffi_call(&cif, FFI_FN(f_complex), &tc_result, values);
|
|
40
|
-
|
|
41
|
-
printf ("%f,%fi %f,%fi, x %d 1234, y %d 11110\n",
|
|
42
|
-
T_CONV creal (tc_result), T_CONV cimag (tc_result),
|
|
43
|
-
T_CONV creal (2.0), T_CONV creal (8.0), tc_int_arg_x, tc_y);
|
|
44
|
-
|
|
45
|
-
CHECK (creal (tc_result) == -2);
|
|
46
|
-
CHECK (cimag (tc_result) == 8);
|
|
47
|
-
CHECK (tc_int_arg_x == 1234);
|
|
48
|
-
CHECK (*tc_ptr_arg_y == 11110);
|
|
49
|
-
|
|
50
|
-
exit(0);
|
|
51
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/* Area: ffi_call
|
|
2
|
-
Purpose: Check non-standard complex types.
|
|
3
|
-
Limitations: none.
|
|
4
|
-
PR: none.
|
|
5
|
-
Originator: <vogt@linux.vnet.ibm.com>. */
|
|
6
|
-
|
|
7
|
-
/* { dg-do run } */
|
|
8
|
-
|
|
9
|
-
#include "ffitest.h"
|
|
10
|
-
#include "ffi.h"
|
|
11
|
-
#include <complex.h>
|
|
12
|
-
|
|
13
|
-
_Complex int f_complex(_Complex int c, int x, int *py)
|
|
14
|
-
{
|
|
15
|
-
__real__ c = -2 * __real__ c;
|
|
16
|
-
__imag__ c = __imag__ c + 1;
|
|
17
|
-
*py += x;
|
|
18
|
-
return c;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/*
|
|
22
|
-
* This macro can be used to define new complex type descriptors
|
|
23
|
-
* in a platform independent way.
|
|
24
|
-
*
|
|
25
|
-
* name: Name of the new descriptor is ffi_type_complex_<name>.
|
|
26
|
-
* type: The C base type of the complex type.
|
|
27
|
-
*/
|
|
28
|
-
#define FFI_COMPLEX_TYPEDEF(name, type, ffitype) \
|
|
29
|
-
static ffi_type *ffi_elements_complex_##name [2] = { \
|
|
30
|
-
(ffi_type *)(&ffitype), NULL \
|
|
31
|
-
}; \
|
|
32
|
-
struct struct_align_complex_##name { \
|
|
33
|
-
char c; \
|
|
34
|
-
_Complex type x; \
|
|
35
|
-
}; \
|
|
36
|
-
ffi_type ffi_type_complex_##name = { \
|
|
37
|
-
sizeof(_Complex type), \
|
|
38
|
-
offsetof(struct struct_align_complex_##name, x), \
|
|
39
|
-
FFI_TYPE_COMPLEX, \
|
|
40
|
-
(ffi_type **)ffi_elements_complex_##name \
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/* Define new complex type descriptors using the macro: */
|
|
44
|
-
/* ffi_type_complex_sint */
|
|
45
|
-
FFI_COMPLEX_TYPEDEF(sint, int, ffi_type_sint);
|
|
46
|
-
/* ffi_type_complex_uchar */
|
|
47
|
-
FFI_COMPLEX_TYPEDEF(uchar, unsigned char, ffi_type_uint8);
|
|
48
|
-
|
|
49
|
-
int main (void)
|
|
50
|
-
{
|
|
51
|
-
ffi_cif cif;
|
|
52
|
-
ffi_type *args[MAX_ARGS];
|
|
53
|
-
void *values[MAX_ARGS];
|
|
54
|
-
|
|
55
|
-
_Complex int tc_arg;
|
|
56
|
-
_Complex int tc_result;
|
|
57
|
-
int tc_int_arg_x;
|
|
58
|
-
int tc_y;
|
|
59
|
-
int *tc_ptr_arg_y = &tc_y;
|
|
60
|
-
|
|
61
|
-
args[0] = &ffi_type_complex_sint;
|
|
62
|
-
args[1] = &ffi_type_sint;
|
|
63
|
-
args[2] = &ffi_type_pointer;
|
|
64
|
-
values[0] = &tc_arg;
|
|
65
|
-
values[1] = &tc_int_arg_x;
|
|
66
|
-
values[2] = &tc_ptr_arg_y;
|
|
67
|
-
|
|
68
|
-
/* Initialize the cif */
|
|
69
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &ffi_type_complex_sint, args)
|
|
70
|
-
== FFI_OK);
|
|
71
|
-
|
|
72
|
-
tc_arg = 1 + 7 * I;
|
|
73
|
-
tc_int_arg_x = 1234;
|
|
74
|
-
tc_y = 9876;
|
|
75
|
-
ffi_call(&cif, FFI_FN(f_complex), &tc_result, values);
|
|
76
|
-
|
|
77
|
-
printf ("%d,%di %d,%di, x %d 1234, y %d 11110\n",
|
|
78
|
-
(int)tc_result, (int)(tc_result * -I), 2, 8, tc_int_arg_x, tc_y);
|
|
79
|
-
/* { dg-output "-2,8i 2,8i, x 1234 1234, y 11110 11110" } */
|
|
80
|
-
CHECK (creal (tc_result) == -2);
|
|
81
|
-
CHECK (cimag (tc_result) == 8);
|
|
82
|
-
CHECK (tc_int_arg_x == 1234);
|
|
83
|
-
CHECK (*tc_ptr_arg_y == 11110);
|
|
84
|
-
|
|
85
|
-
exit(0);
|
|
86
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
#include "../libffi.call/ffitest.h"
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/* -*-c-*- */
|
|
2
|
-
#include "ffitest.h"
|
|
3
|
-
|
|
4
|
-
#include <stdlib.h>
|
|
5
|
-
#include <complex.h>
|
|
6
|
-
|
|
7
|
-
static _Complex T_C_TYPE many(_Complex T_C_TYPE c1,
|
|
8
|
-
_Complex T_C_TYPE c2,
|
|
9
|
-
_Complex T_C_TYPE c3,
|
|
10
|
-
_Complex T_C_TYPE c4,
|
|
11
|
-
_Complex T_C_TYPE c5,
|
|
12
|
-
_Complex T_C_TYPE c6,
|
|
13
|
-
_Complex T_C_TYPE c7,
|
|
14
|
-
_Complex T_C_TYPE c8,
|
|
15
|
-
_Complex T_C_TYPE c9,
|
|
16
|
-
_Complex T_C_TYPE c10,
|
|
17
|
-
_Complex T_C_TYPE c11,
|
|
18
|
-
_Complex T_C_TYPE c12,
|
|
19
|
-
_Complex T_C_TYPE c13)
|
|
20
|
-
{
|
|
21
|
-
printf("0 :%f,%fi\n"
|
|
22
|
-
"1 :%f,%fi\n"
|
|
23
|
-
"2 :%f,%fi\n"
|
|
24
|
-
"3 :%f,%fi\n"
|
|
25
|
-
"4 :%f,%fi\n"
|
|
26
|
-
"5 :%f,%fi\n"
|
|
27
|
-
"6 :%f,%fi\n"
|
|
28
|
-
"7 :%f,%fi\n"
|
|
29
|
-
"8 :%f,%fi\n"
|
|
30
|
-
"9 :%f,%fi\n"
|
|
31
|
-
"10:%f,%fi\n"
|
|
32
|
-
"11:%f,%fi\n"
|
|
33
|
-
"12:%f,%fi\n",
|
|
34
|
-
T_CONV creal (c1), T_CONV cimag (c1),
|
|
35
|
-
T_CONV creal (c2), T_CONV cimag (c2),
|
|
36
|
-
T_CONV creal (c3), T_CONV cimag (c3),
|
|
37
|
-
T_CONV creal (c4), T_CONV cimag (c4),
|
|
38
|
-
T_CONV creal (c5), T_CONV cimag (c5),
|
|
39
|
-
T_CONV creal (c6), T_CONV cimag (c6),
|
|
40
|
-
T_CONV creal (c7), T_CONV cimag (c7),
|
|
41
|
-
T_CONV creal (c8), T_CONV cimag (c8),
|
|
42
|
-
T_CONV creal (c9), T_CONV cimag (c9),
|
|
43
|
-
T_CONV creal (c10), T_CONV cimag (c10),
|
|
44
|
-
T_CONV creal (c11), T_CONV cimag (c11),
|
|
45
|
-
T_CONV creal (c12), T_CONV cimag (c12),
|
|
46
|
-
T_CONV creal (c13), T_CONV cimag (c13));
|
|
47
|
-
|
|
48
|
-
return (c1+c2-c3-c4+c5+c6+c7-c8-c9-c10-c11+c12+c13);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
int main (void)
|
|
52
|
-
{
|
|
53
|
-
ffi_cif cif;
|
|
54
|
-
ffi_type *args[13];
|
|
55
|
-
void *values[13];
|
|
56
|
-
_Complex T_C_TYPE ca[13];
|
|
57
|
-
_Complex T_C_TYPE c, cc;
|
|
58
|
-
int i;
|
|
59
|
-
|
|
60
|
-
for (i = 0; i < 13; i++)
|
|
61
|
-
{
|
|
62
|
-
args[i] = &T_FFI_TYPE;
|
|
63
|
-
values[i] = &ca[i];
|
|
64
|
-
ca[i] = i + (-20 - i) * I;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/* Initialize the cif */
|
|
68
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 13, &T_FFI_TYPE, args) == FFI_OK);
|
|
69
|
-
|
|
70
|
-
ffi_call(&cif, FFI_FN(many), &c, values);
|
|
71
|
-
|
|
72
|
-
cc = many(ca[0], ca[1], ca[2], ca[3], ca[4], ca[5], ca[6], ca[7], ca[8],
|
|
73
|
-
ca[9], ca[10], ca[11], ca[12]);
|
|
74
|
-
CHECK(creal (cc) == creal (c));
|
|
75
|
-
CHECK(cimag (cc) == cimag (c));
|
|
76
|
-
|
|
77
|
-
exit(0);
|
|
78
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/* -*-c-*- */
|
|
2
|
-
#include "ffitest.h"
|
|
3
|
-
#include <complex.h>
|
|
4
|
-
|
|
5
|
-
static _Complex T_C_TYPE return_c(_Complex T_C_TYPE c)
|
|
6
|
-
{
|
|
7
|
-
printf ("%f,%fi\n", T_CONV creal (c), T_CONV cimag (c));
|
|
8
|
-
return 2 * c;
|
|
9
|
-
}
|
|
10
|
-
int main (void)
|
|
11
|
-
{
|
|
12
|
-
ffi_cif cif;
|
|
13
|
-
ffi_type *args[MAX_ARGS];
|
|
14
|
-
void *values[MAX_ARGS];
|
|
15
|
-
_Complex T_C_TYPE c, rc, rc2;
|
|
16
|
-
T_C_TYPE cr, ci;
|
|
17
|
-
|
|
18
|
-
args[0] = &T_FFI_TYPE;
|
|
19
|
-
values[0] = &c;
|
|
20
|
-
|
|
21
|
-
/* Initialize the cif */
|
|
22
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
|
|
23
|
-
&T_FFI_TYPE, args) == FFI_OK);
|
|
24
|
-
|
|
25
|
-
for (cr = -127.0; cr < 127; cr++)
|
|
26
|
-
{
|
|
27
|
-
ci = 1000.0 - cr;
|
|
28
|
-
c = cr + ci * I;
|
|
29
|
-
ffi_call(&cif, FFI_FN(return_c), &rc, values);
|
|
30
|
-
rc2 = return_c(c);
|
|
31
|
-
printf ("%f,%fi vs %f,%fi\n",
|
|
32
|
-
T_CONV creal (rc), T_CONV cimag (rc),
|
|
33
|
-
T_CONV creal (rc2), T_CONV cimag (rc2));
|
|
34
|
-
CHECK(rc == 2 * c);
|
|
35
|
-
}
|
|
36
|
-
exit(0);
|
|
37
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/* -*-c-*- */
|
|
2
|
-
#include "ffitest.h"
|
|
3
|
-
#include <complex.h>
|
|
4
|
-
|
|
5
|
-
static _Complex T_C_TYPE return_c(_Complex T_C_TYPE c1, float fl2, unsigned int in3, _Complex T_C_TYPE c4)
|
|
6
|
-
{
|
|
7
|
-
return c1 + fl2 + in3 + c4;
|
|
8
|
-
}
|
|
9
|
-
int main (void)
|
|
10
|
-
{
|
|
11
|
-
ffi_cif cif;
|
|
12
|
-
ffi_type *args[MAX_ARGS];
|
|
13
|
-
void *values[MAX_ARGS];
|
|
14
|
-
_Complex T_C_TYPE c1, c4, rc, rc2;
|
|
15
|
-
float fl2;
|
|
16
|
-
unsigned int in3;
|
|
17
|
-
args[0] = &T_FFI_TYPE;
|
|
18
|
-
args[1] = &ffi_type_float;
|
|
19
|
-
args[2] = &ffi_type_uint;
|
|
20
|
-
args[3] = &T_FFI_TYPE;
|
|
21
|
-
values[0] = &c1;
|
|
22
|
-
values[1] = &fl2;
|
|
23
|
-
values[2] = &in3;
|
|
24
|
-
values[3] = &c4;
|
|
25
|
-
|
|
26
|
-
/* Initialize the cif */
|
|
27
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4,
|
|
28
|
-
&T_FFI_TYPE, args) == FFI_OK);
|
|
29
|
-
c1 = 127.0 + 255.0 * I;
|
|
30
|
-
fl2 = 128.0;
|
|
31
|
-
in3 = 255;
|
|
32
|
-
c4 = 512.7 + 1024.1 * I;
|
|
33
|
-
|
|
34
|
-
ffi_call(&cif, FFI_FN(return_c), &rc, values);
|
|
35
|
-
rc2 = return_c(c1, fl2, in3, c4);
|
|
36
|
-
printf ("%f,%fi vs %f,%fi\n",
|
|
37
|
-
T_CONV creal (rc), T_CONV cimag (rc),
|
|
38
|
-
T_CONV creal (rc2), T_CONV cimag (rc2));
|
|
39
|
-
CHECK(rc == rc2);
|
|
40
|
-
exit(0);
|
|
41
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/* -*-c-*- */
|
|
2
|
-
#include "ffitest.h"
|
|
3
|
-
#include <complex.h>
|
|
4
|
-
|
|
5
|
-
_Complex T_C_TYPE
|
|
6
|
-
return_c(_Complex T_C_TYPE c1, _Complex T_C_TYPE c2,
|
|
7
|
-
unsigned int in3, _Complex T_C_TYPE c4)
|
|
8
|
-
{
|
|
9
|
-
volatile _Complex T_C_TYPE r = c1 + c2 + in3 + c4;
|
|
10
|
-
return r;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
int main (void)
|
|
14
|
-
{
|
|
15
|
-
ffi_cif cif;
|
|
16
|
-
ffi_type *args[MAX_ARGS];
|
|
17
|
-
void *values[MAX_ARGS];
|
|
18
|
-
_Complex T_C_TYPE c1, c2, c4, rc, rc2;
|
|
19
|
-
unsigned int in3;
|
|
20
|
-
args[0] = &T_FFI_TYPE;
|
|
21
|
-
args[1] = &T_FFI_TYPE;
|
|
22
|
-
args[2] = &ffi_type_uint;
|
|
23
|
-
args[3] = &T_FFI_TYPE;
|
|
24
|
-
values[0] = &c1;
|
|
25
|
-
values[1] = &c2;
|
|
26
|
-
values[2] = &in3;
|
|
27
|
-
values[3] = &c4;
|
|
28
|
-
|
|
29
|
-
/* Initialize the cif */
|
|
30
|
-
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4,
|
|
31
|
-
&T_FFI_TYPE, args) == FFI_OK);
|
|
32
|
-
c1 = 127.0 + 255.0 * I;
|
|
33
|
-
c2 = 128.0 + 256.0;
|
|
34
|
-
in3 = 255;
|
|
35
|
-
c4 = 512.7 + 1024.1 * I;
|
|
36
|
-
|
|
37
|
-
ffi_call(&cif, FFI_FN(return_c), &rc, values);
|
|
38
|
-
rc2 = return_c(c1, c2, in3, c4);
|
|
39
|
-
printf ("%f,%fi vs %f,%fi\n",
|
|
40
|
-
T_CONV creal (rc), T_CONV cimag (rc),
|
|
41
|
-
T_CONV creal (rc2), T_CONV cimag (rc2));
|
|
42
|
-
CHECK(rc == rc2);
|
|
43
|
-
exit(0);
|
|
44
|
-
}
|