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
@@ -1,5 +1,6 @@
|
|
1
1
|
/* -----------------------------------------------------------------*-C-*-
|
2
|
-
ffitarget.h - Copyright (c)
|
2
|
+
ffitarget.h - Copyright (c) 2012 Anthony Green
|
3
|
+
Copyright (c) 1996-2003 Red Hat, Inc.
|
3
4
|
Target configuration macros for Alpha.
|
4
5
|
|
5
6
|
Permission is hereby granted, free of charge, to any person obtaining
|
@@ -27,6 +28,10 @@
|
|
27
28
|
#ifndef LIBFFI_TARGET_H
|
28
29
|
#define LIBFFI_TARGET_H
|
29
30
|
|
31
|
+
#ifndef LIBFFI_H
|
32
|
+
#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
|
33
|
+
#endif
|
34
|
+
|
30
35
|
#ifndef LIBFFI_ASM
|
31
36
|
typedef unsigned long ffi_arg;
|
32
37
|
typedef signed long ffi_sarg;
|
@@ -39,9 +44,13 @@ typedef enum ffi_abi {
|
|
39
44
|
} ffi_abi;
|
40
45
|
#endif
|
41
46
|
|
47
|
+
#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
|
48
|
+
#define FFI_TARGET_HAS_COMPLEX_TYPE
|
49
|
+
|
42
50
|
/* ---- Definitions for closures ----------------------------------------- */
|
43
51
|
|
44
52
|
#define FFI_CLOSURES 1
|
53
|
+
#define FFI_GO_CLOSURES 1
|
45
54
|
#define FFI_TRAMPOLINE_SIZE 24
|
46
55
|
#define FFI_NATIVE_RAW_API 0
|
47
56
|
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#define ALPHA_ST_VOID 0
|
2
|
+
#define ALPHA_ST_INT 1
|
3
|
+
#define ALPHA_ST_FLOAT 2
|
4
|
+
#define ALPHA_ST_DOUBLE 3
|
5
|
+
#define ALPHA_ST_CPLXF 4
|
6
|
+
#define ALPHA_ST_CPLXD 5
|
7
|
+
|
8
|
+
#define ALPHA_LD_VOID 0
|
9
|
+
#define ALPHA_LD_INT64 1
|
10
|
+
#define ALPHA_LD_INT32 2
|
11
|
+
#define ALPHA_LD_UINT16 3
|
12
|
+
#define ALPHA_LD_SINT16 4
|
13
|
+
#define ALPHA_LD_UINT8 5
|
14
|
+
#define ALPHA_LD_SINT8 6
|
15
|
+
#define ALPHA_LD_FLOAT 7
|
16
|
+
#define ALPHA_LD_DOUBLE 8
|
17
|
+
#define ALPHA_LD_CPLXF 9
|
18
|
+
#define ALPHA_LD_CPLXD 10
|
19
|
+
|
20
|
+
#define ALPHA_ST_SHIFT 0
|
21
|
+
#define ALPHA_LD_SHIFT 8
|
22
|
+
#define ALPHA_RET_IN_MEM 0x10000
|
23
|
+
#define ALPHA_FLAGS(S, L) (((L) << ALPHA_LD_SHIFT) | (S))
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/* -----------------------------------------------------------------------
|
2
|
-
osf.S - Copyright (c) 1998, 2001, 2007, 2008, 2011 Red Hat
|
3
|
-
|
4
|
-
Alpha/OSF Foreign Function Interface
|
2
|
+
osf.S - Copyright (c) 1998, 2001, 2007, 2008, 2011, 2014 Red Hat
|
3
|
+
|
4
|
+
Alpha/OSF Foreign Function Interface
|
5
5
|
|
6
6
|
Permission is hereby granted, free of charge, to any person obtaining
|
7
7
|
a copy of this software and associated documentation files (the
|
@@ -24,40 +24,49 @@
|
|
24
24
|
DEALINGS IN THE SOFTWARE.
|
25
25
|
----------------------------------------------------------------------- */
|
26
26
|
|
27
|
-
#define LIBFFI_ASM
|
27
|
+
#define LIBFFI_ASM
|
28
28
|
#include <fficonfig.h>
|
29
29
|
#include <ffi.h>
|
30
|
+
#include <ffi_cfi.h>
|
31
|
+
#include "internal.h"
|
30
32
|
|
31
33
|
.arch ev6
|
32
34
|
.text
|
33
35
|
|
34
|
-
/*
|
35
|
-
|
36
|
+
/* Aid in building a direct addressed jump table, 4 insns per entry. */
|
37
|
+
.macro E index
|
38
|
+
.align 4
|
39
|
+
.org 99b + \index * 16
|
40
|
+
.endm
|
41
|
+
|
42
|
+
/* ffi_call_osf (void *stack, void *frame, unsigned flags,
|
43
|
+
void *raddr, void (*fnaddr)(void), void *closure)
|
36
44
|
|
37
|
-
Bit o trickiness here --
|
45
|
+
Bit o trickiness here -- FRAME is the base of the stack frame
|
38
46
|
for this function. This has been allocated by ffi_call. We also
|
39
47
|
deallocate some of the stack that has been alloca'd. */
|
40
48
|
|
41
|
-
.align
|
49
|
+
.align 4
|
42
50
|
.globl ffi_call_osf
|
43
51
|
.ent ffi_call_osf
|
44
52
|
FFI_HIDDEN(ffi_call_osf)
|
45
53
|
|
46
54
|
ffi_call_osf:
|
47
|
-
|
48
|
-
|
49
|
-
$LFB1:
|
50
|
-
addq $16,$17,$1
|
55
|
+
cfi_startproc
|
56
|
+
cfi_def_cfa($17, 32)
|
51
57
|
mov $16, $30
|
52
|
-
stq $26, 0($
|
53
|
-
stq $15, 8($
|
54
|
-
|
55
|
-
mov $1, $15
|
56
|
-
$LCFI1:
|
58
|
+
stq $26, 0($17)
|
59
|
+
stq $15, 8($17)
|
60
|
+
mov $17, $15
|
57
61
|
.prologue 0
|
62
|
+
cfi_def_cfa_register($15)
|
63
|
+
cfi_rel_offset($26, 0)
|
64
|
+
cfi_rel_offset($15, 8)
|
58
65
|
|
59
|
-
stq $
|
60
|
-
|
66
|
+
stq $18, 16($17) # save flags into frame
|
67
|
+
stq $19, 24($17) # save rvalue into frame
|
68
|
+
mov $20, $27 # fn into place for call
|
69
|
+
mov $21, $1 # closure into static chain
|
61
70
|
|
62
71
|
# Load up all of the (potential) argument registers.
|
63
72
|
ldq $16, 0($30)
|
@@ -77,311 +86,197 @@ $LCFI1:
|
|
77
86
|
lda $30, 48($30)
|
78
87
|
|
79
88
|
jsr $26, ($27), 0
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
ldq $
|
89
|
+
0:
|
90
|
+
ldah $29, 0($26) !gpdisp!1
|
91
|
+
ldq $2, 24($15) # reload rvalue
|
92
|
+
lda $29, 0($29) !gpdisp!1
|
93
|
+
ldq $3, 16($15) # reload flags
|
94
|
+
lda $1, 99f-0b($26)
|
85
95
|
ldq $26, 0($15)
|
86
|
-
$LCFI2:
|
87
|
-
beq $19, $noretval
|
88
|
-
|
89
|
-
# Store the return value out in the proper type.
|
90
|
-
cmpeq $18, FFI_TYPE_INT, $1
|
91
|
-
bne $1, $retint
|
92
|
-
cmpeq $18, FFI_TYPE_FLOAT, $2
|
93
|
-
bne $2, $retfloat
|
94
|
-
cmpeq $18, FFI_TYPE_DOUBLE, $3
|
95
|
-
bne $3, $retdouble
|
96
|
-
|
97
|
-
.align 3
|
98
|
-
$noretval:
|
99
96
|
ldq $15, 8($15)
|
100
|
-
|
97
|
+
cfi_restore($26)
|
98
|
+
cfi_restore($15)
|
99
|
+
cfi_def_cfa($sp, 0)
|
100
|
+
cmoveq $2, ALPHA_ST_VOID, $3 # mash null rvalue to void
|
101
|
+
addq $3, $3, $3
|
102
|
+
s8addq $3, $1, $1 # 99f + stcode * 16
|
103
|
+
jmp $31, ($1), $st_int
|
101
104
|
|
102
105
|
.align 4
|
103
|
-
|
104
|
-
|
105
|
-
nop
|
106
|
-
ldq $15, 8($15)
|
106
|
+
99:
|
107
|
+
E ALPHA_ST_VOID
|
107
108
|
ret
|
108
|
-
|
109
|
-
|
110
|
-
$
|
111
|
-
sts $f0, 0($19)
|
112
|
-
nop
|
113
|
-
ldq $15, 8($15)
|
109
|
+
E ALPHA_ST_INT
|
110
|
+
$st_int:
|
111
|
+
stq $0, 0($2)
|
114
112
|
ret
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
113
|
+
E ALPHA_ST_FLOAT
|
114
|
+
sts $f0, 0($2)
|
115
|
+
ret
|
116
|
+
E ALPHA_ST_DOUBLE
|
117
|
+
stt $f0, 0($2)
|
118
|
+
ret
|
119
|
+
E ALPHA_ST_CPLXF
|
120
|
+
sts $f0, 0($2)
|
121
|
+
sts $f1, 4($2)
|
122
|
+
ret
|
123
|
+
E ALPHA_ST_CPLXD
|
124
|
+
stt $f0, 0($2)
|
125
|
+
stt $f1, 8($2)
|
121
126
|
ret
|
122
|
-
$LFE1:
|
123
127
|
|
128
|
+
cfi_endproc
|
124
129
|
.end ffi_call_osf
|
125
130
|
|
126
131
|
/* ffi_closure_osf(...)
|
127
132
|
|
128
133
|
Receives the closure argument in $1. */
|
129
134
|
|
130
|
-
|
135
|
+
#define CLOSURE_FS (16*8)
|
136
|
+
|
137
|
+
.align 4
|
138
|
+
.globl ffi_go_closure_osf
|
139
|
+
.ent ffi_go_closure_osf
|
140
|
+
FFI_HIDDEN(ffi_go_closure_osf)
|
141
|
+
|
142
|
+
ffi_go_closure_osf:
|
143
|
+
cfi_startproc
|
144
|
+
ldgp $29, 0($27)
|
145
|
+
subq $30, CLOSURE_FS, $30
|
146
|
+
cfi_adjust_cfa_offset(CLOSURE_FS)
|
147
|
+
stq $26, 0($30)
|
148
|
+
.prologue 1
|
149
|
+
cfi_rel_offset($26, 0)
|
150
|
+
|
151
|
+
stq $16, 10*8($30)
|
152
|
+
stq $17, 11*8($30)
|
153
|
+
stq $18, 12*8($30)
|
154
|
+
|
155
|
+
ldq $16, 8($1) # load cif
|
156
|
+
ldq $17, 16($1) # load fun
|
157
|
+
mov $1, $18 # closure is user_data
|
158
|
+
br $do_closure
|
159
|
+
|
160
|
+
cfi_endproc
|
161
|
+
.end ffi_go_closure_osf
|
162
|
+
|
163
|
+
.align 4
|
131
164
|
.globl ffi_closure_osf
|
132
165
|
.ent ffi_closure_osf
|
133
166
|
FFI_HIDDEN(ffi_closure_osf)
|
134
167
|
|
135
168
|
ffi_closure_osf:
|
136
|
-
|
137
|
-
.mask 0x4000000, -16*8
|
138
|
-
$LFB2:
|
169
|
+
cfi_startproc
|
139
170
|
ldgp $29, 0($27)
|
140
|
-
subq $30,
|
141
|
-
|
171
|
+
subq $30, CLOSURE_FS, $30
|
172
|
+
cfi_adjust_cfa_offset(CLOSURE_FS)
|
142
173
|
stq $26, 0($30)
|
143
|
-
$LCFI6:
|
144
174
|
.prologue 1
|
175
|
+
cfi_rel_offset($26, 0)
|
145
176
|
|
146
177
|
# Store all of the potential argument registers in va_list format.
|
147
|
-
stt $f16, 4*8($30)
|
148
|
-
stt $f17, 5*8($30)
|
149
|
-
stt $f18, 6*8($30)
|
150
|
-
stt $f19, 7*8($30)
|
151
|
-
stt $f20, 8*8($30)
|
152
|
-
stt $f21, 9*8($30)
|
153
178
|
stq $16, 10*8($30)
|
154
179
|
stq $17, 11*8($30)
|
155
180
|
stq $18, 12*8($30)
|
181
|
+
|
182
|
+
ldq $16, 24($1) # load cif
|
183
|
+
ldq $17, 32($1) # load fun
|
184
|
+
ldq $18, 40($1) # load user_data
|
185
|
+
|
186
|
+
$do_closure:
|
156
187
|
stq $19, 13*8($30)
|
157
188
|
stq $20, 14*8($30)
|
158
189
|
stq $21, 15*8($30)
|
190
|
+
stt $f16, 4*8($30)
|
191
|
+
stt $f17, 5*8($30)
|
192
|
+
stt $f18, 6*8($30)
|
193
|
+
stt $f19, 7*8($30)
|
194
|
+
stt $f20, 8*8($30)
|
195
|
+
stt $f21, 9*8($30)
|
159
196
|
|
160
197
|
# Call ffi_closure_osf_inner to do the bulk of the work.
|
161
|
-
|
162
|
-
lda $
|
163
|
-
lda $18, 10*8($30)
|
198
|
+
lda $19, 2*8($30)
|
199
|
+
lda $20, 10*8($30)
|
164
200
|
jsr $26, ffi_closure_osf_inner
|
165
|
-
|
201
|
+
0:
|
202
|
+
ldah $29, 0($26) !gpdisp!2
|
203
|
+
lda $2, 99f-0b($26)
|
204
|
+
s4addq $0, 0, $1 # ldcode * 4
|
205
|
+
ldq $0, 16($30) # preload return value
|
206
|
+
s4addq $1, $2, $1 # 99f + ldcode * 16
|
207
|
+
lda $29, 0($29) !gpdisp!2
|
166
208
|
ldq $26, 0($30)
|
167
|
-
|
168
|
-
# Load up the return value in the proper type.
|
169
|
-
lda $1, $load_table
|
170
|
-
s4addq $0, $1, $1
|
171
|
-
ldl $1, 0($1)
|
172
|
-
addq $1, $29, $1
|
209
|
+
cfi_restore($26)
|
173
210
|
jmp $31, ($1), $load_32
|
174
211
|
|
175
|
-
|
176
|
-
$
|
177
|
-
|
212
|
+
.macro epilogue
|
213
|
+
addq $30, CLOSURE_FS, $30
|
214
|
+
cfi_adjust_cfa_offset(-CLOSURE_FS)
|
178
215
|
ret
|
216
|
+
.align 4
|
217
|
+
cfi_adjust_cfa_offset(CLOSURE_FS)
|
218
|
+
.endm
|
179
219
|
|
180
220
|
.align 4
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
addq $30, 16*8, $30
|
185
|
-
ret
|
221
|
+
99:
|
222
|
+
E ALPHA_LD_VOID
|
223
|
+
epilogue
|
186
224
|
|
187
|
-
|
188
|
-
|
189
|
-
ldt $f0, 16($30)
|
190
|
-
nop
|
191
|
-
addq $30, 16*8, $30
|
192
|
-
ret
|
225
|
+
E ALPHA_LD_INT64
|
226
|
+
epilogue
|
193
227
|
|
194
|
-
|
195
|
-
$
|
228
|
+
E ALPHA_LD_INT32
|
229
|
+
$load_32:
|
230
|
+
sextl $0, $0
|
231
|
+
epilogue
|
232
|
+
|
233
|
+
E ALPHA_LD_UINT16
|
234
|
+
zapnot $0, 3, $0
|
235
|
+
epilogue
|
236
|
+
|
237
|
+
E ALPHA_LD_SINT16
|
196
238
|
#ifdef __alpha_bwx__
|
197
|
-
|
198
|
-
nop
|
239
|
+
sextw $0, $0
|
199
240
|
#else
|
200
|
-
|
201
|
-
|
241
|
+
sll $0, 48, $0
|
242
|
+
sra $0, 48, $0
|
202
243
|
#endif
|
203
|
-
|
204
|
-
ret
|
244
|
+
epilogue
|
205
245
|
|
206
|
-
|
207
|
-
$
|
246
|
+
E ALPHA_LD_UINT8
|
247
|
+
and $0, 0xff, $0
|
248
|
+
epilogue
|
249
|
+
|
250
|
+
E ALPHA_LD_SINT8
|
208
251
|
#ifdef __alpha_bwx__
|
209
|
-
ldbu $0, 16($30)
|
210
252
|
sextb $0, $0
|
211
253
|
#else
|
212
|
-
ldq $0, 16($30)
|
213
254
|
sll $0, 56, $0
|
214
255
|
sra $0, 56, $0
|
215
256
|
#endif
|
216
|
-
|
217
|
-
ret
|
257
|
+
epilogue
|
218
258
|
|
219
|
-
|
220
|
-
$
|
221
|
-
|
222
|
-
ldwu $0, 16($30)
|
223
|
-
nop
|
224
|
-
#else
|
225
|
-
ldq $0, 16($30)
|
226
|
-
zapnot $0, 3, $0
|
227
|
-
#endif
|
228
|
-
addq $30, 16*8, $30
|
229
|
-
ret
|
259
|
+
E ALPHA_LD_FLOAT
|
260
|
+
lds $f0, 16($sp)
|
261
|
+
epilogue
|
230
262
|
|
231
|
-
|
232
|
-
$
|
233
|
-
|
234
|
-
ldwu $0, 16($30)
|
235
|
-
sextw $0, $0
|
236
|
-
#else
|
237
|
-
ldq $0, 16($30)
|
238
|
-
sll $0, 48, $0
|
239
|
-
sra $0, 48, $0
|
240
|
-
#endif
|
241
|
-
addq $30, 16*8, $30
|
242
|
-
ret
|
263
|
+
E ALPHA_LD_DOUBLE
|
264
|
+
ldt $f0, 16($sp)
|
265
|
+
epilogue
|
243
266
|
|
244
|
-
|
245
|
-
$
|
246
|
-
|
247
|
-
|
248
|
-
addq $30, 16*8, $30
|
249
|
-
ret
|
267
|
+
E ALPHA_LD_CPLXF
|
268
|
+
lds $f0, 16($sp)
|
269
|
+
lds $f1, 20($sp)
|
270
|
+
epilogue
|
250
271
|
|
251
|
-
|
252
|
-
$
|
253
|
-
|
254
|
-
|
255
|
-
addq $30, 16*8, $30
|
256
|
-
ret
|
257
|
-
$LFE2:
|
272
|
+
E ALPHA_LD_CPLXD
|
273
|
+
ldt $f0, 16($sp)
|
274
|
+
ldt $f1, 24($sp)
|
275
|
+
epilogue
|
258
276
|
|
277
|
+
cfi_endproc
|
259
278
|
.end ffi_closure_osf
|
260
279
|
|
261
|
-
#ifdef __ELF__
|
262
|
-
.section .rodata
|
263
|
-
#else
|
264
|
-
.rdata
|
265
|
-
#endif
|
266
|
-
$load_table:
|
267
|
-
.gprel32 $load_none # FFI_TYPE_VOID
|
268
|
-
.gprel32 $load_32 # FFI_TYPE_INT
|
269
|
-
.gprel32 $load_float # FFI_TYPE_FLOAT
|
270
|
-
.gprel32 $load_double # FFI_TYPE_DOUBLE
|
271
|
-
.gprel32 $load_none # FFI_TYPE_LONGDOUBLE
|
272
|
-
.gprel32 $load_u8 # FFI_TYPE_UINT8
|
273
|
-
.gprel32 $load_s8 # FFI_TYPE_SINT8
|
274
|
-
.gprel32 $load_u16 # FFI_TYPE_UINT16
|
275
|
-
.gprel32 $load_s16 # FFI_TYPE_SINT16
|
276
|
-
.gprel32 $load_32 # FFI_TYPE_UINT32
|
277
|
-
.gprel32 $load_32 # FFI_TYPE_SINT32
|
278
|
-
.gprel32 $load_64 # FFI_TYPE_UINT64
|
279
|
-
.gprel32 $load_64 # FFI_TYPE_SINT64
|
280
|
-
.gprel32 $load_none # FFI_TYPE_STRUCT
|
281
|
-
.gprel32 $load_64 # FFI_TYPE_POINTER
|
282
|
-
|
283
|
-
/* Assert that the table above is in sync with ffi.h. */
|
284
|
-
|
285
|
-
#if FFI_TYPE_FLOAT != 2 \
|
286
|
-
|| FFI_TYPE_DOUBLE != 3 \
|
287
|
-
|| FFI_TYPE_UINT8 != 5 \
|
288
|
-
|| FFI_TYPE_SINT8 != 6 \
|
289
|
-
|| FFI_TYPE_UINT16 != 7 \
|
290
|
-
|| FFI_TYPE_SINT16 != 8 \
|
291
|
-
|| FFI_TYPE_UINT32 != 9 \
|
292
|
-
|| FFI_TYPE_SINT32 != 10 \
|
293
|
-
|| FFI_TYPE_UINT64 != 11 \
|
294
|
-
|| FFI_TYPE_SINT64 != 12 \
|
295
|
-
|| FFI_TYPE_STRUCT != 13 \
|
296
|
-
|| FFI_TYPE_POINTER != 14 \
|
297
|
-
|| FFI_TYPE_LAST != 14
|
298
|
-
#error "osf.S out of sync with ffi.h"
|
299
|
-
#endif
|
300
|
-
|
301
|
-
#ifdef __ELF__
|
302
|
-
# define UA_SI .4byte
|
303
|
-
# define FDE_ENCODING 0x1b /* pcrel sdata4 */
|
304
|
-
# define FDE_ENCODE(X) .4byte X-.
|
305
|
-
# define FDE_ARANGE(X) .4byte X
|
306
|
-
#elif defined __osf__
|
307
|
-
# define UA_SI .align 0; .long
|
308
|
-
# define FDE_ENCODING 0x50 /* aligned absolute */
|
309
|
-
# define FDE_ENCODE(X) .align 3; .quad X
|
310
|
-
# define FDE_ARANGE(X) .align 0; .quad X
|
311
|
-
#endif
|
312
|
-
|
313
|
-
#ifdef __ELF__
|
314
|
-
.section .eh_frame,EH_FRAME_FLAGS,@progbits
|
315
|
-
#elif defined __osf__
|
316
|
-
.data
|
317
|
-
.align 3
|
318
|
-
.globl _GLOBAL__F_ffi_call_osf
|
319
|
-
_GLOBAL__F_ffi_call_osf:
|
320
|
-
#endif
|
321
|
-
__FRAME_BEGIN__:
|
322
|
-
UA_SI $LECIE1-$LSCIE1 # Length of Common Information Entry
|
323
|
-
$LSCIE1:
|
324
|
-
UA_SI 0x0 # CIE Identifier Tag
|
325
|
-
.byte 0x1 # CIE Version
|
326
|
-
.ascii "zR\0" # CIE Augmentation
|
327
|
-
.byte 0x1 # uleb128 0x1; CIE Code Alignment Factor
|
328
|
-
.byte 0x78 # sleb128 -8; CIE Data Alignment Factor
|
329
|
-
.byte 26 # CIE RA Column
|
330
|
-
.byte 0x1 # uleb128 0x1; Augmentation size
|
331
|
-
.byte FDE_ENCODING # FDE Encoding
|
332
|
-
.byte 0xc # DW_CFA_def_cfa
|
333
|
-
.byte 30 # uleb128 column 30
|
334
|
-
.byte 0 # uleb128 offset 0
|
335
|
-
.align 3
|
336
|
-
$LECIE1:
|
337
|
-
$LSFDE1:
|
338
|
-
UA_SI $LEFDE1-$LASFDE1 # FDE Length
|
339
|
-
$LASFDE1:
|
340
|
-
UA_SI $LASFDE1-__FRAME_BEGIN__ # FDE CIE offset
|
341
|
-
FDE_ENCODE($LFB1) # FDE initial location
|
342
|
-
FDE_ARANGE($LFE1-$LFB1) # FDE address range
|
343
|
-
.byte 0x0 # uleb128 0x0; Augmentation size
|
344
|
-
|
345
|
-
.byte 0x4 # DW_CFA_advance_loc4
|
346
|
-
UA_SI $LCFI1-$LFB1
|
347
|
-
.byte 0x9a # DW_CFA_offset, column 26
|
348
|
-
.byte 4 # uleb128 4*-8
|
349
|
-
.byte 0x8f # DW_CFA_offset, column 15
|
350
|
-
.byte 0x3 # uleb128 3*-8
|
351
|
-
.byte 0xc # DW_CFA_def_cfa
|
352
|
-
.byte 15 # uleb128 column 15
|
353
|
-
.byte 32 # uleb128 offset 32
|
354
|
-
|
355
|
-
.byte 0x4 # DW_CFA_advance_loc4
|
356
|
-
UA_SI $LCFI2-$LCFI1
|
357
|
-
.byte 0xda # DW_CFA_restore, column 26
|
358
|
-
.align 3
|
359
|
-
$LEFDE1:
|
360
|
-
|
361
|
-
$LSFDE3:
|
362
|
-
UA_SI $LEFDE3-$LASFDE3 # FDE Length
|
363
|
-
$LASFDE3:
|
364
|
-
UA_SI $LASFDE3-__FRAME_BEGIN__ # FDE CIE offset
|
365
|
-
FDE_ENCODE($LFB2) # FDE initial location
|
366
|
-
FDE_ARANGE($LFE2-$LFB2) # FDE address range
|
367
|
-
.byte 0x0 # uleb128 0x0; Augmentation size
|
368
|
-
|
369
|
-
.byte 0x4 # DW_CFA_advance_loc4
|
370
|
-
UA_SI $LCFI5-$LFB2
|
371
|
-
.byte 0xe # DW_CFA_def_cfa_offset
|
372
|
-
.byte 0x80,0x1 # uleb128 128
|
373
|
-
|
374
|
-
.byte 0x4 # DW_CFA_advance_loc4
|
375
|
-
UA_SI $LCFI6-$LCFI5
|
376
|
-
.byte 0x9a # DW_CFA_offset, column 26
|
377
|
-
.byte 16 # uleb128 offset 16*-8
|
378
|
-
.align 3
|
379
|
-
$LEFDE3:
|
380
|
-
#if defined __osf__
|
381
|
-
.align 0
|
382
|
-
.long 0 # End of Table
|
383
|
-
#endif
|
384
|
-
|
385
280
|
#if defined __ELF__ && defined __linux__
|
386
281
|
.section .note.GNU-stack,"",@progbits
|
387
282
|
#endif
|