ffi 1.9.18 → 1.9.23
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 +5 -5
- data/.gitignore +22 -0
- data/.gitmodules +3 -0
- data/.travis.yml +52 -0
- data/.yardopts +5 -0
- data/Gemfile +15 -0
- data/{spec/ffi/LICENSE.SPECS → LICENSE.SPECS} +1 -1
- data/README.md +3 -4
- data/Rakefile +41 -5
- data/appveyor.yml +22 -0
- data/ext/ffi_c/AbstractMemory.c +6 -1
- data/ext/ffi_c/Call.c +1 -22
- data/ext/ffi_c/Call.h +0 -9
- data/ext/ffi_c/Closure.c +54 -0
- data/ext/ffi_c/{ClosurePool.h → Closure.h} +13 -23
- data/ext/ffi_c/Function.c +16 -25
- data/ext/ffi_c/Function.h +1 -2
- data/ext/ffi_c/FunctionInfo.c +0 -4
- data/ext/ffi_c/MethodHandle.c +33 -268
- data/ext/ffi_c/Platform.c +10 -2
- data/ext/ffi_c/extconf.rb +10 -5
- data/ext/ffi_c/ffi.c +2 -2
- data/ext/ffi_c/libffi/.appveyor.yml +48 -0
- data/ext/ffi_c/libffi/.gitignore +36 -0
- data/ext/ffi_c/libffi/.travis/install.sh +14 -0
- data/ext/ffi_c/libffi/.travis.yml +30 -0
- data/ext/ffi_c/libffi/ChangeLog.libffi +2 -2
- data/ext/ffi_c/libffi/{ChangeLog → ChangeLog.libffi-3.1} +1402 -2
- data/ext/ffi_c/libffi/ChangeLog.v1 +1 -1
- data/ext/ffi_c/libffi/LICENSE +1 -1
- data/ext/ffi_c/libffi/Makefile.am +169 -158
- data/ext/ffi_c/libffi/Makefile.in +927 -938
- data/ext/ffi_c/libffi/README +164 -52
- data/ext/ffi_c/libffi/acinclude.m4 +387 -0
- data/ext/ffi_c/libffi/autogen.sh +2 -0
- data/ext/ffi_c/libffi/config.guess +336 -371
- data/ext/ffi_c/libffi/config.sub +246 -115
- data/ext/ffi_c/libffi/configure +6976 -2189
- data/ext/ffi_c/libffi/configure.ac +148 -256
- data/ext/ffi_c/libffi/configure.host +277 -4
- data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
- data/ext/ffi_c/libffi/doc/Makefile.in +811 -0
- data/ext/ffi_c/libffi/doc/libffi.texi +430 -45
- data/ext/ffi_c/libffi/doc/version.texi +4 -4
- data/ext/ffi_c/libffi/fficonfig.h.in +24 -13
- data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +203 -0
- data/ext/ffi_c/libffi/include/Makefile.am +3 -3
- data/ext/ffi_c/libffi/include/Makefile.in +188 -71
- data/ext/ffi_c/libffi/include/ffi.h.in +112 -50
- data/ext/ffi_c/libffi/include/ffi_cfi.h +55 -0
- data/ext/ffi_c/libffi/include/ffi_common.h +32 -11
- data/ext/ffi_c/libffi/install-sh +190 -202
- data/ext/ffi_c/libffi/libffi.map.in +80 -0
- data/ext/ffi_c/libffi/libffi.pc.in +3 -2
- data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +1043 -0
- data/ext/ffi_c/libffi/libtool-ldflags +106 -0
- data/ext/ffi_c/libffi/libtool-version +1 -1
- data/ext/ffi_c/libffi/ltmain.sh +3553 -2033
- data/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
- data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +69 -0
- data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +13 -8
- data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +31 -104
- data/ext/ffi_c/libffi/m4/{ax_check_compiler_flags.m4 → ax_check_compile_flag.m4} +30 -34
- data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +32 -11
- data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +6 -5
- data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +31 -21
- data/ext/ffi_c/libffi/man/Makefile.am +2 -2
- data/ext/ffi_c/libffi/man/Makefile.in +141 -49
- data/ext/ffi_c/libffi/man/ffi.3 +10 -0
- data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +6 -4
- data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
- data/ext/ffi_c/libffi/missing +150 -311
- data/ext/ffi_c/libffi/msvcc.sh +72 -9
- data/ext/ffi_c/libffi/src/aarch64/ffi.c +964 -0
- data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +81 -0
- data/ext/ffi_c/libffi/src/aarch64/internal.h +67 -0
- data/ext/ffi_c/libffi/src/aarch64/sysv.S +438 -0
- data/ext/ffi_c/libffi/src/alpha/ffi.c +335 -98
- data/ext/ffi_c/libffi/src/alpha/ffitarget.h +10 -1
- data/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
- data/ext/ffi_c/libffi/src/alpha/osf.S +161 -266
- data/ext/ffi_c/libffi/src/arc/arcompact.S +135 -0
- data/ext/ffi_c/libffi/src/arc/ffi.c +266 -0
- data/ext/ffi_c/libffi/src/arc/ffitarget.h +53 -0
- data/ext/ffi_c/libffi/src/arm/ffi.c +608 -517
- data/ext/ffi_c/libffi/src/arm/ffitarget.h +24 -7
- data/ext/ffi_c/libffi/src/arm/internal.h +7 -0
- data/ext/ffi_c/libffi/src/arm/sysv.S +303 -417
- data/ext/ffi_c/libffi/src/avr32/ffitarget.h +6 -1
- data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
- data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
- data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
- data/ext/ffi_c/libffi/src/closures.c +366 -45
- data/ext/ffi_c/libffi/src/cris/ffi.c +10 -7
- data/ext/ffi_c/libffi/src/cris/ffitarget.h +6 -1
- data/ext/ffi_c/libffi/src/debug.c +6 -1
- data/ext/ffi_c/libffi/src/dlmalloc.c +16 -11
- data/ext/ffi_c/libffi/src/frv/ffi.c +1 -1
- data/ext/ffi_c/libffi/src/frv/ffitarget.h +6 -1
- data/ext/ffi_c/libffi/src/ia64/ffi.c +11 -7
- data/ext/ffi_c/libffi/src/ia64/ffitarget.h +6 -1
- data/ext/ffi_c/libffi/src/ia64/unix.S +2 -0
- data/ext/ffi_c/libffi/src/java_raw_api.c +23 -5
- data/ext/ffi_c/libffi/src/m32r/ffi.c +1 -1
- data/ext/ffi_c/libffi/src/m32r/ffitarget.h +6 -1
- data/ext/ffi_c/libffi/src/m68k/ffi.c +87 -13
- data/ext/ffi_c/libffi/src/m68k/ffitarget.h +6 -1
- data/ext/ffi_c/libffi/src/m68k/sysv.S +119 -32
- data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
- data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
- data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
- data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
- data/ext/ffi_c/libffi/{fficonfig.hw → src/metag/ffitarget.h} +22 -26
- data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
- data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
- data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
- data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
- data/ext/ffi_c/libffi/src/mips/ffi.c +103 -28
- data/ext/ffi_c/libffi/src/mips/ffitarget.h +10 -3
- data/ext/ffi_c/libffi/src/mips/n32.S +128 -56
- data/ext/ffi_c/libffi/src/mips/o32.S +148 -27
- data/ext/ffi_c/libffi/src/moxie/eabi.S +55 -82
- data/ext/ffi_c/libffi/src/moxie/ffi.c +40 -44
- data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
- data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
- data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
- data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
- data/ext/ffi_c/libffi/src/or1k/ffi.c +328 -0
- data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
- data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
- data/ext/ffi_c/libffi/src/pa/ffitarget.h +8 -1
- data/ext/ffi_c/libffi/src/powerpc/aix.S +245 -7
- data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +253 -4
- data/ext/ffi_c/libffi/src/powerpc/asm.h +2 -2
- data/ext/ffi_c/libffi/src/powerpc/darwin.S +2 -7
- data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +22 -26
- data/ext/ffi_c/libffi/src/powerpc/ffi.c +103 -1378
- data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +111 -30
- data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +945 -0
- data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +94 -0
- data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
- data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +103 -44
- data/ext/ffi_c/libffi/src/powerpc/linux64.S +100 -59
- data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +360 -108
- data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +138 -68
- data/ext/ffi_c/libffi/src/powerpc/sysv.S +68 -112
- data/ext/ffi_c/libffi/src/prep_cif.c +108 -24
- data/ext/ffi_c/libffi/src/raw_api.c +18 -5
- data/ext/ffi_c/libffi/src/s390/ffi.c +294 -318
- data/ext/ffi_c/libffi/src/s390/ffitarget.h +9 -1
- data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
- data/ext/ffi_c/libffi/src/s390/sysv.S +257 -366
- data/ext/ffi_c/libffi/src/sh/ffi.c +4 -3
- data/ext/ffi_c/libffi/src/sh/ffitarget.h +6 -1
- data/ext/ffi_c/libffi/src/sh64/ffi.c +3 -2
- data/ext/ffi_c/libffi/src/sh64/ffitarget.h +6 -1
- data/ext/ffi_c/libffi/src/sparc/ffi.c +326 -527
- data/ext/ffi_c/libffi/src/sparc/ffi64.c +608 -0
- data/ext/ffi_c/libffi/src/sparc/ffitarget.h +20 -7
- data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
- data/ext/ffi_c/libffi/src/sparc/v8.S +364 -234
- data/ext/ffi_c/libffi/src/sparc/v9.S +340 -207
- data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
- data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
- data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
- data/ext/ffi_c/libffi/src/types.c +43 -14
- data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
- data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
- data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
- data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
- data/ext/ffi_c/libffi/src/x86/ffi.c +591 -500
- data/ext/ffi_c/libffi/src/x86/ffi64.c +359 -116
- data/ext/ffi_c/libffi/src/x86/ffitarget.h +55 -35
- data/ext/ffi_c/libffi/src/x86/ffiw64.c +287 -0
- data/ext/ffi_c/libffi/src/x86/internal.h +29 -0
- data/ext/ffi_c/libffi/src/x86/internal64.h +22 -0
- data/ext/ffi_c/libffi/src/x86/sysv.S +975 -400
- data/ext/ffi_c/libffi/src/x86/unix64.S +398 -299
- data/ext/ffi_c/libffi/src/x86/win64.S +222 -458
- data/ext/ffi_c/libffi/src/x86/win64_intel.S +237 -0
- data/ext/ffi_c/libffi/src/xtensa/ffi.c +298 -0
- data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +53 -0
- data/ext/ffi_c/libffi/src/xtensa/sysv.S +253 -0
- data/ext/ffi_c/libffi/stamp-h.in +1 -0
- data/ext/ffi_c/libffi/testsuite/Makefile.am +79 -73
- data/ext/ffi_c/libffi/testsuite/Makefile.in +219 -111
- data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +121 -25
- data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +21 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +4 -6
- data/ext/ffi_c/libffi/testsuite/libffi.call/{closure_stdcall.c → closure_simple.c} +7 -16
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +5 -5
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3float.c +95 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +5 -5
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +4 -6
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +4 -6
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +4 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +10 -9
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +3 -3
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +10 -9
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c +70 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c +55 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +11 -9
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c +114 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c +44 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c +45 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c +45 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +5 -5
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c +44 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +2 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +23 -40
- data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +3 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +6 -4
- data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +4 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +107 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +18 -19
- data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +6 -16
- data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +6 -6
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +8 -8
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +6 -6
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c +121 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +5 -5
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +5 -5
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +5 -5
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +5 -5
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +6 -6
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +5 -5
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +6 -6
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +6 -6
- data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +1 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +1 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +7 -7
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +7 -7
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +5 -5
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +5 -5
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +2 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +9 -7
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +7 -7
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +7 -6
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +9 -8
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +9 -8
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +9 -9
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +9 -9
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +9 -8
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +9 -8
- data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +2 -2
- data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest.cc +3 -10
- data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest_ffi_call.cc +2 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +196 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +121 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +123 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +125 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/{libffi.special/special.exp → libffi.complex/complex.exp} +9 -8
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
- data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
- data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
- data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
- data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
- data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
- data/ext/ffi_c/libffi.bsd.mk +11 -5
- data/ext/ffi_c/libffi.darwin.mk +14 -4
- data/ext/ffi_c/libffi.gnu.mk +3 -2
- data/ext/ffi_c/libffi.mk +10 -5
- data/ext/ffi_c/libffi.vc.mk +1 -1
- data/ext/ffi_c/libffi.vc64.mk +1 -1
- data/ffi.gemspec +16 -3
- data/lib/ffi/enum.rb +124 -0
- data/lib/ffi/library.rb +66 -14
- data/lib/ffi/platform/sparc64-linux/types.conf +102 -0
- data/lib/ffi/platform/x86_64-windows/types.conf +113 -20
- data/lib/ffi/platform.rb +7 -2
- data/lib/ffi/pointer.rb +1 -0
- data/lib/ffi/struct.rb +0 -2
- data/lib/ffi/version.rb +1 -2
- data/samples/getlogin.rb +8 -0
- data/samples/getpid.rb +8 -0
- data/samples/gettimeofday.rb +18 -0
- data/samples/hello.rb +7 -0
- data/samples/inotify.rb +60 -0
- data/samples/pty.rb +76 -0
- data/samples/qsort.rb +21 -0
- data/samples/sample_helper.rb +6 -0
- metadata +164 -115
- data/ext/ffi_c/ClosurePool.c +0 -283
- data/ext/ffi_c/libffi/Makefile.vc +0 -141
- data/ext/ffi_c/libffi/Makefile.vc64 +0 -141
- data/ext/ffi_c/libffi/aclocal.m4 +0 -1873
- data/ext/ffi_c/libffi/build-ios.sh +0 -67
- data/ext/ffi_c/libffi/compile +0 -143
- data/ext/ffi_c/libffi/depcomp +0 -630
- data/ext/ffi_c/libffi/doc/libffi.info +0 -593
- data/ext/ffi_c/libffi/doc/stamp-vti +0 -4
- data/ext/ffi_c/libffi/include/ffi.h.vc +0 -427
- data/ext/ffi_c/libffi/include/ffi.h.vc64 +0 -427
- data/ext/ffi_c/libffi/m4/libtool.m4 +0 -7831
- data/ext/ffi_c/libffi/m4/ltoptions.m4 +0 -369
- data/ext/ffi_c/libffi/m4/ltsugar.m4 +0 -123
- data/ext/ffi_c/libffi/m4/ltversion.m4 +0 -23
- data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +0 -98
- data/ext/ffi_c/libffi/mdate-sh +0 -201
- data/ext/ffi_c/libffi/src/arm/gentramp.sh +0 -118
- data/ext/ffi_c/libffi/src/arm/trampoline.S +0 -4450
- data/ext/ffi_c/libffi/src/x86/darwin.S +0 -444
- data/ext/ffi_c/libffi/src/x86/darwin64.S +0 -416
- data/ext/ffi_c/libffi/src/x86/freebsd.S +0 -458
- data/ext/ffi_c/libffi/src/x86/win32.S +0 -1065
- data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -300
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -63
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -44
- data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -96
- data/ext/ffi_c/libffi/texinfo.tex +0 -7210
- data/gen/Rakefile +0 -30
- data/libtest/Benchmark.c +0 -52
- data/libtest/BoolTest.c +0 -34
- data/libtest/BufferTest.c +0 -31
- data/libtest/ClosureTest.c +0 -205
- data/libtest/EnumTest.c +0 -51
- data/libtest/FunctionTest.c +0 -70
- data/libtest/GNUmakefile +0 -149
- data/libtest/GlobalVariable.c +0 -62
- data/libtest/LastErrorTest.c +0 -21
- data/libtest/NumberTest.c +0 -132
- data/libtest/PointerTest.c +0 -63
- data/libtest/ReferenceTest.c +0 -23
- data/libtest/StringTest.c +0 -34
- data/libtest/StructTest.c +0 -243
- data/libtest/UnionTest.c +0 -43
- data/libtest/VariadicTest.c +0 -99
- data/spec/ffi/async_callback_spec.rb +0 -35
- data/spec/ffi/bool_spec.rb +0 -32
- data/spec/ffi/buffer_spec.rb +0 -279
- data/spec/ffi/callback_spec.rb +0 -773
- data/spec/ffi/custom_param_type.rb +0 -37
- data/spec/ffi/custom_type_spec.rb +0 -74
- data/spec/ffi/dup_spec.rb +0 -52
- data/spec/ffi/enum_spec.rb +0 -423
- data/spec/ffi/errno_spec.rb +0 -20
- data/spec/ffi/ffi_spec.rb +0 -28
- data/spec/ffi/fixtures/Benchmark.c +0 -52
- data/spec/ffi/fixtures/BoolTest.c +0 -34
- data/spec/ffi/fixtures/BufferTest.c +0 -31
- data/spec/ffi/fixtures/ClosureTest.c +0 -205
- data/spec/ffi/fixtures/EnumTest.c +0 -51
- data/spec/ffi/fixtures/FunctionTest.c +0 -142
- data/spec/ffi/fixtures/GNUmakefile +0 -149
- data/spec/ffi/fixtures/GlobalVariable.c +0 -62
- data/spec/ffi/fixtures/LastErrorTest.c +0 -21
- data/spec/ffi/fixtures/NumberTest.c +0 -132
- data/spec/ffi/fixtures/PipeHelper.h +0 -21
- data/spec/ffi/fixtures/PipeHelperPosix.c +0 -41
- data/spec/ffi/fixtures/PipeHelperWindows.c +0 -72
- data/spec/ffi/fixtures/PointerTest.c +0 -63
- data/spec/ffi/fixtures/ReferenceTest.c +0 -23
- data/spec/ffi/fixtures/StringTest.c +0 -34
- data/spec/ffi/fixtures/StructTest.c +0 -243
- data/spec/ffi/fixtures/UnionTest.c +0 -43
- data/spec/ffi/fixtures/VariadicTest.c +0 -99
- data/spec/ffi/fixtures/classes.rb +0 -438
- data/spec/ffi/function_spec.rb +0 -97
- data/spec/ffi/io_spec.rb +0 -16
- data/spec/ffi/library_spec.rb +0 -286
- data/spec/ffi/long_double.rb +0 -30
- data/spec/ffi/managed_struct_spec.rb +0 -68
- data/spec/ffi/memorypointer_spec.rb +0 -78
- data/spec/ffi/number_spec.rb +0 -247
- data/spec/ffi/platform_spec.rb +0 -114
- data/spec/ffi/pointer_spec.rb +0 -285
- data/spec/ffi/rbx/attach_function_spec.rb +0 -34
- data/spec/ffi/rbx/memory_pointer_spec.rb +0 -194
- data/spec/ffi/rbx/spec_helper.rb +0 -6
- data/spec/ffi/rbx/struct_spec.rb +0 -18
- data/spec/ffi/spec_helper.rb +0 -93
- data/spec/ffi/string_spec.rb +0 -118
- data/spec/ffi/strptr_spec.rb +0 -50
- data/spec/ffi/struct_by_ref_spec.rb +0 -43
- data/spec/ffi/struct_callback_spec.rb +0 -69
- data/spec/ffi/struct_initialize_spec.rb +0 -35
- data/spec/ffi/struct_packed_spec.rb +0 -50
- data/spec/ffi/struct_spec.rb +0 -886
- data/spec/ffi/typedef_spec.rb +0 -91
- data/spec/ffi/union_spec.rb +0 -67
- data/spec/ffi/variadic_spec.rb +0 -132
- data/spec/spec.opts +0 -4
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/* Area: ffi_call, closure_call
|
|
2
|
+
Purpose: Check structure passing with different structure size.
|
|
3
|
+
Depending on the ABI. Check overlapping.
|
|
4
|
+
Limitations:>none.
|
|
5
|
+
PR: none.
|
|
6
|
+
Originator: <compnerd@compnerd.org> 20171026 */
|
|
7
|
+
|
|
8
|
+
/* { dg-do run } */
|
|
9
|
+
|
|
10
|
+
#include "ffitest.h"
|
|
11
|
+
|
|
12
|
+
typedef struct cls_struct_3float {
|
|
13
|
+
float f;
|
|
14
|
+
float g;
|
|
15
|
+
float h;
|
|
16
|
+
} cls_struct_3float;
|
|
17
|
+
|
|
18
|
+
cls_struct_3float cls_struct_3float_fn(struct cls_struct_3float a1,
|
|
19
|
+
struct cls_struct_3float a2)
|
|
20
|
+
{
|
|
21
|
+
struct cls_struct_3float result;
|
|
22
|
+
|
|
23
|
+
result.f = a1.f + a2.f;
|
|
24
|
+
result.g = a1.g + a2.g;
|
|
25
|
+
result.h = a1.h + a2.h;
|
|
26
|
+
|
|
27
|
+
printf("%g %g %g %g %g %g: %g %g %g\n", a1.f, a1.g, a1.h,
|
|
28
|
+
a2.f, a2.g, a2.h, result.f, result.g, result.h);
|
|
29
|
+
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static void
|
|
34
|
+
cls_struct_3float_gn(ffi_cif *cif __UNUSED__, void* resp, void **args,
|
|
35
|
+
void* userdata __UNUSED__)
|
|
36
|
+
{
|
|
37
|
+
struct cls_struct_3float a1, a2;
|
|
38
|
+
|
|
39
|
+
a1 = *(struct cls_struct_3float*)(args[0]);
|
|
40
|
+
a2 = *(struct cls_struct_3float*)(args[1]);
|
|
41
|
+
|
|
42
|
+
*(cls_struct_3float*)resp = cls_struct_3float_fn(a1, a2);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
int main (void)
|
|
46
|
+
{
|
|
47
|
+
ffi_cif cif;
|
|
48
|
+
void *code;
|
|
49
|
+
ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
|
|
50
|
+
void *args_dbl[3];
|
|
51
|
+
ffi_type* cls_struct_fields[4];
|
|
52
|
+
ffi_type cls_struct_type;
|
|
53
|
+
ffi_type* dbl_arg_types[3];
|
|
54
|
+
|
|
55
|
+
struct cls_struct_3float g_dbl = { 1.0f, 2.0f, 3.0f };
|
|
56
|
+
struct cls_struct_3float f_dbl = { 1.0f, 2.0f, 3.0f };
|
|
57
|
+
struct cls_struct_3float res_dbl;
|
|
58
|
+
|
|
59
|
+
cls_struct_fields[0] = &ffi_type_float;
|
|
60
|
+
cls_struct_fields[1] = &ffi_type_float;
|
|
61
|
+
cls_struct_fields[2] = &ffi_type_float;
|
|
62
|
+
cls_struct_fields[3] = NULL;
|
|
63
|
+
|
|
64
|
+
cls_struct_type.size = 0;
|
|
65
|
+
cls_struct_type.alignment = 0;
|
|
66
|
+
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
67
|
+
cls_struct_type.elements = cls_struct_fields;
|
|
68
|
+
|
|
69
|
+
dbl_arg_types[0] = &cls_struct_type;
|
|
70
|
+
dbl_arg_types[1] = &cls_struct_type;
|
|
71
|
+
dbl_arg_types[2] = NULL;
|
|
72
|
+
|
|
73
|
+
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type,
|
|
74
|
+
dbl_arg_types) == FFI_OK);
|
|
75
|
+
|
|
76
|
+
args_dbl[0] = &g_dbl;
|
|
77
|
+
args_dbl[1] = &f_dbl;
|
|
78
|
+
args_dbl[2] = NULL;
|
|
79
|
+
|
|
80
|
+
ffi_call(&cif, FFI_FN(cls_struct_3float_fn), &res_dbl, args_dbl);
|
|
81
|
+
/* { dg-output "1 2 3 1 2 3: 2 4 6" } */
|
|
82
|
+
printf("res: %g %g %g\n", res_dbl.f, res_dbl.g, res_dbl.h);
|
|
83
|
+
/* { dg-output "\nres: 2 4 6" } */
|
|
84
|
+
|
|
85
|
+
CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3float_gn, NULL, code) ==
|
|
86
|
+
FFI_OK);
|
|
87
|
+
|
|
88
|
+
res_dbl = ((cls_struct_3float(*)(cls_struct_3float,
|
|
89
|
+
cls_struct_3float))(code))(g_dbl, f_dbl);
|
|
90
|
+
/* { dg-output "\n1 2 3 1 2 3: 2 4 6" } */
|
|
91
|
+
printf("res: %g %g %g\n", res_dbl.f, res_dbl.g, res_dbl.h);
|
|
92
|
+
/* { dg-output "\nres: 2 4 6" } */
|
|
93
|
+
|
|
94
|
+
exit(0);
|
|
95
|
+
}
|
|
@@ -56,15 +56,15 @@ int main (void)
|
|
|
56
56
|
ffi_type cls_struct_type;
|
|
57
57
|
ffi_type* dbl_arg_types[5];
|
|
58
58
|
|
|
59
|
+
struct cls_struct_4_1byte g_dbl = { 12, 13, 14, 15 };
|
|
60
|
+
struct cls_struct_4_1byte f_dbl = { 178, 179, 180, 181 };
|
|
61
|
+
struct cls_struct_4_1byte res_dbl;
|
|
62
|
+
|
|
59
63
|
cls_struct_type.size = 0;
|
|
60
64
|
cls_struct_type.alignment = 0;
|
|
61
65
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
62
66
|
cls_struct_type.elements = cls_struct_fields;
|
|
63
67
|
|
|
64
|
-
struct cls_struct_4_1byte g_dbl = { 12, 13, 14, 15 };
|
|
65
|
-
struct cls_struct_4_1byte f_dbl = { 178, 179, 180, 181 };
|
|
66
|
-
struct cls_struct_4_1byte res_dbl;
|
|
67
|
-
|
|
68
68
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
69
69
|
cls_struct_fields[1] = &ffi_type_uchar;
|
|
70
70
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -50,15 +50,15 @@ int main (void)
|
|
|
50
50
|
ffi_type cls_struct_type;
|
|
51
51
|
ffi_type* dbl_arg_types[5];
|
|
52
52
|
|
|
53
|
+
struct cls_struct_4byte g_dbl = { 127, 120 };
|
|
54
|
+
struct cls_struct_4byte f_dbl = { 12, 128 };
|
|
55
|
+
struct cls_struct_4byte res_dbl;
|
|
56
|
+
|
|
53
57
|
cls_struct_type.size = 0;
|
|
54
58
|
cls_struct_type.alignment = 0;
|
|
55
59
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
56
60
|
cls_struct_type.elements = cls_struct_fields;
|
|
57
61
|
|
|
58
|
-
struct cls_struct_4byte g_dbl = { 127, 120 };
|
|
59
|
-
struct cls_struct_4byte f_dbl = { 12, 128 };
|
|
60
|
-
struct cls_struct_4byte res_dbl;
|
|
61
|
-
|
|
62
62
|
cls_struct_fields[0] = &ffi_type_ushort;
|
|
63
63
|
cls_struct_fields[1] = &ffi_type_ushort;
|
|
64
64
|
cls_struct_fields[2] = NULL;
|
|
@@ -58,15 +58,15 @@ int main (void)
|
|
|
58
58
|
ffi_type cls_struct_type;
|
|
59
59
|
ffi_type* dbl_arg_types[5];
|
|
60
60
|
|
|
61
|
+
struct cls_struct_5byte g_dbl = { 127, 120, 1, 3, 4 };
|
|
62
|
+
struct cls_struct_5byte f_dbl = { 12, 128, 9, 3, 4 };
|
|
63
|
+
struct cls_struct_5byte res_dbl = { 0, 0, 0, 0, 0 };
|
|
64
|
+
|
|
61
65
|
cls_struct_type.size = 0;
|
|
62
66
|
cls_struct_type.alignment = 0;
|
|
63
67
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
64
68
|
cls_struct_type.elements = cls_struct_fields;
|
|
65
69
|
|
|
66
|
-
struct cls_struct_5byte g_dbl = { 127, 120, 1, 3, 4 };
|
|
67
|
-
struct cls_struct_5byte f_dbl = { 12, 128, 9, 3, 4 };
|
|
68
|
-
struct cls_struct_5byte res_dbl = { 0, 0, 0, 0, 0 };
|
|
69
|
-
|
|
70
70
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
71
71
|
cls_struct_fields[1] = &ffi_type_uchar;
|
|
72
72
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -53,15 +53,15 @@ int main (void)
|
|
|
53
53
|
ffi_type cls_struct_type;
|
|
54
54
|
ffi_type* dbl_arg_types[5];
|
|
55
55
|
|
|
56
|
+
struct cls_struct_5byte g_dbl = { 127, 120, 1 };
|
|
57
|
+
struct cls_struct_5byte f_dbl = { 12, 128, 9 };
|
|
58
|
+
struct cls_struct_5byte res_dbl = { 0, 0, 0 };
|
|
59
|
+
|
|
56
60
|
cls_struct_type.size = 0;
|
|
57
61
|
cls_struct_type.alignment = 0;
|
|
58
62
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
59
63
|
cls_struct_type.elements = cls_struct_fields;
|
|
60
64
|
|
|
61
|
-
struct cls_struct_5byte g_dbl = { 127, 120, 1 };
|
|
62
|
-
struct cls_struct_5byte f_dbl = { 12, 128, 9 };
|
|
63
|
-
struct cls_struct_5byte res_dbl = { 0, 0, 0 };
|
|
64
|
-
|
|
65
65
|
cls_struct_fields[0] = &ffi_type_ushort;
|
|
66
66
|
cls_struct_fields[1] = &ffi_type_ushort;
|
|
67
67
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -66,17 +66,17 @@ int main (void)
|
|
|
66
66
|
ffi_type cls_struct_type;
|
|
67
67
|
ffi_type* dbl_arg_types[5];
|
|
68
68
|
|
|
69
|
-
cls_struct_type.size = 0;
|
|
70
|
-
cls_struct_type.alignment = 0;
|
|
71
|
-
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
72
|
-
cls_struct_type.elements = cls_struct_fields;
|
|
73
|
-
|
|
74
69
|
struct cls_struct_64byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0 };
|
|
75
70
|
struct cls_struct_64byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0 };
|
|
76
71
|
struct cls_struct_64byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0 };
|
|
77
72
|
struct cls_struct_64byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0 };
|
|
78
73
|
struct cls_struct_64byte res_dbl;
|
|
79
74
|
|
|
75
|
+
cls_struct_type.size = 0;
|
|
76
|
+
cls_struct_type.alignment = 0;
|
|
77
|
+
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
78
|
+
cls_struct_type.elements = cls_struct_fields;
|
|
79
|
+
|
|
80
80
|
cls_struct_fields[0] = &ffi_type_double;
|
|
81
81
|
cls_struct_fields[1] = &ffi_type_double;
|
|
82
82
|
cls_struct_fields[2] = &ffi_type_double;
|
|
@@ -60,15 +60,15 @@ int main (void)
|
|
|
60
60
|
ffi_type cls_struct_type;
|
|
61
61
|
ffi_type* dbl_arg_types[5];
|
|
62
62
|
|
|
63
|
+
struct cls_struct_6byte g_dbl = { 127, 120, 1, 3, 4, 5 };
|
|
64
|
+
struct cls_struct_6byte f_dbl = { 12, 128, 9, 3, 4, 5 };
|
|
65
|
+
struct cls_struct_6byte res_dbl = { 0, 0, 0, 0, 0, 0 };
|
|
66
|
+
|
|
63
67
|
cls_struct_type.size = 0;
|
|
64
68
|
cls_struct_type.alignment = 0;
|
|
65
69
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
66
70
|
cls_struct_type.elements = cls_struct_fields;
|
|
67
71
|
|
|
68
|
-
struct cls_struct_6byte g_dbl = { 127, 120, 1, 3, 4, 5 };
|
|
69
|
-
struct cls_struct_6byte f_dbl = { 12, 128, 9, 3, 4, 5 };
|
|
70
|
-
struct cls_struct_6byte res_dbl = { 0, 0, 0, 0, 0, 0 };
|
|
71
|
-
|
|
72
72
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
73
73
|
cls_struct_fields[1] = &ffi_type_uchar;
|
|
74
74
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -56,15 +56,15 @@ int main (void)
|
|
|
56
56
|
ffi_type cls_struct_type;
|
|
57
57
|
ffi_type* dbl_arg_types[5];
|
|
58
58
|
|
|
59
|
+
struct cls_struct_6byte g_dbl = { 127, 120, 1, 128 };
|
|
60
|
+
struct cls_struct_6byte f_dbl = { 12, 128, 9, 127 };
|
|
61
|
+
struct cls_struct_6byte res_dbl;
|
|
62
|
+
|
|
59
63
|
cls_struct_type.size = 0;
|
|
60
64
|
cls_struct_type.alignment = 0;
|
|
61
65
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
62
66
|
cls_struct_type.elements = cls_struct_fields;
|
|
63
67
|
|
|
64
|
-
struct cls_struct_6byte g_dbl = { 127, 120, 1, 128 };
|
|
65
|
-
struct cls_struct_6byte f_dbl = { 12, 128, 9, 127 };
|
|
66
|
-
struct cls_struct_6byte res_dbl;
|
|
67
|
-
|
|
68
68
|
cls_struct_fields[0] = &ffi_type_ushort;
|
|
69
69
|
cls_struct_fields[1] = &ffi_type_ushort;
|
|
70
70
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -62,15 +62,15 @@ int main (void)
|
|
|
62
62
|
ffi_type cls_struct_type;
|
|
63
63
|
ffi_type* dbl_arg_types[5];
|
|
64
64
|
|
|
65
|
+
struct cls_struct_7byte g_dbl = { 127, 120, 1, 3, 4, 5, 6 };
|
|
66
|
+
struct cls_struct_7byte f_dbl = { 12, 128, 9, 3, 4, 5, 6 };
|
|
67
|
+
struct cls_struct_7byte res_dbl = { 0, 0, 0, 0, 0, 0, 0 };
|
|
68
|
+
|
|
65
69
|
cls_struct_type.size = 0;
|
|
66
70
|
cls_struct_type.alignment = 0;
|
|
67
71
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
68
72
|
cls_struct_type.elements = cls_struct_fields;
|
|
69
73
|
|
|
70
|
-
struct cls_struct_7byte g_dbl = { 127, 120, 1, 3, 4, 5, 6 };
|
|
71
|
-
struct cls_struct_7byte f_dbl = { 12, 128, 9, 3, 4, 5, 6 };
|
|
72
|
-
struct cls_struct_7byte res_dbl = { 0, 0, 0, 0, 0, 0, 0 };
|
|
73
|
-
|
|
74
74
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
75
75
|
cls_struct_fields[1] = &ffi_type_uchar;
|
|
76
76
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -55,15 +55,15 @@ int main (void)
|
|
|
55
55
|
ffi_type cls_struct_type;
|
|
56
56
|
ffi_type* dbl_arg_types[5];
|
|
57
57
|
|
|
58
|
+
struct cls_struct_7byte g_dbl = { 127, 120, 1, 254 };
|
|
59
|
+
struct cls_struct_7byte f_dbl = { 12, 128, 9, 255 };
|
|
60
|
+
struct cls_struct_7byte res_dbl;
|
|
61
|
+
|
|
58
62
|
cls_struct_type.size = 0;
|
|
59
63
|
cls_struct_type.alignment = 0;
|
|
60
64
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
61
65
|
cls_struct_type.elements = cls_struct_fields;
|
|
62
66
|
|
|
63
|
-
struct cls_struct_7byte g_dbl = { 127, 120, 1, 254 };
|
|
64
|
-
struct cls_struct_7byte f_dbl = { 12, 128, 9, 255 };
|
|
65
|
-
struct cls_struct_7byte res_dbl;
|
|
66
|
-
|
|
67
67
|
cls_struct_fields[0] = &ffi_type_ushort;
|
|
68
68
|
cls_struct_fields[1] = &ffi_type_ushort;
|
|
69
69
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -49,15 +49,15 @@ int main (void)
|
|
|
49
49
|
ffi_type cls_struct_type;
|
|
50
50
|
ffi_type* dbl_arg_types[5];
|
|
51
51
|
|
|
52
|
+
struct cls_struct_8byte g_dbl = { 1, 2.0 };
|
|
53
|
+
struct cls_struct_8byte f_dbl = { 4, 5.0 };
|
|
54
|
+
struct cls_struct_8byte res_dbl;
|
|
55
|
+
|
|
52
56
|
cls_struct_type.size = 0;
|
|
53
57
|
cls_struct_type.alignment = 0;
|
|
54
58
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
55
59
|
cls_struct_type.elements = cls_struct_fields;
|
|
56
60
|
|
|
57
|
-
struct cls_struct_8byte g_dbl = { 1, 2.0 };
|
|
58
|
-
struct cls_struct_8byte f_dbl = { 4, 5.0 };
|
|
59
|
-
struct cls_struct_8byte res_dbl;
|
|
60
|
-
|
|
61
61
|
cls_struct_fields[0] = &ffi_type_sint;
|
|
62
62
|
cls_struct_fields[1] = &ffi_type_float;
|
|
63
63
|
cls_struct_fields[2] = NULL;
|
|
@@ -50,15 +50,15 @@ int main (void)
|
|
|
50
50
|
ffi_type cls_struct_type;
|
|
51
51
|
ffi_type* dbl_arg_types[3];
|
|
52
52
|
|
|
53
|
+
struct cls_struct_9byte h_dbl = { 7, 8.0};
|
|
54
|
+
struct cls_struct_9byte j_dbl = { 1, 9.0};
|
|
55
|
+
struct cls_struct_9byte res_dbl;
|
|
56
|
+
|
|
53
57
|
cls_struct_type.size = 0;
|
|
54
58
|
cls_struct_type.alignment = 0;
|
|
55
59
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
56
60
|
cls_struct_type.elements = cls_struct_fields;
|
|
57
61
|
|
|
58
|
-
struct cls_struct_9byte h_dbl = { 7, 8.0};
|
|
59
|
-
struct cls_struct_9byte j_dbl = { 1, 9.0};
|
|
60
|
-
struct cls_struct_9byte res_dbl;
|
|
61
|
-
|
|
62
62
|
cls_struct_fields[0] = &ffi_type_sint;
|
|
63
63
|
cls_struct_fields[1] = &ffi_type_double;
|
|
64
64
|
cls_struct_fields[2] = NULL;
|
|
@@ -50,15 +50,15 @@ int main (void)
|
|
|
50
50
|
ffi_type cls_struct_type;
|
|
51
51
|
ffi_type* dbl_arg_types[3];
|
|
52
52
|
|
|
53
|
+
struct cls_struct_9byte h_dbl = { 7.0, 8};
|
|
54
|
+
struct cls_struct_9byte j_dbl = { 1.0, 9};
|
|
55
|
+
struct cls_struct_9byte res_dbl;
|
|
56
|
+
|
|
53
57
|
cls_struct_type.size = 0;
|
|
54
58
|
cls_struct_type.alignment = 0;
|
|
55
59
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
56
60
|
cls_struct_type.elements = cls_struct_fields;
|
|
57
61
|
|
|
58
|
-
struct cls_struct_9byte h_dbl = { 7.0, 8};
|
|
59
|
-
struct cls_struct_9byte j_dbl = { 1.0, 9};
|
|
60
|
-
struct cls_struct_9byte res_dbl;
|
|
61
|
-
|
|
62
62
|
cls_struct_fields[0] = &ffi_type_double;
|
|
63
63
|
cls_struct_fields[1] = &ffi_type_sint;
|
|
64
64
|
cls_struct_fields[2] = NULL;
|
|
@@ -52,15 +52,15 @@ int main (void)
|
|
|
52
52
|
ffi_type cls_struct_type;
|
|
53
53
|
ffi_type* dbl_arg_types[5];
|
|
54
54
|
|
|
55
|
+
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
56
|
+
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
57
|
+
struct cls_struct_align res_dbl;
|
|
58
|
+
|
|
55
59
|
cls_struct_type.size = 0;
|
|
56
60
|
cls_struct_type.alignment = 0;
|
|
57
61
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
58
62
|
cls_struct_type.elements = cls_struct_fields;
|
|
59
63
|
|
|
60
|
-
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
61
|
-
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
62
|
-
struct cls_struct_align res_dbl;
|
|
63
|
-
|
|
64
64
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
65
65
|
cls_struct_fields[1] = &ffi_type_double;
|
|
66
66
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -50,15 +50,15 @@ int main (void)
|
|
|
50
50
|
ffi_type cls_struct_type;
|
|
51
51
|
ffi_type* dbl_arg_types[5];
|
|
52
52
|
|
|
53
|
+
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
54
|
+
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
55
|
+
struct cls_struct_align res_dbl;
|
|
56
|
+
|
|
53
57
|
cls_struct_type.size = 0;
|
|
54
58
|
cls_struct_type.alignment = 0;
|
|
55
59
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
56
60
|
cls_struct_type.elements = cls_struct_fields;
|
|
57
61
|
|
|
58
|
-
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
59
|
-
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
60
|
-
struct cls_struct_align res_dbl;
|
|
61
|
-
|
|
62
62
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
63
63
|
cls_struct_fields[1] = &ffi_type_float;
|
|
64
64
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -51,15 +51,15 @@ int main (void)
|
|
|
51
51
|
ffi_type cls_struct_type;
|
|
52
52
|
ffi_type* dbl_arg_types[5];
|
|
53
53
|
|
|
54
|
+
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
55
|
+
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
56
|
+
struct cls_struct_align res_dbl;
|
|
57
|
+
|
|
54
58
|
cls_struct_type.size = 0;
|
|
55
59
|
cls_struct_type.alignment = 0;
|
|
56
60
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
57
61
|
cls_struct_type.elements = cls_struct_fields;
|
|
58
62
|
|
|
59
|
-
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
60
|
-
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
61
|
-
struct cls_struct_align res_dbl;
|
|
62
|
-
|
|
63
63
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
64
64
|
cls_struct_fields[1] = &ffi_type_longdouble;
|
|
65
65
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -4,10 +4,8 @@
|
|
|
4
4
|
PR: none.
|
|
5
5
|
Originator: <hos@tamanegi.org> 20031203 */
|
|
6
6
|
|
|
7
|
-
/* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
|
|
8
7
|
/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
|
|
9
8
|
/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
|
|
10
|
-
/* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
|
|
11
9
|
|
|
12
10
|
#include "ffitest.h"
|
|
13
11
|
|
|
@@ -87,15 +85,15 @@ int main (void)
|
|
|
87
85
|
ffi_type cls_struct_type;
|
|
88
86
|
ffi_type* dbl_arg_types[3];
|
|
89
87
|
|
|
88
|
+
struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
|
|
89
|
+
struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
|
|
90
|
+
struct cls_struct_align res_dbl;
|
|
91
|
+
|
|
90
92
|
cls_struct_type.size = 0;
|
|
91
93
|
cls_struct_type.alignment = 0;
|
|
92
94
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
93
95
|
cls_struct_type.elements = cls_struct_fields;
|
|
94
96
|
|
|
95
|
-
struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
|
|
96
|
-
struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
|
|
97
|
-
struct cls_struct_align res_dbl;
|
|
98
|
-
|
|
99
97
|
cls_struct_fields[0] = &ffi_type_longdouble;
|
|
100
98
|
cls_struct_fields[1] = &ffi_type_longdouble;
|
|
101
99
|
cls_struct_fields[2] = &ffi_type_longdouble;
|
|
@@ -5,10 +5,8 @@
|
|
|
5
5
|
Originator: Blake Chaffin 6/18/2007
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
/* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
|
|
9
8
|
/* { dg-do run { xfail strongarm*-*-* } } */
|
|
10
9
|
/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
|
|
11
|
-
/* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
|
|
12
10
|
|
|
13
11
|
#include "ffitest.h"
|
|
14
12
|
|
|
@@ -67,15 +65,15 @@ int main (void)
|
|
|
67
65
|
ffi_type cls_struct_type;
|
|
68
66
|
ffi_type* dbl_arg_types[3];
|
|
69
67
|
|
|
68
|
+
struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
|
|
69
|
+
struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
|
|
70
|
+
struct cls_struct_align res_dbl;
|
|
71
|
+
|
|
70
72
|
cls_struct_type.size = 0;
|
|
71
73
|
cls_struct_type.alignment = 0;
|
|
72
74
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
73
75
|
cls_struct_type.elements = cls_struct_fields;
|
|
74
76
|
|
|
75
|
-
struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
|
|
76
|
-
struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
|
|
77
|
-
struct cls_struct_align res_dbl;
|
|
78
|
-
|
|
79
77
|
cls_struct_fields[0] = &ffi_type_longdouble;
|
|
80
78
|
cls_struct_fields[1] = &ffi_type_longdouble;
|
|
81
79
|
cls_struct_fields[2] = &ffi_type_longdouble;
|
|
@@ -54,15 +54,15 @@ int main (void)
|
|
|
54
54
|
ffi_type cls_struct_type;
|
|
55
55
|
ffi_type* dbl_arg_types[5];
|
|
56
56
|
|
|
57
|
+
struct cls_struct_align g_dbl = { 12, (void *)4951, 127 };
|
|
58
|
+
struct cls_struct_align f_dbl = { 1, (void *)9320, 13 };
|
|
59
|
+
struct cls_struct_align res_dbl;
|
|
60
|
+
|
|
57
61
|
cls_struct_type.size = 0;
|
|
58
62
|
cls_struct_type.alignment = 0;
|
|
59
63
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
60
64
|
cls_struct_type.elements = cls_struct_fields;
|
|
61
65
|
|
|
62
|
-
struct cls_struct_align g_dbl = { 12, (void *)4951, 127 };
|
|
63
|
-
struct cls_struct_align f_dbl = { 1, (void *)9320, 13 };
|
|
64
|
-
struct cls_struct_align res_dbl;
|
|
65
|
-
|
|
66
66
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
67
67
|
cls_struct_fields[1] = &ffi_type_pointer;
|
|
68
68
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -50,15 +50,15 @@ int main (void)
|
|
|
50
50
|
ffi_type cls_struct_type;
|
|
51
51
|
ffi_type* dbl_arg_types[5];
|
|
52
52
|
|
|
53
|
+
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
54
|
+
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
55
|
+
struct cls_struct_align res_dbl;
|
|
56
|
+
|
|
53
57
|
cls_struct_type.size = 0;
|
|
54
58
|
cls_struct_type.alignment = 0;
|
|
55
59
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
56
60
|
cls_struct_type.elements = cls_struct_fields;
|
|
57
61
|
|
|
58
|
-
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
59
|
-
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
60
|
-
struct cls_struct_align res_dbl;
|
|
61
|
-
|
|
62
62
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
63
63
|
cls_struct_fields[1] = &ffi_type_sshort;
|
|
64
64
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -50,15 +50,15 @@ int main (void)
|
|
|
50
50
|
ffi_type cls_struct_type;
|
|
51
51
|
ffi_type* dbl_arg_types[5];
|
|
52
52
|
|
|
53
|
+
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
54
|
+
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
55
|
+
struct cls_struct_align res_dbl;
|
|
56
|
+
|
|
53
57
|
cls_struct_type.size = 0;
|
|
54
58
|
cls_struct_type.alignment = 0;
|
|
55
59
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
56
60
|
cls_struct_type.elements = cls_struct_fields;
|
|
57
61
|
|
|
58
|
-
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
59
|
-
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
60
|
-
struct cls_struct_align res_dbl;
|
|
61
|
-
|
|
62
62
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
63
63
|
cls_struct_fields[1] = &ffi_type_sint;
|
|
64
64
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -51,15 +51,15 @@ int main (void)
|
|
|
51
51
|
ffi_type cls_struct_type;
|
|
52
52
|
ffi_type* dbl_arg_types[5];
|
|
53
53
|
|
|
54
|
+
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
55
|
+
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
56
|
+
struct cls_struct_align res_dbl;
|
|
57
|
+
|
|
54
58
|
cls_struct_type.size = 0;
|
|
55
59
|
cls_struct_type.alignment = 0;
|
|
56
60
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
57
61
|
cls_struct_type.elements = cls_struct_fields;
|
|
58
62
|
|
|
59
|
-
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
60
|
-
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
61
|
-
struct cls_struct_align res_dbl;
|
|
62
|
-
|
|
63
63
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
64
64
|
cls_struct_fields[1] = &ffi_type_sint64;
|
|
65
65
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -50,15 +50,15 @@ int main (void)
|
|
|
50
50
|
ffi_type cls_struct_type;
|
|
51
51
|
ffi_type* dbl_arg_types[5];
|
|
52
52
|
|
|
53
|
+
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
54
|
+
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
55
|
+
struct cls_struct_align res_dbl;
|
|
56
|
+
|
|
53
57
|
cls_struct_type.size = 0;
|
|
54
58
|
cls_struct_type.alignment = 0;
|
|
55
59
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
56
60
|
cls_struct_type.elements = cls_struct_fields;
|
|
57
61
|
|
|
58
|
-
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
59
|
-
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
60
|
-
struct cls_struct_align res_dbl;
|
|
61
|
-
|
|
62
62
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
63
63
|
cls_struct_fields[1] = &ffi_type_ushort;
|
|
64
64
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -50,15 +50,15 @@ int main (void)
|
|
|
50
50
|
ffi_type cls_struct_type;
|
|
51
51
|
ffi_type* dbl_arg_types[5];
|
|
52
52
|
|
|
53
|
+
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
54
|
+
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
55
|
+
struct cls_struct_align res_dbl;
|
|
56
|
+
|
|
53
57
|
cls_struct_type.size = 0;
|
|
54
58
|
cls_struct_type.alignment = 0;
|
|
55
59
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
56
60
|
cls_struct_type.elements = cls_struct_fields;
|
|
57
61
|
|
|
58
|
-
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
59
|
-
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
60
|
-
struct cls_struct_align res_dbl;
|
|
61
|
-
|
|
62
62
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
63
63
|
cls_struct_fields[1] = &ffi_type_uint;
|
|
64
64
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -52,15 +52,15 @@ int main (void)
|
|
|
52
52
|
ffi_type cls_struct_type;
|
|
53
53
|
ffi_type* dbl_arg_types[5];
|
|
54
54
|
|
|
55
|
+
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
56
|
+
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
57
|
+
struct cls_struct_align res_dbl;
|
|
58
|
+
|
|
55
59
|
cls_struct_type.size = 0;
|
|
56
60
|
cls_struct_type.alignment = 0;
|
|
57
61
|
cls_struct_type.type = FFI_TYPE_STRUCT;
|
|
58
62
|
cls_struct_type.elements = cls_struct_fields;
|
|
59
63
|
|
|
60
|
-
struct cls_struct_align g_dbl = { 12, 4951, 127 };
|
|
61
|
-
struct cls_struct_align f_dbl = { 1, 9320, 13 };
|
|
62
|
-
struct cls_struct_align res_dbl;
|
|
63
|
-
|
|
64
64
|
cls_struct_fields[0] = &ffi_type_uchar;
|
|
65
65
|
cls_struct_fields[1] = &ffi_type_uint64;
|
|
66
66
|
cls_struct_fields[2] = &ffi_type_uchar;
|
|
@@ -37,6 +37,8 @@ int main(int argc __UNUSED__, char** argv __UNUSED__)
|
|
|
37
37
|
ffi_type ts1_type;
|
|
38
38
|
ffi_type* ts1_type_elements[4];
|
|
39
39
|
|
|
40
|
+
Dbls arg = { 1.0, 2.0 };
|
|
41
|
+
|
|
40
42
|
ts1_type.size = 0;
|
|
41
43
|
ts1_type.alignment = 0;
|
|
42
44
|
ts1_type.type = FFI_TYPE_STRUCT;
|
|
@@ -48,8 +50,6 @@ int main(int argc __UNUSED__, char** argv __UNUSED__)
|
|
|
48
50
|
|
|
49
51
|
cl_arg_types[0] = &ts1_type;
|
|
50
52
|
|
|
51
|
-
Dbls arg = { 1.0, 2.0 };
|
|
52
|
-
|
|
53
53
|
/* Initialize the cif */
|
|
54
54
|
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
|
|
55
55
|
&ffi_type_void, cl_arg_types) == FFI_OK);
|
|
@@ -57,10 +57,10 @@ int main(int argc __UNUSED__, char** argv __UNUSED__)
|
|
|
57
57
|
CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_gn, NULL, code) == FFI_OK);
|
|
58
58
|
|
|
59
59
|
((void*(*)(Dbls))(code))(arg);
|
|
60
|
-
/* { dg-output "1.0 2.0
|
|
60
|
+
/* { dg-output "1.0 2.0" } */
|
|
61
61
|
|
|
62
62
|
closure_test_fn(arg);
|
|
63
|
-
/* { dg-output "
|
|
63
|
+
/* { dg-output "\n1.0 2.0" } */
|
|
64
64
|
|
|
65
65
|
return 0;
|
|
66
66
|
}
|