ffi 1.9.18-x86-mingw32 → 1.9.21-x86-mingw32
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 +5 -5
- data/README.md +3 -2
- data/Rakefile +14 -4
- 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/Makefile.in +923 -938
- data/ext/ffi_c/libffi/README +164 -52
- data/ext/ffi_c/libffi/acinclude.m4 +381 -0
- data/ext/ffi_c/libffi/aclocal.m4 +645 -384
- data/ext/ffi_c/libffi/autogen.sh +2 -0
- data/ext/ffi_c/libffi/autom4te.cache/output.0 +21972 -0
- data/ext/ffi_c/libffi/autom4te.cache/output.1 +21972 -0
- data/ext/ffi_c/libffi/autom4te.cache/output.2 +21972 -0
- data/ext/ffi_c/libffi/autom4te.cache/output.3 +21972 -0
- data/ext/ffi_c/libffi/autom4te.cache/requests +331 -0
- data/ext/ffi_c/libffi/autom4te.cache/traces.0 +4010 -0
- data/ext/ffi_c/libffi/autom4te.cache/traces.1 +1005 -0
- data/ext/ffi_c/libffi/autom4te.cache/traces.2 +4010 -0
- data/ext/ffi_c/libffi/autom4te.cache/traces.3 +4010 -0
- data/ext/ffi_c/libffi/compile +218 -14
- data/ext/ffi_c/libffi/config.guess +329 -368
- data/ext/ffi_c/libffi/config.sub +232 -112
- data/ext/ffi_c/libffi/configure +6970 -2189
- data/ext/ffi_c/libffi/configure.ac +148 -256
- data/ext/ffi_c/libffi/configure.host +265 -4
- data/ext/ffi_c/libffi/depcomp +346 -185
- 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/{mdate-sh → doc/mdate-sh} +40 -13
- data/ext/ffi_c/libffi/{texinfo.tex → doc/texinfo.tex} +3990 -1121
- 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/fficonfig.h.in~ +210 -0
- 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/Makefile.in +188 -71
- 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/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 +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/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/m4/libtool.m4 +1691 -1135
- data/ext/ffi_c/libffi/m4/ltoptions.m4 +104 -36
- data/ext/ffi_c/libffi/m4/ltsugar.m4 +4 -3
- data/ext/ffi_c/libffi/m4/ltversion.m4 +6 -6
- data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +4 -3
- 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 +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/Makefile.in +218 -111
- 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/2.0/ffi_c.so +0 -0
- data/lib/2.1/ffi_c.so +0 -0
- data/lib/2.2/ffi_c.so +0 -0
- data/lib/2.3/ffi_c.so +0 -0
- data/lib/2.4/ffi_c.so +0 -0
- data/lib/2.5/ffi_c.so +0 -0
- 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/embed-test/ext/Makefile +242 -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 +158 -32
- data/ext/ffi_c/libffi/Makefile.vc +0 -141
- data/ext/ffi_c/libffi/Makefile.vc64 +0 -141
- data/ext/ffi_c/libffi/build-ios.sh +0 -67
- 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/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
@@ -1,4 +1,4 @@
|
|
1
|
-
@set UPDATED
|
2
|
-
@set UPDATED-MONTH
|
3
|
-
@set EDITION 3.
|
4
|
-
@set VERSION 3.
|
1
|
+
@set UPDATED 8 November 2014
|
2
|
+
@set UPDATED-MONTH November 2014
|
3
|
+
@set EDITION 3.2.1
|
4
|
+
@set VERSION 3.2.1
|
@@ -20,13 +20,16 @@
|
|
20
20
|
/* Cannot use PROT_EXEC on this target, so, we revert to alternative means */
|
21
21
|
#undef FFI_EXEC_TRAMPOLINE_TABLE
|
22
22
|
|
23
|
+
/* Define this if you want to enable pax emulated trampolines */
|
24
|
+
#undef FFI_MMAP_EXEC_EMUTRAMP_PAX
|
25
|
+
|
23
26
|
/* Cannot use malloc on this target, so, we revert to alternative means */
|
24
27
|
#undef FFI_MMAP_EXEC_WRIT
|
25
28
|
|
26
|
-
/* Define this
|
29
|
+
/* Define this if you do not want support for the raw API. */
|
27
30
|
#undef FFI_NO_RAW_API
|
28
31
|
|
29
|
-
/* Define this
|
32
|
+
/* Define this if you do not want support for aggregate types. */
|
30
33
|
#undef FFI_NO_STRUCTS
|
31
34
|
|
32
35
|
/* Define to 1 if you have `alloca', as a function or macro. */
|
@@ -36,22 +39,19 @@
|
|
36
39
|
*/
|
37
40
|
#undef HAVE_ALLOCA_H
|
38
41
|
|
39
|
-
/* Define if your assembler supports .ascii. */
|
40
|
-
#undef HAVE_AS_ASCII_PSEUDO_OP
|
41
|
-
|
42
42
|
/* Define if your assembler supports .cfi_* directives. */
|
43
43
|
#undef HAVE_AS_CFI_PSEUDO_OP
|
44
44
|
|
45
45
|
/* Define if your assembler supports .register. */
|
46
46
|
#undef HAVE_AS_REGISTER_PSEUDO_OP
|
47
47
|
|
48
|
+
/* Define if the compiler uses zarch features. */
|
49
|
+
#undef HAVE_AS_S390_ZARCH
|
50
|
+
|
48
51
|
/* Define if your assembler and linker support unaligned PC relative relocs.
|
49
52
|
*/
|
50
53
|
#undef HAVE_AS_SPARC_UA_PCREL
|
51
54
|
|
52
|
-
/* Define if your assembler supports .string. */
|
53
|
-
#undef HAVE_AS_STRING_PSEUDO_OP
|
54
|
-
|
55
55
|
/* Define if your assembler supports unwind section type. */
|
56
56
|
#undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE
|
57
57
|
|
@@ -70,12 +70,18 @@
|
|
70
70
|
/* Define if you have the long double type and it is bigger than a double */
|
71
71
|
#undef HAVE_LONG_DOUBLE
|
72
72
|
|
73
|
+
/* Define if you support more than one size of the long double type */
|
74
|
+
#undef HAVE_LONG_DOUBLE_VARIANT
|
75
|
+
|
73
76
|
/* Define to 1 if you have the `memcpy' function. */
|
74
77
|
#undef HAVE_MEMCPY
|
75
78
|
|
76
79
|
/* Define to 1 if you have the <memory.h> header file. */
|
77
80
|
#undef HAVE_MEMORY_H
|
78
81
|
|
82
|
+
/* Define to 1 if you have the `mkostemp' function. */
|
83
|
+
#undef HAVE_MKOSTEMP
|
84
|
+
|
79
85
|
/* Define to 1 if you have the `mmap' function. */
|
80
86
|
#undef HAVE_MMAP
|
81
87
|
|
@@ -115,12 +121,11 @@
|
|
115
121
|
/* Define to 1 if you have the <unistd.h> header file. */
|
116
122
|
#undef HAVE_UNISTD_H
|
117
123
|
|
118
|
-
/* Define to
|
119
|
-
|
120
|
-
#undef LT_OBJDIR
|
124
|
+
/* Define to 1 if GNU symbol versioning is used for libatomic. */
|
125
|
+
#undef LIBFFI_GNU_SYMBOL_VERSIONING
|
121
126
|
|
122
|
-
/* Define to
|
123
|
-
#undef
|
127
|
+
/* Define to the sub-directory where libtool stores uninstalled libraries. */
|
128
|
+
#undef LT_OBJDIR
|
124
129
|
|
125
130
|
/* Name of package */
|
126
131
|
#undef PACKAGE
|
@@ -149,6 +154,9 @@
|
|
149
154
|
/* The size of `long double', as computed by sizeof. */
|
150
155
|
#undef SIZEOF_LONG_DOUBLE
|
151
156
|
|
157
|
+
/* The size of `size_t', as computed by sizeof. */
|
158
|
+
#undef SIZEOF_SIZE_T
|
159
|
+
|
152
160
|
/* If using the C implementation of alloca, define if you know the
|
153
161
|
direction of stack growth for your system; otherwise it will be
|
154
162
|
automatically deduced at runtime.
|
@@ -160,6 +168,9 @@
|
|
160
168
|
/* Define to 1 if you have the ANSI C header files. */
|
161
169
|
#undef STDC_HEADERS
|
162
170
|
|
171
|
+
/* Define if symbols are underscored. */
|
172
|
+
#undef SYMBOL_UNDERSCORE
|
173
|
+
|
163
174
|
/* Define this if you are using Purify and want to suppress spurious messages.
|
164
175
|
*/
|
165
176
|
#undef USING_PURIFY
|
@@ -0,0 +1,210 @@
|
|
1
|
+
/* fficonfig.h.in. Generated from configure.ac by autoheader. */
|
2
|
+
|
3
|
+
/* Define if building universal (internal helper macro) */
|
4
|
+
#undef AC_APPLE_UNIVERSAL_BUILD
|
5
|
+
|
6
|
+
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
7
|
+
systems. This function is required for `alloca.c' support on those systems.
|
8
|
+
*/
|
9
|
+
#undef CRAY_STACKSEG_END
|
10
|
+
|
11
|
+
/* Define to 1 if using `alloca.c'. */
|
12
|
+
#undef C_ALLOCA
|
13
|
+
|
14
|
+
/* Define to the flags needed for the .section .eh_frame directive. */
|
15
|
+
#undef EH_FRAME_FLAGS
|
16
|
+
|
17
|
+
/* Define this if you want extra debugging. */
|
18
|
+
#undef FFI_DEBUG
|
19
|
+
|
20
|
+
/* Cannot use PROT_EXEC on this target, so, we revert to alternative means */
|
21
|
+
#undef FFI_EXEC_TRAMPOLINE_TABLE
|
22
|
+
|
23
|
+
/* Define this if you want to enable pax emulated trampolines */
|
24
|
+
#undef FFI_MMAP_EXEC_EMUTRAMP_PAX
|
25
|
+
|
26
|
+
/* Cannot use malloc on this target, so, we revert to alternative means */
|
27
|
+
#undef FFI_MMAP_EXEC_WRIT
|
28
|
+
|
29
|
+
/* Define this if you do not want support for the raw API. */
|
30
|
+
#undef FFI_NO_RAW_API
|
31
|
+
|
32
|
+
/* Define this if you do not want support for aggregate types. */
|
33
|
+
#undef FFI_NO_STRUCTS
|
34
|
+
|
35
|
+
/* Define to 1 if you have `alloca', as a function or macro. */
|
36
|
+
#undef HAVE_ALLOCA
|
37
|
+
|
38
|
+
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
|
39
|
+
*/
|
40
|
+
#undef HAVE_ALLOCA_H
|
41
|
+
|
42
|
+
/* Define if your assembler supports .cfi_* directives. */
|
43
|
+
#undef HAVE_AS_CFI_PSEUDO_OP
|
44
|
+
|
45
|
+
/* Define if your assembler supports .register. */
|
46
|
+
#undef HAVE_AS_REGISTER_PSEUDO_OP
|
47
|
+
|
48
|
+
/* Define if the compiler uses zarch features. */
|
49
|
+
#undef HAVE_AS_S390_ZARCH
|
50
|
+
|
51
|
+
/* Define if your assembler and linker support unaligned PC relative relocs.
|
52
|
+
*/
|
53
|
+
#undef HAVE_AS_SPARC_UA_PCREL
|
54
|
+
|
55
|
+
/* Define if your assembler supports unwind section type. */
|
56
|
+
#undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE
|
57
|
+
|
58
|
+
/* Define if your assembler supports PC relative relocs. */
|
59
|
+
#undef HAVE_AS_X86_PCREL
|
60
|
+
|
61
|
+
/* Define to 1 if you have the <dlfcn.h> header file. */
|
62
|
+
#undef HAVE_DLFCN_H
|
63
|
+
|
64
|
+
/* Define if __attribute__((visibility("hidden"))) is supported. */
|
65
|
+
#undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
|
66
|
+
|
67
|
+
/* Define to 1 if you have the <inttypes.h> header file. */
|
68
|
+
#undef HAVE_INTTYPES_H
|
69
|
+
|
70
|
+
/* Define if you have the long double type and it is bigger than a double */
|
71
|
+
#undef HAVE_LONG_DOUBLE
|
72
|
+
|
73
|
+
/* Define if you support more than one size of the long double type */
|
74
|
+
#undef HAVE_LONG_DOUBLE_VARIANT
|
75
|
+
|
76
|
+
/* Define to 1 if you have the `memcpy' function. */
|
77
|
+
#undef HAVE_MEMCPY
|
78
|
+
|
79
|
+
/* Define to 1 if you have the <memory.h> header file. */
|
80
|
+
#undef HAVE_MEMORY_H
|
81
|
+
|
82
|
+
/* Define to 1 if you have the `mkostemp' function. */
|
83
|
+
#undef HAVE_MKOSTEMP
|
84
|
+
|
85
|
+
/* Define to 1 if you have the `mmap' function. */
|
86
|
+
#undef HAVE_MMAP
|
87
|
+
|
88
|
+
/* Define if mmap with MAP_ANON(YMOUS) works. */
|
89
|
+
#undef HAVE_MMAP_ANON
|
90
|
+
|
91
|
+
/* Define if mmap of /dev/zero works. */
|
92
|
+
#undef HAVE_MMAP_DEV_ZERO
|
93
|
+
|
94
|
+
/* Define if read-only mmap of a plain file works. */
|
95
|
+
#undef HAVE_MMAP_FILE
|
96
|
+
|
97
|
+
/* Define if .eh_frame sections should be read-only. */
|
98
|
+
#undef HAVE_RO_EH_FRAME
|
99
|
+
|
100
|
+
/* Define to 1 if you have the <stdint.h> header file. */
|
101
|
+
#undef HAVE_STDINT_H
|
102
|
+
|
103
|
+
/* Define to 1 if you have the <stdlib.h> header file. */
|
104
|
+
#undef HAVE_STDLIB_H
|
105
|
+
|
106
|
+
/* Define to 1 if you have the <strings.h> header file. */
|
107
|
+
#undef HAVE_STRINGS_H
|
108
|
+
|
109
|
+
/* Define to 1 if you have the <string.h> header file. */
|
110
|
+
#undef HAVE_STRING_H
|
111
|
+
|
112
|
+
/* Define to 1 if you have the <sys/mman.h> header file. */
|
113
|
+
#undef HAVE_SYS_MMAN_H
|
114
|
+
|
115
|
+
/* Define to 1 if you have the <sys/stat.h> header file. */
|
116
|
+
#undef HAVE_SYS_STAT_H
|
117
|
+
|
118
|
+
/* Define to 1 if you have the <sys/types.h> header file. */
|
119
|
+
#undef HAVE_SYS_TYPES_H
|
120
|
+
|
121
|
+
/* Define to 1 if you have the <unistd.h> header file. */
|
122
|
+
#undef HAVE_UNISTD_H
|
123
|
+
|
124
|
+
/* Define to 1 if GNU symbol versioning is used for libatomic. */
|
125
|
+
#undef LIBFFI_GNU_SYMBOL_VERSIONING
|
126
|
+
|
127
|
+
/* Define to the sub-directory where libtool stores uninstalled libraries. */
|
128
|
+
#undef LT_OBJDIR
|
129
|
+
|
130
|
+
/* Name of package */
|
131
|
+
#undef PACKAGE
|
132
|
+
|
133
|
+
/* Define to the address where bug reports for this package should be sent. */
|
134
|
+
#undef PACKAGE_BUGREPORT
|
135
|
+
|
136
|
+
/* Define to the full name of this package. */
|
137
|
+
#undef PACKAGE_NAME
|
138
|
+
|
139
|
+
/* Define to the full name and version of this package. */
|
140
|
+
#undef PACKAGE_STRING
|
141
|
+
|
142
|
+
/* Define to the one symbol short name of this package. */
|
143
|
+
#undef PACKAGE_TARNAME
|
144
|
+
|
145
|
+
/* Define to the home page for this package. */
|
146
|
+
#undef PACKAGE_URL
|
147
|
+
|
148
|
+
/* Define to the version of this package. */
|
149
|
+
#undef PACKAGE_VERSION
|
150
|
+
|
151
|
+
/* The size of `double', as computed by sizeof. */
|
152
|
+
#undef SIZEOF_DOUBLE
|
153
|
+
|
154
|
+
/* The size of `long double', as computed by sizeof. */
|
155
|
+
#undef SIZEOF_LONG_DOUBLE
|
156
|
+
|
157
|
+
/* The size of `size_t', as computed by sizeof. */
|
158
|
+
#undef SIZEOF_SIZE_T
|
159
|
+
|
160
|
+
/* If using the C implementation of alloca, define if you know the
|
161
|
+
direction of stack growth for your system; otherwise it will be
|
162
|
+
automatically deduced at runtime.
|
163
|
+
STACK_DIRECTION > 0 => grows toward higher addresses
|
164
|
+
STACK_DIRECTION < 0 => grows toward lower addresses
|
165
|
+
STACK_DIRECTION = 0 => direction of growth unknown */
|
166
|
+
#undef STACK_DIRECTION
|
167
|
+
|
168
|
+
/* Define to 1 if you have the ANSI C header files. */
|
169
|
+
#undef STDC_HEADERS
|
170
|
+
|
171
|
+
/* Define if symbols are underscored. */
|
172
|
+
#undef SYMBOL_UNDERSCORE
|
173
|
+
|
174
|
+
/* Define this if you are using Purify and want to suppress spurious messages.
|
175
|
+
*/
|
176
|
+
#undef USING_PURIFY
|
177
|
+
|
178
|
+
/* Version number of package */
|
179
|
+
#undef VERSION
|
180
|
+
|
181
|
+
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
182
|
+
significant byte first (like Motorola and SPARC, unlike Intel). */
|
183
|
+
#if defined AC_APPLE_UNIVERSAL_BUILD
|
184
|
+
# if defined __BIG_ENDIAN__
|
185
|
+
# define WORDS_BIGENDIAN 1
|
186
|
+
# endif
|
187
|
+
#else
|
188
|
+
# ifndef WORDS_BIGENDIAN
|
189
|
+
# undef WORDS_BIGENDIAN
|
190
|
+
# endif
|
191
|
+
#endif
|
192
|
+
|
193
|
+
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
194
|
+
#undef size_t
|
195
|
+
|
196
|
+
|
197
|
+
#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
|
198
|
+
#ifdef LIBFFI_ASM
|
199
|
+
#define FFI_HIDDEN(name) .hidden name
|
200
|
+
#else
|
201
|
+
#define FFI_HIDDEN __attribute__ ((visibility ("hidden")))
|
202
|
+
#endif
|
203
|
+
#else
|
204
|
+
#ifdef LIBFFI_ASM
|
205
|
+
#define FFI_HIDDEN(name)
|
206
|
+
#else
|
207
|
+
#define FFI_HIDDEN
|
208
|
+
#endif
|
209
|
+
#endif
|
210
|
+
|
@@ -0,0 +1,207 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
import subprocess
|
3
|
+
import os
|
4
|
+
import errno
|
5
|
+
import collections
|
6
|
+
import glob
|
7
|
+
import argparse
|
8
|
+
|
9
|
+
class Platform(object):
|
10
|
+
pass
|
11
|
+
|
12
|
+
class simulator_platform(Platform):
|
13
|
+
directory = 'darwin_ios'
|
14
|
+
sdk = 'iphonesimulator'
|
15
|
+
arch = 'i386'
|
16
|
+
triple = 'i386-apple-darwin11'
|
17
|
+
version_min = '-miphoneos-version-min=7.0'
|
18
|
+
|
19
|
+
prefix = "#ifdef __i386__\n\n"
|
20
|
+
suffix = "\n\n#endif"
|
21
|
+
src_dir = 'x86'
|
22
|
+
src_files = ['sysv.S', 'ffi.c']
|
23
|
+
|
24
|
+
|
25
|
+
class simulator64_platform(Platform):
|
26
|
+
directory = 'darwin_ios'
|
27
|
+
sdk = 'iphonesimulator'
|
28
|
+
arch = 'x86_64'
|
29
|
+
triple = 'x86_64-apple-darwin13'
|
30
|
+
version_min = '-miphoneos-version-min=7.0'
|
31
|
+
|
32
|
+
prefix = "#ifdef __x86_64__\n\n"
|
33
|
+
suffix = "\n\n#endif"
|
34
|
+
src_dir = 'x86'
|
35
|
+
src_files = ['unix64.S', 'ffi64.c']
|
36
|
+
|
37
|
+
|
38
|
+
class device_platform(Platform):
|
39
|
+
directory = 'darwin_ios'
|
40
|
+
sdk = 'iphoneos'
|
41
|
+
arch = 'armv7'
|
42
|
+
triple = 'arm-apple-darwin11'
|
43
|
+
version_min = '-miphoneos-version-min=7.0'
|
44
|
+
|
45
|
+
prefix = "#ifdef __arm__\n\n"
|
46
|
+
suffix = "\n\n#endif"
|
47
|
+
src_dir = 'arm'
|
48
|
+
src_files = ['sysv.S', 'trampoline.S', 'ffi.c']
|
49
|
+
|
50
|
+
|
51
|
+
class device64_platform(Platform):
|
52
|
+
directory = 'darwin_ios'
|
53
|
+
sdk = 'iphoneos'
|
54
|
+
arch = 'arm64'
|
55
|
+
triple = 'aarch64-apple-darwin13'
|
56
|
+
version_min = '-miphoneos-version-min=7.0'
|
57
|
+
|
58
|
+
prefix = "#ifdef __arm64__\n\n"
|
59
|
+
suffix = "\n\n#endif"
|
60
|
+
src_dir = 'aarch64'
|
61
|
+
src_files = ['sysv.S', 'ffi.c']
|
62
|
+
|
63
|
+
|
64
|
+
class desktop32_platform(Platform):
|
65
|
+
directory = 'darwin_osx'
|
66
|
+
sdk = 'macosx'
|
67
|
+
arch = 'i386'
|
68
|
+
triple = 'i386-apple-darwin10'
|
69
|
+
version_min = '-mmacosx-version-min=10.6'
|
70
|
+
src_dir = 'x86'
|
71
|
+
src_files = ['sysv.S', 'ffi.c']
|
72
|
+
|
73
|
+
prefix = "#ifdef __i386__\n\n"
|
74
|
+
suffix = "\n\n#endif"
|
75
|
+
|
76
|
+
|
77
|
+
class desktop64_platform(Platform):
|
78
|
+
directory = 'darwin_osx'
|
79
|
+
sdk = 'macosx'
|
80
|
+
arch = 'x86_64'
|
81
|
+
triple = 'x86_64-apple-darwin10'
|
82
|
+
version_min = '-mmacosx-version-min=10.6'
|
83
|
+
|
84
|
+
prefix = "#ifdef __x86_64__\n\n"
|
85
|
+
suffix = "\n\n#endif"
|
86
|
+
src_dir = 'x86'
|
87
|
+
src_files = ['unix64.S', 'ffi64.c']
|
88
|
+
|
89
|
+
|
90
|
+
def mkdir_p(path):
|
91
|
+
try:
|
92
|
+
os.makedirs(path)
|
93
|
+
except OSError as exc: # Python >2.5
|
94
|
+
if exc.errno != errno.EEXIST:
|
95
|
+
raise
|
96
|
+
|
97
|
+
|
98
|
+
def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''):
|
99
|
+
mkdir_p(dst_dir)
|
100
|
+
out_filename = filename
|
101
|
+
|
102
|
+
if file_suffix:
|
103
|
+
split_name = os.path.splitext(filename)
|
104
|
+
out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1])
|
105
|
+
|
106
|
+
with open(os.path.join(src_dir, filename)) as in_file:
|
107
|
+
with open(os.path.join(dst_dir, out_filename), 'w') as out_file:
|
108
|
+
if prefix:
|
109
|
+
out_file.write(prefix)
|
110
|
+
|
111
|
+
out_file.write(in_file.read())
|
112
|
+
|
113
|
+
if suffix:
|
114
|
+
out_file.write(suffix)
|
115
|
+
|
116
|
+
|
117
|
+
def list_files(src_dir, pattern=None, filelist=None):
|
118
|
+
if pattern: filelist = glob.iglob(os.path.join(src_dir, pattern))
|
119
|
+
for file in filelist:
|
120
|
+
yield os.path.basename(file)
|
121
|
+
|
122
|
+
|
123
|
+
def copy_files(src_dir, dst_dir, pattern=None, filelist=None, file_suffix=None, prefix=None, suffix=None):
|
124
|
+
for filename in list_files(src_dir, pattern=pattern, filelist=filelist):
|
125
|
+
move_file(src_dir, dst_dir, filename, file_suffix=file_suffix, prefix=prefix, suffix=suffix)
|
126
|
+
|
127
|
+
|
128
|
+
def copy_src_platform_files(platform):
|
129
|
+
src_dir = os.path.join('src', platform.src_dir)
|
130
|
+
dst_dir = os.path.join(platform.directory, 'src', platform.src_dir)
|
131
|
+
copy_files(src_dir, dst_dir, filelist=platform.src_files, file_suffix=platform.arch, prefix=platform.prefix, suffix=platform.suffix)
|
132
|
+
|
133
|
+
|
134
|
+
def build_target(platform, platform_headers):
|
135
|
+
def xcrun_cmd(cmd):
|
136
|
+
return 'xcrun -sdk %s %s -arch %s' % (platform.sdk, cmd, platform.arch)
|
137
|
+
|
138
|
+
tag='%s-%s' % (platform.sdk, platform.arch)
|
139
|
+
build_dir = 'build_%s' % tag
|
140
|
+
mkdir_p(build_dir)
|
141
|
+
env = dict(CC=xcrun_cmd('clang'),
|
142
|
+
LD=xcrun_cmd('ld'),
|
143
|
+
CFLAGS='%s' % (platform.version_min))
|
144
|
+
working_dir = os.getcwd()
|
145
|
+
try:
|
146
|
+
os.chdir(build_dir)
|
147
|
+
subprocess.check_call(['../configure', '-host', platform.triple], env=env)
|
148
|
+
finally:
|
149
|
+
os.chdir(working_dir)
|
150
|
+
|
151
|
+
for src_dir in [build_dir, os.path.join(build_dir, 'include')]:
|
152
|
+
copy_files(src_dir,
|
153
|
+
os.path.join(platform.directory, 'include'),
|
154
|
+
pattern='*.h',
|
155
|
+
file_suffix=platform.arch,
|
156
|
+
prefix=platform.prefix,
|
157
|
+
suffix=platform.suffix)
|
158
|
+
|
159
|
+
for filename in list_files(src_dir, pattern='*.h'):
|
160
|
+
platform_headers[filename].add((platform.prefix, platform.arch, platform.suffix))
|
161
|
+
|
162
|
+
|
163
|
+
def make_tramp():
|
164
|
+
with open('src/arm/trampoline.S', 'w') as tramp_out:
|
165
|
+
p = subprocess.Popen(['bash', 'src/arm/gentramp.sh'], stdout=tramp_out)
|
166
|
+
p.wait()
|
167
|
+
|
168
|
+
|
169
|
+
def generate_source_and_headers(generate_osx=True, generate_ios=True):
|
170
|
+
copy_files('src', 'darwin_common/src', pattern='*.c')
|
171
|
+
copy_files('include', 'darwin_common/include', pattern='*.h')
|
172
|
+
|
173
|
+
if generate_ios:
|
174
|
+
make_tramp()
|
175
|
+
copy_src_platform_files(simulator_platform)
|
176
|
+
copy_src_platform_files(simulator64_platform)
|
177
|
+
copy_src_platform_files(device_platform)
|
178
|
+
copy_src_platform_files(device64_platform)
|
179
|
+
if generate_osx:
|
180
|
+
copy_src_platform_files(desktop32_platform)
|
181
|
+
copy_src_platform_files(desktop64_platform)
|
182
|
+
|
183
|
+
platform_headers = collections.defaultdict(set)
|
184
|
+
|
185
|
+
if generate_ios:
|
186
|
+
build_target(simulator_platform, platform_headers)
|
187
|
+
build_target(simulator64_platform, platform_headers)
|
188
|
+
build_target(device_platform, platform_headers)
|
189
|
+
build_target(device64_platform, platform_headers)
|
190
|
+
if generate_osx:
|
191
|
+
build_target(desktop32_platform, platform_headers)
|
192
|
+
build_target(desktop64_platform, platform_headers)
|
193
|
+
|
194
|
+
mkdir_p('darwin_common/include')
|
195
|
+
for header_name, tag_tuples in platform_headers.iteritems():
|
196
|
+
basename, suffix = os.path.splitext(header_name)
|
197
|
+
with open(os.path.join('darwin_common/include', header_name), 'w') as header:
|
198
|
+
for tag_tuple in tag_tuples:
|
199
|
+
header.write('%s#include <%s_%s%s>\n%s\n' % (tag_tuple[0], basename, tag_tuple[1], suffix, tag_tuple[2]))
|
200
|
+
|
201
|
+
if __name__ == '__main__':
|
202
|
+
parser = argparse.ArgumentParser()
|
203
|
+
parser.add_argument('--only-ios', action='store_true', default=False)
|
204
|
+
parser.add_argument('--only-osx', action='store_true', default=False)
|
205
|
+
args = parser.parse_args()
|
206
|
+
|
207
|
+
generate_source_and_headers(generate_osx=not args.only_ios, generate_ios=not args.only_osx)
|