ffi 1.9.18 → 1.9.21
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ffi might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +3 -2
- data/Rakefile +14 -3
- data/ext/ffi_c/AbstractMemory.c +6 -1
- data/ext/ffi_c/Platform.c +10 -2
- data/ext/ffi_c/extconf.rb +7 -2
- data/ext/ffi_c/libffi.bsd.mk +9 -3
- data/ext/ffi_c/libffi.darwin.mk +14 -4
- data/ext/ffi_c/libffi.gnu.mk +2 -1
- data/ext/ffi_c/libffi.mk +9 -4
- 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 +166 -157
- data/ext/ffi_c/libffi/README +164 -52
- data/ext/ffi_c/libffi/acinclude.m4 +381 -0
- data/ext/ffi_c/libffi/autogen.sh +2 -0
- data/ext/ffi_c/libffi/configure.ac +148 -256
- data/ext/ffi_c/libffi/configure.host +265 -4
- data/ext/ffi_c/libffi/doc/Makefile.am +3 -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/generate-darwin-source-and-headers.py +207 -0
- data/ext/ffi_c/libffi/include/Makefile.am +3 -3
- data/ext/ffi_c/libffi/include/ffi.h.in +107 -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/libffi.map.in +80 -0
- data/ext/ffi_c/libffi/libffi.pc.in +3 -2
- data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +637 -0
- data/ext/ffi_c/libffi/libtool-ldflags +106 -0
- data/ext/ffi_c/libffi/libtool-version +1 -1
- 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/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/msvcc.sh +72 -9
- data/ext/ffi_c/libffi/src/aarch64/ffi.c +941 -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 +597 -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 +319 -44
- 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/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 +95 -28
- data/ext/ffi_c/libffi/src/mips/ffitarget.h +9 -2
- data/ext/ffi_c/libffi/src/mips/n32.S +126 -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 +6 -6
- data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +3 -1
- 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 +25 -25
- 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 +100 -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 +589 -500
- data/ext/ffi_c/libffi/src/x86/ffi64.c +338 -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 +78 -73
- data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +120 -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_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/ffi.gemspec +2 -2
- data/lib/ffi/enum.rb +124 -0
- data/lib/ffi/library.rb +65 -13
- data/lib/ffi/platform.rb +7 -2
- data/lib/ffi/platform/sparc64-linux/types.conf +102 -0
- data/lib/ffi/platform/x86_64-windows/types.conf +113 -20
- data/lib/ffi/pointer.rb +1 -0
- data/lib/ffi/struct.rb +0 -2
- data/lib/ffi/version.rb +1 -1
- data/spec/ffi/bitmask_spec.rb +575 -0
- data/spec/ffi/fixtures/BitmaskTest.c +51 -0
- data/spec/ffi/rbx/memory_pointer_spec.rb +4 -0
- data/spec/ffi/struct_spec.rb +0 -4
- metadata +143 -51
- data/ext/ffi_c/libffi/Makefile.in +0 -1820
- 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/config.guess +0 -1501
- data/ext/ffi_c/libffi/config.sub +0 -1705
- data/ext/ffi_c/libffi/configure +0 -17191
- 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/fficonfig.h.in +0 -199
- data/ext/ffi_c/libffi/include/Makefile.in +0 -487
- 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/install-sh +0 -520
- data/ext/ffi_c/libffi/ltmain.sh +0 -9636
- 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/man/Makefile.in +0 -466
- data/ext/ffi_c/libffi/mdate-sh +0 -201
- data/ext/ffi_c/libffi/missing +0 -376
- 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/Makefile.in +0 -500
- 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
@@ -44,20 +44,41 @@
|
|
44
44
|
# modified version of the Autoconf Macro, you may extend this special
|
45
45
|
# exception to the GPL to apply to your modified version as well.
|
46
46
|
|
47
|
-
#serial
|
47
|
+
#serial 11
|
48
48
|
|
49
49
|
AC_DEFUN([AX_COMPILER_VENDOR],
|
50
|
-
[
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
50
|
+
[AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
|
51
|
+
[# note: don't check for gcc first since some other compilers define __GNUC__
|
52
|
+
vendors="intel: __ICC,__ECC,__INTEL_COMPILER
|
53
|
+
ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__
|
54
|
+
pathscale: __PATHCC__,__PATHSCALE__
|
55
|
+
clang: __clang__
|
56
|
+
gnu: __GNUC__
|
57
|
+
sun: __SUNPRO_C,__SUNPRO_CC
|
58
|
+
hp: __HP_cc,__HP_aCC
|
59
|
+
dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
|
60
|
+
borland: __BORLANDC__,__TURBOC__
|
61
|
+
comeau: __COMO__
|
62
|
+
cray: _CRAYC
|
63
|
+
kai: __KCC
|
64
|
+
lcc: __LCC__
|
65
|
+
sgi: __sgi,sgi
|
66
|
+
microsoft: _MSC_VER
|
67
|
+
metrowerks: __MWERKS__
|
68
|
+
watcom: __WATCOMC__
|
69
|
+
portland: __PGI
|
70
|
+
unknown: UNKNOWN"
|
71
|
+
for ventest in $vendors; do
|
72
|
+
case $ventest in
|
73
|
+
*:) vendor=$ventest; continue ;;
|
74
|
+
*) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;;
|
75
|
+
esac
|
56
76
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
|
57
|
-
#if !($vencpp)
|
58
|
-
|
59
|
-
#endif
|
60
|
-
])], [
|
77
|
+
#if !($vencpp)
|
78
|
+
thisisanerror;
|
79
|
+
#endif
|
80
|
+
])], [break])
|
61
81
|
done
|
82
|
+
ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1`
|
62
83
|
])
|
63
84
|
])
|
@@ -79,7 +79,7 @@
|
|
79
79
|
# modified version of the Autoconf Macro, you may extend this special
|
80
80
|
# exception to the GPL to apply to your modified version as well.
|
81
81
|
|
82
|
-
#serial
|
82
|
+
#serial 23
|
83
83
|
|
84
84
|
AC_DEFUN([AX_ENABLE_BUILDDIR],[
|
85
85
|
AC_REQUIRE([AC_CANONICAL_HOST])[]dnl
|
@@ -121,7 +121,8 @@ if test ".$srcdir" = ".." ; then
|
|
121
121
|
test -f $srcdir/$cache_file && mv $srcdir/$cache_file .
|
122
122
|
AC_MSG_RESULT(....exec $SHELL $srcdir/[$]0 "--srcdir=$srcdir" "--enable-builddir=$SUB" ${1+"[$]@"})
|
123
123
|
case "[$]0" in # restart
|
124
|
-
[
|
124
|
+
[[\\/]]* | ?:[[\\/]]*) # Asbolute name
|
125
|
+
eval $SHELL "'[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;;
|
125
126
|
*) eval $SHELL "'$srcdir/[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;;
|
126
127
|
esac ; exit $?
|
127
128
|
fi
|
@@ -204,7 +205,7 @@ a\\
|
|
204
205
|
; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\
|
205
206
|
; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
|
206
207
|
; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
|
207
|
-
; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n"
|
208
|
+
; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\
|
208
209
|
; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\
|
209
210
|
; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
|
210
211
|
; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\
|
@@ -217,7 +218,7 @@ dnl special rule add-on: "dist" copies the tarball to $(PUB). (source tree)
|
|
217
218
|
; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
|
218
219
|
; found=$x echo \$\$BUILD | wc -w $x \\\\\\
|
219
220
|
; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\
|
220
|
-
; if test "\$\$found"
|
221
|
+
; if test "\$\$found" -eq "0" ; then : \\\\\\
|
221
222
|
; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
|
222
223
|
; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
|
223
224
|
; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\
|
@@ -229,7 +230,7 @@ dnl special rule add-on: "dist-foo" copies all the archives to $(PUB). (source t
|
|
229
230
|
; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
|
230
231
|
; found=$x echo \$\$BUILD | wc -w $x \\\\\\
|
231
232
|
; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\
|
232
|
-
; if test "\$\$found"
|
233
|
+
; if test "\$\$found" -eq "0" ; then : \\\\\\
|
233
234
|
; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
|
234
235
|
; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
|
235
236
|
; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\
|
@@ -11,7 +11,7 @@
|
|
11
11
|
# This macro tries to guess the "native" arch corresponding to the target
|
12
12
|
# architecture for use with gcc's -march=arch or -mtune=arch flags. If
|
13
13
|
# found, the cache variable $ax_cv_gcc_archflag is set to this flag and
|
14
|
-
# ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is
|
14
|
+
# ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is set to
|
15
15
|
# "unknown" and ACTION-FAILURE is executed. The default ACTION-SUCCESS is
|
16
16
|
# to add $ax_cv_gcc_archflag to the end of $CFLAGS.
|
17
17
|
#
|
@@ -27,7 +27,7 @@
|
|
27
27
|
# When cross-compiling, or if $CC is not gcc, then ACTION-FAILURE is
|
28
28
|
# called unless the user specified --with-gcc-arch manually.
|
29
29
|
#
|
30
|
-
# Requires macros:
|
30
|
+
# Requires macros: AX_CHECK_COMPILE_FLAG, AX_GCC_X86_CPUID
|
31
31
|
#
|
32
32
|
# (The main emphasis here is on recent CPUs, on the principle that doing
|
33
33
|
# high-performance computing on old hardware is uncommon.)
|
@@ -36,6 +36,7 @@
|
|
36
36
|
#
|
37
37
|
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
|
38
38
|
# Copyright (c) 2008 Matteo Frigo
|
39
|
+
# Copyright (c) 2012 Tsukasa Oi
|
39
40
|
#
|
40
41
|
# This program is free software: you can redistribute it and/or modify it
|
41
42
|
# under the terms of the GNU General Public License as published by the
|
@@ -63,7 +64,7 @@
|
|
63
64
|
# modified version of the Autoconf Macro, you may extend this special
|
64
65
|
# exception to the GPL to apply to your modified version as well.
|
65
66
|
|
66
|
-
#serial
|
67
|
+
#serial 11
|
67
68
|
|
68
69
|
AC_DEFUN([AX_GCC_ARCHFLAG],
|
69
70
|
[AC_REQUIRE([AC_PROG_CC])
|
@@ -84,7 +85,7 @@ if test "x$ax_gcc_arch" = xyes; then
|
|
84
85
|
ax_gcc_arch=""
|
85
86
|
if test "$cross_compiling" = no; then
|
86
87
|
case $host_cpu in
|
87
|
-
i[[3456]]86*|x86_64*) # use cpuid codes
|
88
|
+
i[[3456]]86*|x86_64*) # use cpuid codes
|
88
89
|
AX_GCC_X86_CPUID(0)
|
89
90
|
AX_GCC_X86_CPUID(1)
|
90
91
|
case $ax_cv_gcc_x86_cpuid_0 in
|
@@ -92,18 +93,24 @@ case $host_cpu in
|
|
92
93
|
case $ax_cv_gcc_x86_cpuid_1 in
|
93
94
|
*5[[48]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
|
94
95
|
*5??:*:*:*) ax_gcc_arch=pentium ;;
|
95
|
-
*6[[3456]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
|
96
|
-
*6a?:*[[01]]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
|
97
|
-
*6a?:*[[234]]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
|
98
|
-
*6[[
|
99
|
-
*6[[78b]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
|
100
|
-
*
|
101
|
-
|
96
|
+
*0?6[[3456]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
|
97
|
+
*0?6a?:*[[01]]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
|
98
|
+
*0?6a?:*[[234]]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
|
99
|
+
*0?6[[9de]]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
|
100
|
+
*0?6[[78b]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
|
101
|
+
*0?6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;;
|
102
|
+
*1?6[[7d]]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;;
|
103
|
+
*1?6[[aef]]?:*:*:*|*2?6[[5cef]]?:*:*:*) ax_gcc_arch="corei7 core2 pentium-m pentium3 pentiumpro" ;;
|
104
|
+
*1?6c?:*:*:*|*[[23]]?66?:*:*:*) ax_gcc_arch="atom core2 pentium-m pentium3 pentiumpro" ;;
|
105
|
+
*2?6[[ad]]?:*:*:*) ax_gcc_arch="corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;;
|
106
|
+
*0?6??:*:*:*) ax_gcc_arch=pentiumpro ;;
|
107
|
+
*6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;;
|
108
|
+
?000?f3[[347]]:*:*:*|?000?f4[1347]:*:*:*|?000?f6?:*:*:*)
|
102
109
|
case $host_cpu in
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
110
|
+
x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
|
111
|
+
*) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
|
112
|
+
esac ;;
|
113
|
+
?000?f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
|
107
114
|
esac ;;
|
108
115
|
*:68747541:*:*) # AMD
|
109
116
|
case $ax_cv_gcc_x86_cpuid_1 in
|
@@ -121,10 +128,13 @@ case $host_cpu in
|
|
121
128
|
ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
|
122
129
|
*) ax_gcc_arch="athlon-4 athlon k7" ;;
|
123
130
|
esac ;;
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
131
|
+
?00??f[[4cef8b]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
|
132
|
+
?00??f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
|
133
|
+
?00??f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
|
134
|
+
?00??f??:*:*:*) ax_gcc_arch="k8" ;;
|
135
|
+
?05??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;;
|
136
|
+
?06??f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;;
|
137
|
+
*f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;;
|
128
138
|
esac ;;
|
129
139
|
*:746e6543:*:*) # IDT
|
130
140
|
case $ax_cv_gcc_x86_cpuid_1 in
|
@@ -145,7 +155,7 @@ case $host_cpu in
|
|
145
155
|
sparc*)
|
146
156
|
AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/])
|
147
157
|
cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null`
|
148
|
-
cputype=`echo "$cputype" | tr -d ' -' |tr $as_cr_LETTERS $as_cr_letters`
|
158
|
+
cputype=`echo "$cputype" | tr -d ' -' | sed 's/SPARCIIi/SPARCII/' | tr $as_cr_LETTERS $as_cr_letters`
|
149
159
|
case $cputype in
|
150
160
|
*ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
|
151
161
|
*ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
|
@@ -197,7 +207,7 @@ for arch in $ax_gcc_arch; do
|
|
197
207
|
flags="-march=$arch -mcpu=$arch -m$arch"
|
198
208
|
fi
|
199
209
|
for flag in $flags; do
|
200
|
-
|
210
|
+
AX_CHECK_COMPILE_FLAG($flag, [ax_cv_gcc_archflag=$flag; break])
|
201
211
|
done
|
202
212
|
test "x$ax_cv_gcc_archflag" = xunknown || break
|
203
213
|
done
|
data/ext/ffi_c/libffi/man/ffi.3
CHANGED
@@ -16,6 +16,15 @@ libffi, -lffi
|
|
16
16
|
.Fa "ffi_type **atypes"
|
17
17
|
.Fc
|
18
18
|
.Ft void
|
19
|
+
.Fo ffi_prep_cif_var
|
20
|
+
.Fa "ffi_cif *cif"
|
21
|
+
.Fa "ffi_abi abi"
|
22
|
+
.Fa "unsigned int nfixedargs"
|
23
|
+
.Fa "unsigned int ntotalargs"
|
24
|
+
.Fa "ffi_type *rtype"
|
25
|
+
.Fa "ffi_type **atypes"
|
26
|
+
.Fc
|
27
|
+
.Ft void
|
19
28
|
.Fo ffi_call
|
20
29
|
.Fa "ffi_cif *cif"
|
21
30
|
.Fa "void (*fn)(void)"
|
@@ -28,4 +37,5 @@ generate a call to another function at runtime without requiring knowledge of
|
|
28
37
|
the called function's interface at compile time.
|
29
38
|
.Sh SEE ALSO
|
30
39
|
.Xr ffi_prep_cif 3 ,
|
40
|
+
.Xr ffi_prep_cif_var 3 ,
|
31
41
|
.Xr ffi_call 3
|
@@ -37,7 +37,9 @@ structs that describe the data type, size and alignment of each argument.
|
|
37
37
|
points to an
|
38
38
|
.Nm ffi_type
|
39
39
|
that describes the data type, size and alignment of the
|
40
|
-
return value.
|
40
|
+
return value. Note that to call a variadic function
|
41
|
+
.Nm ffi_prep_cif_var
|
42
|
+
must be used instead.
|
41
43
|
.Sh RETURN VALUES
|
42
44
|
Upon successful completion,
|
43
45
|
.Nm ffi_prep_cif
|
@@ -59,8 +61,8 @@ does not refer to a valid ABI,
|
|
59
61
|
.Nm FFI_BAD_ABI
|
60
62
|
will be returned. Available ABIs are
|
61
63
|
defined in
|
62
|
-
.Nm <ffitarget.h>
|
63
|
-
.
|
64
|
+
.Nm <ffitarget.h> .
|
64
65
|
.Sh SEE ALSO
|
65
66
|
.Xr ffi 3 ,
|
66
|
-
.Xr ffi_call 3
|
67
|
+
.Xr ffi_call 3 ,
|
68
|
+
.Xr ffi_prep_cif_var 3
|
@@ -0,0 +1,73 @@
|
|
1
|
+
.Dd January 25, 2011
|
2
|
+
.Dt ffi_prep_cif_var 3
|
3
|
+
.Sh NAME
|
4
|
+
.Nm ffi_prep_cif_var
|
5
|
+
.Nd Prepare a
|
6
|
+
.Nm ffi_cif
|
7
|
+
structure for use with
|
8
|
+
.Nm ffi_call
|
9
|
+
for variadic functions.
|
10
|
+
.Sh SYNOPSIS
|
11
|
+
.In ffi.h
|
12
|
+
.Ft ffi_status
|
13
|
+
.Fo ffi_prep_cif_var
|
14
|
+
.Fa "ffi_cif *cif"
|
15
|
+
.Fa "ffi_abi abi"
|
16
|
+
.Fa "unsigned int nfixedargs"
|
17
|
+
.Fa "unsigned int ntotalargs"
|
18
|
+
.Fa "ffi_type *rtype"
|
19
|
+
.Fa "ffi_type **atypes"
|
20
|
+
.Fc
|
21
|
+
.Sh DESCRIPTION
|
22
|
+
The
|
23
|
+
.Nm ffi_prep_cif_var
|
24
|
+
function prepares a
|
25
|
+
.Nm ffi_cif
|
26
|
+
structure for use with
|
27
|
+
.Nm ffi_call
|
28
|
+
for variadic functions.
|
29
|
+
.Fa abi
|
30
|
+
specifies a set of calling conventions to use.
|
31
|
+
.Fa atypes
|
32
|
+
is an array of
|
33
|
+
.Fa ntotalargs
|
34
|
+
pointers to
|
35
|
+
.Nm ffi_type
|
36
|
+
structs that describe the data type, size and alignment of each argument.
|
37
|
+
.Fa rtype
|
38
|
+
points to an
|
39
|
+
.Nm ffi_type
|
40
|
+
that describes the data type, size and alignment of the
|
41
|
+
return value.
|
42
|
+
.Fa nfixedargs
|
43
|
+
must contain the number of fixed (non-variadic) arguments.
|
44
|
+
Note that to call a non-variadic function
|
45
|
+
.Nm ffi_prep_cif
|
46
|
+
must be used.
|
47
|
+
.Sh RETURN VALUES
|
48
|
+
Upon successful completion,
|
49
|
+
.Nm ffi_prep_cif_var
|
50
|
+
returns
|
51
|
+
.Nm FFI_OK .
|
52
|
+
It will return
|
53
|
+
.Nm FFI_BAD_TYPEDEF
|
54
|
+
if
|
55
|
+
.Fa cif
|
56
|
+
is
|
57
|
+
.Nm NULL
|
58
|
+
or
|
59
|
+
.Fa atypes
|
60
|
+
or
|
61
|
+
.Fa rtype
|
62
|
+
is malformed. If
|
63
|
+
.Fa abi
|
64
|
+
does not refer to a valid ABI,
|
65
|
+
.Nm FFI_BAD_ABI
|
66
|
+
will be returned. Available ABIs are
|
67
|
+
defined in
|
68
|
+
.Nm <ffitarget.h>
|
69
|
+
.
|
70
|
+
.Sh SEE ALSO
|
71
|
+
.Xr ffi 3 ,
|
72
|
+
.Xr ffi_call 3 ,
|
73
|
+
.Xr ffi_prep_cif 3
|
data/ext/ffi_c/libffi/msvcc.sh
CHANGED
@@ -42,8 +42,10 @@
|
|
42
42
|
# format and translated into something sensible for cl or ml.
|
43
43
|
#
|
44
44
|
|
45
|
+
args_orig=$@
|
45
46
|
args="-nologo -W3"
|
46
|
-
|
47
|
+
static_crt=
|
48
|
+
debug_crt=
|
47
49
|
cl="cl"
|
48
50
|
ml="ml"
|
49
51
|
safeseh="-safeseh"
|
@@ -53,6 +55,10 @@ while [ $# -gt 0 ]
|
|
53
55
|
do
|
54
56
|
case $1
|
55
57
|
in
|
58
|
+
--version)
|
59
|
+
args="-help"
|
60
|
+
shift 1
|
61
|
+
;;
|
56
62
|
-fexceptions)
|
57
63
|
# Don't enable exceptions for now.
|
58
64
|
#args="$args -EHac"
|
@@ -62,31 +68,64 @@ do
|
|
62
68
|
shift 1
|
63
69
|
;;
|
64
70
|
-m64)
|
65
|
-
cl="cl" # "$MSVC/x86_amd64/cl"
|
66
71
|
ml="ml64" # "$MSVC/x86_amd64/ml64"
|
67
72
|
safeseh=
|
68
73
|
shift 1
|
69
74
|
;;
|
75
|
+
-clang-cl)
|
76
|
+
cl="clang-cl"
|
77
|
+
shift 1
|
78
|
+
;;
|
70
79
|
-O0)
|
71
80
|
args="$args -Od"
|
72
81
|
shift 1
|
73
82
|
;;
|
74
83
|
-O*)
|
75
|
-
#
|
76
|
-
#
|
77
|
-
|
84
|
+
# Runtime error checks (enabled by setting -RTC1 in the -DFFI_DEBUG
|
85
|
+
# case below) are not compatible with optimization flags and will
|
86
|
+
# cause the build to fail. Therefore, drop the optimization flag if
|
87
|
+
# -DFFI_DEBUG is also set.
|
88
|
+
case $args_orig in
|
89
|
+
*-DFFI_DEBUG*)
|
90
|
+
args="$args"
|
91
|
+
;;
|
92
|
+
*)
|
93
|
+
# The ax_cc_maxopt.m4 macro from the upstream autoconf-archive
|
94
|
+
# project doesn't support MSVC and therefore ends up trying to
|
95
|
+
# use -O3. Use the equivalent "max optimization" flag for MSVC
|
96
|
+
# instead of erroring out.
|
97
|
+
case $1 in
|
98
|
+
-O3)
|
99
|
+
args="$args -O2"
|
100
|
+
;;
|
101
|
+
*)
|
102
|
+
args="$args $1"
|
103
|
+
;;
|
104
|
+
esac
|
105
|
+
opt="true"
|
106
|
+
;;
|
107
|
+
esac
|
78
108
|
shift 1
|
79
109
|
;;
|
80
110
|
-g)
|
81
111
|
# Enable debug symbol generation.
|
82
|
-
args="$args -Zi
|
112
|
+
args="$args -Zi"
|
83
113
|
shift 1
|
84
114
|
;;
|
85
115
|
-DFFI_DEBUG)
|
86
|
-
#
|
116
|
+
# Enable runtime error checks.
|
87
117
|
args="$args -RTC1"
|
88
118
|
defines="$defines $1"
|
89
|
-
|
119
|
+
shift 1
|
120
|
+
;;
|
121
|
+
-DUSE_STATIC_RTL)
|
122
|
+
# Link against static CRT.
|
123
|
+
static_crt=1
|
124
|
+
shift 1
|
125
|
+
;;
|
126
|
+
-DUSE_DEBUG_RTL)
|
127
|
+
# Link against debug CRT.
|
128
|
+
debug_crt=1
|
90
129
|
shift 1
|
91
130
|
;;
|
92
131
|
-c)
|
@@ -126,6 +165,10 @@ do
|
|
126
165
|
# to do here.
|
127
166
|
shift 1
|
128
167
|
;;
|
168
|
+
-pedantic)
|
169
|
+
# libffi tests -pedantic with -Wall, so drop it also.
|
170
|
+
shift 1
|
171
|
+
;;
|
129
172
|
-Werror)
|
130
173
|
args="$args -WX"
|
131
174
|
shift 1
|
@@ -170,6 +213,23 @@ do
|
|
170
213
|
esac
|
171
214
|
done
|
172
215
|
|
216
|
+
# If -Zi is specified, certain optimizations are implicitly disabled
|
217
|
+
# by MSVC. Add back those optimizations if this is an optimized build.
|
218
|
+
# NOTE: These arguments must come after all others.
|
219
|
+
if [ -n "$opt" ]; then
|
220
|
+
args="$args -link -OPT:REF -OPT:ICF -INCREMENTAL:NO"
|
221
|
+
fi
|
222
|
+
|
223
|
+
if [ -n "$static_crt" ]; then
|
224
|
+
md=-MT
|
225
|
+
else
|
226
|
+
md=-MD
|
227
|
+
fi
|
228
|
+
|
229
|
+
if [ -n "$debug_crt" ]; then
|
230
|
+
md="${md}d"
|
231
|
+
fi
|
232
|
+
|
173
233
|
if [ -n "$assembly" ]; then
|
174
234
|
if [ -z "$outdir" ]; then
|
175
235
|
outdir="."
|
@@ -189,7 +249,10 @@ if [ -n "$assembly" ]; then
|
|
189
249
|
else
|
190
250
|
args="$md $args"
|
191
251
|
echo "$cl $args"
|
192
|
-
|
252
|
+
# Return an error code of 1 if an invalid command line parameter is passed
|
253
|
+
# instead of just ignoring it.
|
254
|
+
eval "(\"$cl\" $args 2>&1 1>&3 | \
|
255
|
+
awk '{print \$0} /D9002/ {error=1} END{exit error}' >&2) 3>&1"
|
193
256
|
result=$?
|
194
257
|
fi
|
195
258
|
|