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 MIPS.
|
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
|
#ifdef linux
|
31
36
|
# include <asm/sgidefs.h>
|
32
37
|
#elif defined(__rtems__)
|
@@ -226,12 +231,14 @@ typedef enum ffi_abi {
|
|
226
231
|
|
227
232
|
#if defined(FFI_MIPS_O32)
|
228
233
|
#define FFI_CLOSURES 1
|
234
|
+
#define FFI_GO_CLOSURES 1
|
229
235
|
#define FFI_TRAMPOLINE_SIZE 20
|
230
236
|
#else
|
231
237
|
/* N32/N64. */
|
232
238
|
# define FFI_CLOSURES 1
|
239
|
+
#define FFI_GO_CLOSURES 1
|
233
240
|
#if _MIPS_SIM==_ABI64
|
234
|
-
#define FFI_TRAMPOLINE_SIZE
|
241
|
+
#define FFI_TRAMPOLINE_SIZE 56
|
235
242
|
#else
|
236
243
|
#define FFI_TRAMPOLINE_SIZE 20
|
237
244
|
#endif
|
@@ -37,35 +37,41 @@
|
|
37
37
|
#define flags a3
|
38
38
|
#define raddr a4
|
39
39
|
#define fn a5
|
40
|
+
#define closure a6
|
40
41
|
|
41
|
-
|
42
|
+
/* Note: to keep stack 16 byte aligned we need even number slots
|
43
|
+
used 9 slots here
|
44
|
+
*/
|
45
|
+
#define SIZEOF_FRAME ( 10 * FFI_SIZEOF_ARG )
|
42
46
|
|
43
47
|
#ifdef __GNUC__
|
44
48
|
.abicalls
|
45
49
|
#endif
|
50
|
+
.set mips4
|
46
51
|
.text
|
47
52
|
.align 2
|
48
53
|
.globl ffi_call_N32
|
49
54
|
.ent ffi_call_N32
|
50
55
|
ffi_call_N32:
|
51
|
-
.
|
56
|
+
.LFB0:
|
52
57
|
.frame $fp, SIZEOF_FRAME, ra
|
53
58
|
.mask 0xc0000000,-FFI_SIZEOF_ARG
|
54
59
|
.fmask 0x00000000,0
|
55
60
|
|
56
61
|
# Prologue
|
57
62
|
SUBU $sp, SIZEOF_FRAME # Frame size
|
58
|
-
.
|
63
|
+
.LCFI00:
|
59
64
|
REG_S $fp, SIZEOF_FRAME - 2*FFI_SIZEOF_ARG($sp) # Save frame pointer
|
60
65
|
REG_S ra, SIZEOF_FRAME - 1*FFI_SIZEOF_ARG($sp) # Save return address
|
61
|
-
.
|
66
|
+
.LCFI01:
|
62
67
|
move $fp, $sp
|
63
|
-
.
|
68
|
+
.LCFI02:
|
64
69
|
move t9, callback # callback function pointer
|
65
70
|
REG_S bytes, 2*FFI_SIZEOF_ARG($fp) # bytes
|
66
71
|
REG_S flags, 3*FFI_SIZEOF_ARG($fp) # flags
|
67
72
|
REG_S raddr, 4*FFI_SIZEOF_ARG($fp) # raddr
|
68
73
|
REG_S fn, 5*FFI_SIZEOF_ARG($fp) # fn
|
74
|
+
REG_S closure, 6*FFI_SIZEOF_ARG($fp) # closure
|
69
75
|
|
70
76
|
# Allocate at least 4 words in the argstack
|
71
77
|
move v0, bytes
|
@@ -106,11 +112,19 @@ loadregs:
|
|
106
112
|
|
107
113
|
REG_L t6, 3*FFI_SIZEOF_ARG($fp) # load the flags word into t6.
|
108
114
|
|
115
|
+
#ifdef __mips_soft_float
|
116
|
+
REG_L a0, 0*FFI_SIZEOF_ARG(t9)
|
117
|
+
REG_L a1, 1*FFI_SIZEOF_ARG(t9)
|
118
|
+
REG_L a2, 2*FFI_SIZEOF_ARG(t9)
|
119
|
+
REG_L a3, 3*FFI_SIZEOF_ARG(t9)
|
120
|
+
REG_L a4, 4*FFI_SIZEOF_ARG(t9)
|
121
|
+
REG_L a5, 5*FFI_SIZEOF_ARG(t9)
|
122
|
+
REG_L a6, 6*FFI_SIZEOF_ARG(t9)
|
123
|
+
REG_L a7, 7*FFI_SIZEOF_ARG(t9)
|
124
|
+
#else
|
109
125
|
and t4, t6, ((1<<FFI_FLAG_BITS)-1)
|
110
|
-
bnez t4, arg1_floatp
|
111
126
|
REG_L a0, 0*FFI_SIZEOF_ARG(t9)
|
112
|
-
|
113
|
-
arg1_floatp:
|
127
|
+
beqz t4, arg1_next
|
114
128
|
bne t4, FFI_TYPE_FLOAT, arg1_doublep
|
115
129
|
l.s $f12, 0*FFI_SIZEOF_ARG(t9)
|
116
130
|
b arg1_next
|
@@ -120,10 +134,8 @@ arg1_next:
|
|
120
134
|
|
121
135
|
SRL t4, t6, 1*FFI_FLAG_BITS
|
122
136
|
and t4, ((1<<FFI_FLAG_BITS)-1)
|
123
|
-
bnez t4, arg2_floatp
|
124
137
|
REG_L a1, 1*FFI_SIZEOF_ARG(t9)
|
125
|
-
|
126
|
-
arg2_floatp:
|
138
|
+
beqz t4, arg2_next
|
127
139
|
bne t4, FFI_TYPE_FLOAT, arg2_doublep
|
128
140
|
l.s $f13, 1*FFI_SIZEOF_ARG(t9)
|
129
141
|
b arg2_next
|
@@ -133,10 +145,8 @@ arg2_next:
|
|
133
145
|
|
134
146
|
SRL t4, t6, 2*FFI_FLAG_BITS
|
135
147
|
and t4, ((1<<FFI_FLAG_BITS)-1)
|
136
|
-
bnez t4, arg3_floatp
|
137
148
|
REG_L a2, 2*FFI_SIZEOF_ARG(t9)
|
138
|
-
|
139
|
-
arg3_floatp:
|
149
|
+
beqz t4, arg3_next
|
140
150
|
bne t4, FFI_TYPE_FLOAT, arg3_doublep
|
141
151
|
l.s $f14, 2*FFI_SIZEOF_ARG(t9)
|
142
152
|
b arg3_next
|
@@ -146,10 +156,8 @@ arg3_next:
|
|
146
156
|
|
147
157
|
SRL t4, t6, 3*FFI_FLAG_BITS
|
148
158
|
and t4, ((1<<FFI_FLAG_BITS)-1)
|
149
|
-
bnez t4, arg4_floatp
|
150
159
|
REG_L a3, 3*FFI_SIZEOF_ARG(t9)
|
151
|
-
|
152
|
-
arg4_floatp:
|
160
|
+
beqz t4, arg4_next
|
153
161
|
bne t4, FFI_TYPE_FLOAT, arg4_doublep
|
154
162
|
l.s $f15, 3*FFI_SIZEOF_ARG(t9)
|
155
163
|
b arg4_next
|
@@ -159,10 +167,8 @@ arg4_next:
|
|
159
167
|
|
160
168
|
SRL t4, t6, 4*FFI_FLAG_BITS
|
161
169
|
and t4, ((1<<FFI_FLAG_BITS)-1)
|
162
|
-
bnez t4, arg5_floatp
|
163
170
|
REG_L a4, 4*FFI_SIZEOF_ARG(t9)
|
164
|
-
|
165
|
-
arg5_floatp:
|
171
|
+
beqz t4, arg5_next
|
166
172
|
bne t4, FFI_TYPE_FLOAT, arg5_doublep
|
167
173
|
l.s $f16, 4*FFI_SIZEOF_ARG(t9)
|
168
174
|
b arg5_next
|
@@ -172,10 +178,8 @@ arg5_next:
|
|
172
178
|
|
173
179
|
SRL t4, t6, 5*FFI_FLAG_BITS
|
174
180
|
and t4, ((1<<FFI_FLAG_BITS)-1)
|
175
|
-
bnez t4, arg6_floatp
|
176
181
|
REG_L a5, 5*FFI_SIZEOF_ARG(t9)
|
177
|
-
|
178
|
-
arg6_floatp:
|
182
|
+
beqz t4, arg6_next
|
179
183
|
bne t4, FFI_TYPE_FLOAT, arg6_doublep
|
180
184
|
l.s $f17, 5*FFI_SIZEOF_ARG(t9)
|
181
185
|
b arg6_next
|
@@ -185,10 +189,8 @@ arg6_next:
|
|
185
189
|
|
186
190
|
SRL t4, t6, 6*FFI_FLAG_BITS
|
187
191
|
and t4, ((1<<FFI_FLAG_BITS)-1)
|
188
|
-
bnez t4, arg7_floatp
|
189
192
|
REG_L a6, 6*FFI_SIZEOF_ARG(t9)
|
190
|
-
|
191
|
-
arg7_floatp:
|
193
|
+
beqz t4, arg7_next
|
192
194
|
bne t4, FFI_TYPE_FLOAT, arg7_doublep
|
193
195
|
l.s $f18, 6*FFI_SIZEOF_ARG(t9)
|
194
196
|
b arg7_next
|
@@ -198,21 +200,23 @@ arg7_next:
|
|
198
200
|
|
199
201
|
SRL t4, t6, 7*FFI_FLAG_BITS
|
200
202
|
and t4, ((1<<FFI_FLAG_BITS)-1)
|
201
|
-
bnez t4, arg8_floatp
|
202
203
|
REG_L a7, 7*FFI_SIZEOF_ARG(t9)
|
203
|
-
|
204
|
-
arg8_floatp:
|
204
|
+
beqz t4, arg8_next
|
205
205
|
bne t4, FFI_TYPE_FLOAT, arg8_doublep
|
206
206
|
l.s $f19, 7*FFI_SIZEOF_ARG(t9)
|
207
207
|
b arg8_next
|
208
208
|
arg8_doublep:
|
209
209
|
l.d $f19, 7*FFI_SIZEOF_ARG(t9)
|
210
210
|
arg8_next:
|
211
|
+
#endif
|
211
212
|
|
212
213
|
callit:
|
213
214
|
# Load the function pointer
|
214
215
|
REG_L t9, 5*FFI_SIZEOF_ARG($fp)
|
215
216
|
|
217
|
+
# install the static chain(t7=$15)
|
218
|
+
REG_L t7, 6*FFI_SIZEOF_ARG($fp)
|
219
|
+
|
216
220
|
# If the return value pointer is NULL, assume no return value.
|
217
221
|
REG_L t5, 4*FFI_SIZEOF_ARG($fp)
|
218
222
|
beqz t5, noretval
|
@@ -229,6 +233,7 @@ retint:
|
|
229
233
|
b epilogue
|
230
234
|
|
231
235
|
retfloat:
|
236
|
+
#ifndef __mips_soft_float
|
232
237
|
bne t6, FFI_TYPE_FLOAT, retdouble
|
233
238
|
jal t9
|
234
239
|
REG_L t4, 4*FFI_SIZEOF_ARG($fp)
|
@@ -287,6 +292,7 @@ retstruct_f_d:
|
|
287
292
|
s.s $f0, 0(t4)
|
288
293
|
s.d $f2, 8(t4)
|
289
294
|
b epilogue
|
295
|
+
#endif
|
290
296
|
|
291
297
|
retstruct_d_soft:
|
292
298
|
bne t6, FFI_TYPE_STRUCT_D_SOFT, retstruct_f_soft
|
@@ -361,7 +367,7 @@ epilogue:
|
|
361
367
|
ADDU $sp, SIZEOF_FRAME # Fix stack pointer
|
362
368
|
j ra
|
363
369
|
|
364
|
-
.
|
370
|
+
.LFE0:
|
365
371
|
.end ffi_call_N32
|
366
372
|
|
367
373
|
/* ffi_closure_N32. Expects address of the passed-in ffi_closure in t0
|
@@ -420,6 +426,41 @@ epilogue:
|
|
420
426
|
#define RA_OFF2 (1 * FFI_SIZEOF_ARG)
|
421
427
|
#define GP_OFF2 (0 * FFI_SIZEOF_ARG)
|
422
428
|
|
429
|
+
.align 2
|
430
|
+
.globl ffi_go_closure_N32
|
431
|
+
.ent ffi_go_closure_N32
|
432
|
+
ffi_go_closure_N32:
|
433
|
+
.LFB1:
|
434
|
+
.frame $sp, SIZEOF_FRAME2, ra
|
435
|
+
.mask 0x90000000,-(SIZEOF_FRAME2 - RA_OFF2)
|
436
|
+
.fmask 0x00000000,0
|
437
|
+
SUBU $sp, SIZEOF_FRAME2
|
438
|
+
.LCFI10:
|
439
|
+
.cpsetup t9, GP_OFF2, ffi_go_closure_N32
|
440
|
+
REG_S ra, RA_OFF2($sp) # Save return address
|
441
|
+
.LCFI11:
|
442
|
+
|
443
|
+
REG_S a0, A0_OFF2($sp)
|
444
|
+
REG_S a1, A1_OFF2($sp)
|
445
|
+
REG_S a2, A2_OFF2($sp)
|
446
|
+
REG_S a3, A3_OFF2($sp)
|
447
|
+
REG_S a4, A4_OFF2($sp)
|
448
|
+
REG_S a5, A5_OFF2($sp)
|
449
|
+
|
450
|
+
# Call ffi_closure_mips_inner_N32 to do the real work.
|
451
|
+
LA t9, ffi_closure_mips_inner_N32
|
452
|
+
REG_L a0, 8($15) # cif
|
453
|
+
REG_L a1, 16($15) # fun
|
454
|
+
move a2, t7 # userdata=closure
|
455
|
+
ADDU a3, $sp, V0_OFF2 # rvalue
|
456
|
+
ADDU a4, $sp, A0_OFF2 # ar
|
457
|
+
ADDU a5, $sp, F12_OFF2 # fpr
|
458
|
+
|
459
|
+
b $do_closure
|
460
|
+
|
461
|
+
.LFE1:
|
462
|
+
.end ffi_go_closure_N32
|
463
|
+
|
423
464
|
.align 2
|
424
465
|
.globl ffi_closure_N32
|
425
466
|
.ent ffi_closure_N32
|
@@ -429,21 +470,33 @@ ffi_closure_N32:
|
|
429
470
|
.mask 0x90000000,-(SIZEOF_FRAME2 - RA_OFF2)
|
430
471
|
.fmask 0x00000000,0
|
431
472
|
SUBU $sp, SIZEOF_FRAME2
|
432
|
-
.
|
473
|
+
.LCFI20:
|
433
474
|
.cpsetup t9, GP_OFF2, ffi_closure_N32
|
434
475
|
REG_S ra, RA_OFF2($sp) # Save return address
|
435
|
-
.
|
436
|
-
# Store all possible argument registers. If there are more than
|
437
|
-
# fit in registers, then they were stored on the stack.
|
476
|
+
.LCFI21:
|
438
477
|
REG_S a0, A0_OFF2($sp)
|
439
478
|
REG_S a1, A1_OFF2($sp)
|
440
479
|
REG_S a2, A2_OFF2($sp)
|
441
480
|
REG_S a3, A3_OFF2($sp)
|
442
481
|
REG_S a4, A4_OFF2($sp)
|
443
482
|
REG_S a5, A5_OFF2($sp)
|
483
|
+
|
484
|
+
# Call ffi_closure_mips_inner_N32 to do the real work.
|
485
|
+
LA t9, ffi_closure_mips_inner_N32
|
486
|
+
REG_L a0, 56($12) # cif
|
487
|
+
REG_L a1, 64($12) # fun
|
488
|
+
REG_L a2, 72($12) # user_data
|
489
|
+
ADDU a3, $sp, V0_OFF2
|
490
|
+
ADDU a4, $sp, A0_OFF2
|
491
|
+
ADDU a5, $sp, F12_OFF2
|
492
|
+
|
493
|
+
$do_closure:
|
494
|
+
# Store all possible argument registers. If there are more than
|
495
|
+
# fit in registers, then they were stored on the stack.
|
444
496
|
REG_S a6, A6_OFF2($sp)
|
445
497
|
REG_S a7, A7_OFF2($sp)
|
446
498
|
|
499
|
+
#ifndef __mips_soft_float
|
447
500
|
# Store all possible float/double registers.
|
448
501
|
s.d $f12, F12_OFF2($sp)
|
449
502
|
s.d $f13, F13_OFF2($sp)
|
@@ -453,13 +506,8 @@ ffi_closure_N32:
|
|
453
506
|
s.d $f17, F17_OFF2($sp)
|
454
507
|
s.d $f18, F18_OFF2($sp)
|
455
508
|
s.d $f19, F19_OFF2($sp)
|
509
|
+
#endif
|
456
510
|
|
457
|
-
# Call ffi_closure_mips_inner_N32 to do the real work.
|
458
|
-
LA t9, ffi_closure_mips_inner_N32
|
459
|
-
move a0, $12 # Pointer to the ffi_closure
|
460
|
-
ADDU a1, $sp, V0_OFF2
|
461
|
-
ADDU a2, $sp, A0_OFF2
|
462
|
-
ADDU a3, $sp, F12_OFF2
|
463
511
|
jalr t9
|
464
512
|
|
465
513
|
# Return flags are in v0
|
@@ -473,6 +521,7 @@ cls_retint:
|
|
473
521
|
b cls_epilogue
|
474
522
|
|
475
523
|
cls_retfloat:
|
524
|
+
#ifndef __mips_soft_float
|
476
525
|
bne v0, FFI_TYPE_FLOAT, cls_retdouble
|
477
526
|
l.s $f0, V0_OFF2($sp)
|
478
527
|
b cls_epilogue
|
@@ -515,6 +564,7 @@ cls_retstruct_f_d:
|
|
515
564
|
l.s $f0, V0_OFF2($sp)
|
516
565
|
l.d $f2, V1_OFF2($sp)
|
517
566
|
b cls_epilogue
|
567
|
+
#endif
|
518
568
|
|
519
569
|
cls_retstruct_small2:
|
520
570
|
REG_L v0, V0_OFF2($sp)
|
@@ -546,46 +596,66 @@ cls_epilogue:
|
|
546
596
|
.align EH_FRAME_ALIGN
|
547
597
|
.LECIE1:
|
548
598
|
|
549
|
-
.
|
550
|
-
.4byte .
|
551
|
-
.
|
552
|
-
.4byte .
|
553
|
-
FDE_ADDR_BYTES .
|
554
|
-
FDE_ADDR_BYTES .
|
599
|
+
.LSFDE0:
|
600
|
+
.4byte .LEFDE0-.LASFDE0 # length.
|
601
|
+
.LASFDE0:
|
602
|
+
.4byte .LASFDE0-.Lframe1 # CIE_pointer.
|
603
|
+
FDE_ADDR_BYTES .LFB0 # initial_location.
|
604
|
+
FDE_ADDR_BYTES .LFE0-.LFB0 # address_range.
|
555
605
|
.byte 0x4 # DW_CFA_advance_loc4
|
556
|
-
.4byte .
|
606
|
+
.4byte .LCFI00-.LFB0 # to .LCFI00
|
557
607
|
.byte 0xe # DW_CFA_def_cfa_offset
|
558
608
|
.uleb128 SIZEOF_FRAME # adjust stack.by SIZEOF_FRAME
|
559
609
|
.byte 0x4 # DW_CFA_advance_loc4
|
560
|
-
.4byte .
|
610
|
+
.4byte .LCFI01-.LCFI00 # to .LCFI01
|
561
611
|
.byte 0x9e # DW_CFA_offset of $fp
|
562
612
|
.uleb128 2*FFI_SIZEOF_ARG/4 #
|
563
613
|
.byte 0x9f # DW_CFA_offset of ra
|
564
614
|
.uleb128 1*FFI_SIZEOF_ARG/4 #
|
565
615
|
.byte 0x4 # DW_CFA_advance_loc4
|
566
|
-
.4byte .
|
616
|
+
.4byte .LCFI02-.LCFI01 # to .LCFI02
|
567
617
|
.byte 0xd # DW_CFA_def_cfa_register
|
568
618
|
.uleb128 0x1e # in $fp
|
569
619
|
.align EH_FRAME_ALIGN
|
620
|
+
.LEFDE0:
|
621
|
+
|
622
|
+
.LSFDE1:
|
623
|
+
.4byte .LEFDE1-.LASFDE1 # length
|
624
|
+
.LASFDE1:
|
625
|
+
.4byte .LASFDE1-.Lframe1 # CIE_pointer.
|
626
|
+
FDE_ADDR_BYTES .LFB1 # initial_location.
|
627
|
+
FDE_ADDR_BYTES .LFE1-.LFB1 # address_range.
|
628
|
+
.byte 0x4 # DW_CFA_advance_loc4
|
629
|
+
.4byte .LCFI10-.LFB1 # to .LCFI10
|
630
|
+
.byte 0xe # DW_CFA_def_cfa_offset
|
631
|
+
.uleb128 SIZEOF_FRAME2 # adjust stack.by SIZEOF_FRAME
|
632
|
+
.byte 0x4 # DW_CFA_advance_loc4
|
633
|
+
.4byte .LCFI11-.LCFI10 # to .LCFI11
|
634
|
+
.byte 0x9c # DW_CFA_offset of $gp ($28)
|
635
|
+
.uleb128 (SIZEOF_FRAME2 - GP_OFF2)/4
|
636
|
+
.byte 0x9f # DW_CFA_offset of ra ($31)
|
637
|
+
.uleb128 (SIZEOF_FRAME2 - RA_OFF2)/4
|
638
|
+
.align EH_FRAME_ALIGN
|
570
639
|
.LEFDE1:
|
571
|
-
|
572
|
-
|
573
|
-
.
|
574
|
-
|
640
|
+
|
641
|
+
.LSFDE2:
|
642
|
+
.4byte .LEFDE2-.LASFDE2 # length
|
643
|
+
.LASFDE2:
|
644
|
+
.4byte .LASFDE2-.Lframe1 # CIE_pointer.
|
575
645
|
FDE_ADDR_BYTES .LFB2 # initial_location.
|
576
646
|
FDE_ADDR_BYTES .LFE2-.LFB2 # address_range.
|
577
647
|
.byte 0x4 # DW_CFA_advance_loc4
|
578
|
-
.4byte .
|
648
|
+
.4byte .LCFI20-.LFB2 # to .LCFI20
|
579
649
|
.byte 0xe # DW_CFA_def_cfa_offset
|
580
650
|
.uleb128 SIZEOF_FRAME2 # adjust stack.by SIZEOF_FRAME
|
581
651
|
.byte 0x4 # DW_CFA_advance_loc4
|
582
|
-
.4byte .
|
652
|
+
.4byte .LCFI21-.LCFI20 # to .LCFI21
|
583
653
|
.byte 0x9c # DW_CFA_offset of $gp ($28)
|
584
654
|
.uleb128 (SIZEOF_FRAME2 - GP_OFF2)/4
|
585
655
|
.byte 0x9f # DW_CFA_offset of ra ($31)
|
586
656
|
.uleb128 (SIZEOF_FRAME2 - RA_OFF2)/4
|
587
657
|
.align EH_FRAME_ALIGN
|
588
|
-
.
|
658
|
+
.LEFDE2:
|
589
659
|
#endif /* __GNUC__ */
|
590
660
|
|
591
661
|
#endif
|
@@ -50,14 +50,14 @@ ffi_call_O32:
|
|
50
50
|
$LFB0:
|
51
51
|
# Prologue
|
52
52
|
SUBU $sp, SIZEOF_FRAME # Frame size
|
53
|
-
$
|
53
|
+
$LCFI00:
|
54
54
|
REG_S $fp, FP_OFF($sp) # Save frame pointer
|
55
|
-
$
|
55
|
+
$LCFI01:
|
56
56
|
REG_S ra, RA_OFF($sp) # Save return address
|
57
|
-
$
|
57
|
+
$LCFI02:
|
58
58
|
move $fp, $sp
|
59
59
|
|
60
|
-
$
|
60
|
+
$LCFI03:
|
61
61
|
move t9, callback # callback function pointer
|
62
62
|
REG_S flags, A3_OFF($fp) # flags
|
63
63
|
|
@@ -82,13 +82,16 @@ sixteen:
|
|
82
82
|
|
83
83
|
ADDU $sp, 4 * FFI_SIZEOF_ARG # adjust $sp to new args
|
84
84
|
|
85
|
+
#ifndef __mips_soft_float
|
85
86
|
bnez t0, pass_d # make it quick for int
|
87
|
+
#endif
|
86
88
|
REG_L a0, 0*FFI_SIZEOF_ARG($sp) # just go ahead and load the
|
87
89
|
REG_L a1, 1*FFI_SIZEOF_ARG($sp) # four regs.
|
88
90
|
REG_L a2, 2*FFI_SIZEOF_ARG($sp)
|
89
91
|
REG_L a3, 3*FFI_SIZEOF_ARG($sp)
|
90
92
|
b call_it
|
91
93
|
|
94
|
+
#ifndef __mips_soft_float
|
92
95
|
pass_d:
|
93
96
|
bne t0, FFI_ARGS_D, pass_f
|
94
97
|
l.d $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args
|
@@ -130,8 +133,12 @@ pass_f_d:
|
|
130
133
|
# bne t0, FFI_ARGS_F_D, call_it
|
131
134
|
l.s $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args
|
132
135
|
l.d $f14, 2*FFI_SIZEOF_ARG($sp) # passing double and float
|
136
|
+
#endif
|
133
137
|
|
134
138
|
call_it:
|
139
|
+
# Load the static chain pointer
|
140
|
+
REG_L t7, SIZEOF_FRAME + 6*FFI_SIZEOF_ARG($fp)
|
141
|
+
|
135
142
|
# Load the function pointer
|
136
143
|
REG_L t9, SIZEOF_FRAME + 5*FFI_SIZEOF_ARG($fp)
|
137
144
|
|
@@ -158,14 +165,23 @@ retfloat:
|
|
158
165
|
bne t2, FFI_TYPE_FLOAT, retdouble
|
159
166
|
jalr t9
|
160
167
|
REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp)
|
168
|
+
#ifndef __mips_soft_float
|
161
169
|
s.s $f0, 0(t0)
|
170
|
+
#else
|
171
|
+
REG_S v0, 0(t0)
|
172
|
+
#endif
|
162
173
|
b epilogue
|
163
174
|
|
164
175
|
retdouble:
|
165
176
|
bne t2, FFI_TYPE_DOUBLE, noretval
|
166
177
|
jalr t9
|
167
178
|
REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp)
|
179
|
+
#ifndef __mips_soft_float
|
168
180
|
s.d $f0, 0(t0)
|
181
|
+
#else
|
182
|
+
REG_S v1, 4(t0)
|
183
|
+
REG_S v0, 0(t0)
|
184
|
+
#endif
|
169
185
|
b epilogue
|
170
186
|
|
171
187
|
noretval:
|
@@ -204,13 +220,15 @@ $LFE0:
|
|
204
220
|
-8 - f14 (le low, be high)
|
205
221
|
-9 - f12 (le high, be low)
|
206
222
|
-10 - f12 (le low, be high)
|
207
|
-
-11 - Called function
|
208
|
-
-12 - Called function
|
209
|
-
-13 - Called function
|
210
|
-
-14 - Called function
|
223
|
+
-11 - Called function a5 save
|
224
|
+
-12 - Called function a4 save
|
225
|
+
-13 - Called function a3 save
|
226
|
+
-14 - Called function a2 save
|
227
|
+
-15 - Called function a1 save
|
228
|
+
-16 - Called function a0 save, our sp and fp point here
|
211
229
|
*/
|
212
230
|
|
213
|
-
#define SIZEOF_FRAME2 (
|
231
|
+
#define SIZEOF_FRAME2 (16 * FFI_SIZEOF_ARG)
|
214
232
|
#define A3_OFF2 (SIZEOF_FRAME2 + 3 * FFI_SIZEOF_ARG)
|
215
233
|
#define A2_OFF2 (SIZEOF_FRAME2 + 2 * FFI_SIZEOF_ARG)
|
216
234
|
#define A1_OFF2 (SIZEOF_FRAME2 + 1 * FFI_SIZEOF_ARG)
|
@@ -225,13 +243,71 @@ $LFE0:
|
|
225
243
|
#define FA_1_0_OFF2 (SIZEOF_FRAME2 - 8 * FFI_SIZEOF_ARG)
|
226
244
|
#define FA_0_1_OFF2 (SIZEOF_FRAME2 - 9 * FFI_SIZEOF_ARG)
|
227
245
|
#define FA_0_0_OFF2 (SIZEOF_FRAME2 - 10 * FFI_SIZEOF_ARG)
|
246
|
+
#define CALLED_A5_OFF2 (SIZEOF_FRAME2 - 11 * FFI_SIZEOF_ARG)
|
247
|
+
#define CALLED_A4_OFF2 (SIZEOF_FRAME2 - 12 * FFI_SIZEOF_ARG)
|
228
248
|
|
229
249
|
.text
|
250
|
+
|
251
|
+
.align 2
|
252
|
+
.globl ffi_go_closure_O32
|
253
|
+
.ent ffi_go_closure_O32
|
254
|
+
ffi_go_closure_O32:
|
255
|
+
$LFB1:
|
256
|
+
# Prologue
|
257
|
+
.frame $fp, SIZEOF_FRAME2, ra
|
258
|
+
.set noreorder
|
259
|
+
.cpload t9
|
260
|
+
.set reorder
|
261
|
+
SUBU $sp, SIZEOF_FRAME2
|
262
|
+
.cprestore GP_OFF2
|
263
|
+
$LCFI10:
|
264
|
+
|
265
|
+
REG_S $16, S0_OFF2($sp) # Save s0
|
266
|
+
REG_S $fp, FP_OFF2($sp) # Save frame pointer
|
267
|
+
REG_S ra, RA_OFF2($sp) # Save return address
|
268
|
+
$LCFI11:
|
269
|
+
|
270
|
+
move $fp, $sp
|
271
|
+
$LCFI12:
|
272
|
+
|
273
|
+
REG_S a0, A0_OFF2($fp)
|
274
|
+
REG_S a1, A1_OFF2($fp)
|
275
|
+
REG_S a2, A2_OFF2($fp)
|
276
|
+
REG_S a3, A3_OFF2($fp)
|
277
|
+
|
278
|
+
# Load ABI enum to s0
|
279
|
+
REG_L $16, 4($15) # cif
|
280
|
+
REG_L $16, 0($16) # abi is first member.
|
281
|
+
|
282
|
+
li $13, 1 # FFI_O32
|
283
|
+
bne $16, $13, 1f # Skip fp save if FFI_O32_SOFT_FLOAT
|
284
|
+
|
285
|
+
# Store all possible float/double registers.
|
286
|
+
s.d $f12, FA_0_0_OFF2($fp)
|
287
|
+
s.d $f14, FA_1_0_OFF2($fp)
|
288
|
+
1:
|
289
|
+
# prepare arguments for ffi_closure_mips_inner_O32
|
290
|
+
REG_L a0, 4($15) # cif
|
291
|
+
REG_L a1, 8($15) # fun
|
292
|
+
move a2, $15 # user_data = go closure
|
293
|
+
addu a3, $fp, V0_OFF2 # rvalue
|
294
|
+
|
295
|
+
addu t9, $fp, A0_OFF2 # ar
|
296
|
+
REG_S t9, CALLED_A4_OFF2($fp)
|
297
|
+
|
298
|
+
addu t9, $fp, FA_0_0_OFF2 #fpr
|
299
|
+
REG_S t9, CALLED_A5_OFF2($fp)
|
300
|
+
|
301
|
+
b $do_closure
|
302
|
+
|
303
|
+
$LFE1:
|
304
|
+
.end ffi_go_closure_O32
|
305
|
+
|
230
306
|
.align 2
|
231
307
|
.globl ffi_closure_O32
|
232
308
|
.ent ffi_closure_O32
|
233
309
|
ffi_closure_O32:
|
234
|
-
$
|
310
|
+
$LFB2:
|
235
311
|
# Prologue
|
236
312
|
.frame $fp, SIZEOF_FRAME2, ra
|
237
313
|
.set noreorder
|
@@ -239,14 +315,14 @@ $LFB1:
|
|
239
315
|
.set reorder
|
240
316
|
SUBU $sp, SIZEOF_FRAME2
|
241
317
|
.cprestore GP_OFF2
|
242
|
-
$
|
318
|
+
$LCFI20:
|
243
319
|
REG_S $16, S0_OFF2($sp) # Save s0
|
244
320
|
REG_S $fp, FP_OFF2($sp) # Save frame pointer
|
245
321
|
REG_S ra, RA_OFF2($sp) # Save return address
|
246
|
-
$
|
322
|
+
$LCFI21:
|
247
323
|
move $fp, $sp
|
248
324
|
|
249
|
-
$
|
325
|
+
$LCFI22:
|
250
326
|
# Store all possible argument registers. If there are more than
|
251
327
|
# four arguments, then they are stored above where we put a3.
|
252
328
|
REG_S a0, A0_OFF2($fp)
|
@@ -261,16 +337,27 @@ $LCFI7:
|
|
261
337
|
li $13, 1 # FFI_O32
|
262
338
|
bne $16, $13, 1f # Skip fp save if FFI_O32_SOFT_FLOAT
|
263
339
|
|
340
|
+
#ifndef __mips_soft_float
|
264
341
|
# Store all possible float/double registers.
|
265
342
|
s.d $f12, FA_0_0_OFF2($fp)
|
266
343
|
s.d $f14, FA_1_0_OFF2($fp)
|
344
|
+
#endif
|
267
345
|
1:
|
268
|
-
#
|
346
|
+
# prepare arguments for ffi_closure_mips_inner_O32
|
347
|
+
REG_L a0, 20($12) # cif pointer follows tramp.
|
348
|
+
REG_L a1, 24($12) # fun
|
349
|
+
REG_L a2, 28($12) # user_data
|
350
|
+
addu a3, $fp, V0_OFF2 # rvalue
|
351
|
+
|
352
|
+
addu t9, $fp, A0_OFF2 # ar
|
353
|
+
REG_S t9, CALLED_A4_OFF2($fp)
|
354
|
+
|
355
|
+
addu t9, $fp, FA_0_0_OFF2 #fpr
|
356
|
+
REG_S t9, CALLED_A5_OFF2($fp)
|
357
|
+
|
358
|
+
$do_closure:
|
269
359
|
la t9, ffi_closure_mips_inner_O32
|
270
|
-
|
271
|
-
addu a1, $fp, V0_OFF2
|
272
|
-
addu a2, $fp, A0_OFF2
|
273
|
-
addu a3, $fp, FA_0_0_OFF2
|
360
|
+
# Call ffi_closure_mips_inner_O32 to do the work.
|
274
361
|
jalr t9
|
275
362
|
|
276
363
|
# Load the return value into the appropriate register.
|
@@ -281,6 +368,7 @@ $LCFI7:
|
|
281
368
|
li $13, 1 # FFI_O32
|
282
369
|
bne $16, $13, 1f # Skip fp restore if FFI_O32_SOFT_FLOAT
|
283
370
|
|
371
|
+
#ifndef __mips_soft_float
|
284
372
|
li $9, FFI_TYPE_FLOAT
|
285
373
|
l.s $f0, V0_OFF2($fp)
|
286
374
|
beq $8, $9, closure_done
|
@@ -288,6 +376,7 @@ $LCFI7:
|
|
288
376
|
li $9, FFI_TYPE_DOUBLE
|
289
377
|
l.d $f0, V0_OFF2($fp)
|
290
378
|
beq $8, $9, closure_done
|
379
|
+
#endif
|
291
380
|
1:
|
292
381
|
REG_L $3, V1_OFF2($fp)
|
293
382
|
REG_L $2, V0_OFF2($fp)
|
@@ -300,7 +389,7 @@ closure_done:
|
|
300
389
|
REG_L ra, RA_OFF2($sp) # Restore return address
|
301
390
|
ADDU $sp, SIZEOF_FRAME2
|
302
391
|
j ra
|
303
|
-
$
|
392
|
+
$LFE2:
|
304
393
|
.end ffi_closure_O32
|
305
394
|
|
306
395
|
/* DWARF-2 unwind info. */
|
@@ -322,6 +411,7 @@ $LSCIE0:
|
|
322
411
|
.uleb128 0x0
|
323
412
|
.align 2
|
324
413
|
$LECIE0:
|
414
|
+
|
325
415
|
$LSFDE0:
|
326
416
|
.4byte $LEFDE0-$LASFDE0 # FDE Length
|
327
417
|
$LASFDE0:
|
@@ -330,11 +420,11 @@ $LASFDE0:
|
|
330
420
|
.4byte $LFE0-$LFB0 # FDE address range
|
331
421
|
.uleb128 0x0 # Augmentation size
|
332
422
|
.byte 0x4 # DW_CFA_advance_loc4
|
333
|
-
.4byte $
|
423
|
+
.4byte $LCFI00-$LFB0
|
334
424
|
.byte 0xe # DW_CFA_def_cfa_offset
|
335
425
|
.uleb128 0x18
|
336
426
|
.byte 0x4 # DW_CFA_advance_loc4
|
337
|
-
.4byte $
|
427
|
+
.4byte $LCFI01-$LCFI00
|
338
428
|
.byte 0x11 # DW_CFA_offset_extended_sf
|
339
429
|
.uleb128 0x1e # $fp
|
340
430
|
.sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp)
|
@@ -342,12 +432,13 @@ $LASFDE0:
|
|
342
432
|
.uleb128 0x1f # $ra
|
343
433
|
.sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp)
|
344
434
|
.byte 0x4 # DW_CFA_advance_loc4
|
345
|
-
.4byte $
|
435
|
+
.4byte $LCFI02-$LCFI01
|
346
436
|
.byte 0xc # DW_CFA_def_cfa
|
347
437
|
.uleb128 0x1e
|
348
438
|
.uleb128 0x18
|
349
439
|
.align 2
|
350
440
|
$LEFDE0:
|
441
|
+
|
351
442
|
$LSFDE1:
|
352
443
|
.4byte $LEFDE1-$LASFDE1 # FDE Length
|
353
444
|
$LASFDE1:
|
@@ -356,11 +447,11 @@ $LASFDE1:
|
|
356
447
|
.4byte $LFE1-$LFB1 # FDE address range
|
357
448
|
.uleb128 0x0 # Augmentation size
|
358
449
|
.byte 0x4 # DW_CFA_advance_loc4
|
359
|
-
.4byte $
|
450
|
+
.4byte $LCFI10-$LFB1
|
360
451
|
.byte 0xe # DW_CFA_def_cfa_offset
|
361
|
-
.uleb128
|
452
|
+
.uleb128 SIZEOF_FRAME2
|
362
453
|
.byte 0x4 # DW_CFA_advance_loc4
|
363
|
-
.4byte $
|
454
|
+
.4byte $LCFI11-$LCFI10
|
364
455
|
.byte 0x11 # DW_CFA_offset_extended_sf
|
365
456
|
.uleb128 0x10 # $16
|
366
457
|
.sleb128 -3 # SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp)
|
@@ -371,11 +462,41 @@ $LASFDE1:
|
|
371
462
|
.uleb128 0x1f # $ra
|
372
463
|
.sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp)
|
373
464
|
.byte 0x4 # DW_CFA_advance_loc4
|
374
|
-
.4byte $
|
465
|
+
.4byte $LCFI12-$LCFI11
|
375
466
|
.byte 0xc # DW_CFA_def_cfa
|
376
467
|
.uleb128 0x1e
|
377
|
-
.uleb128
|
468
|
+
.uleb128 SIZEOF_FRAME2
|
378
469
|
.align 2
|
379
470
|
$LEFDE1:
|
380
471
|
|
472
|
+
$LSFDE2:
|
473
|
+
.4byte $LEFDE2-$LASFDE2 # FDE Length
|
474
|
+
$LASFDE2:
|
475
|
+
.4byte $LASFDE2-$Lframe0 # FDE CIE offset
|
476
|
+
.4byte $LFB2 # FDE initial location
|
477
|
+
.4byte $LFE2-$LFB2 # FDE address range
|
478
|
+
.uleb128 0x0 # Augmentation size
|
479
|
+
.byte 0x4 # DW_CFA_advance_loc4
|
480
|
+
.4byte $LCFI20-$LFB2
|
481
|
+
.byte 0xe # DW_CFA_def_cfa_offset
|
482
|
+
.uleb128 SIZEOF_FRAME2
|
483
|
+
.byte 0x4 # DW_CFA_advance_loc4
|
484
|
+
.4byte $LCFI21-$LCFI20
|
485
|
+
.byte 0x11 # DW_CFA_offset_extended_sf
|
486
|
+
.uleb128 0x10 # $16
|
487
|
+
.sleb128 -3 # SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp)
|
488
|
+
.byte 0x11 # DW_CFA_offset_extended_sf
|
489
|
+
.uleb128 0x1e # $fp
|
490
|
+
.sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp)
|
491
|
+
.byte 0x11 # DW_CFA_offset_extended_sf
|
492
|
+
.uleb128 0x1f # $ra
|
493
|
+
.sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp)
|
494
|
+
.byte 0x4 # DW_CFA_advance_loc4
|
495
|
+
.4byte $LCFI22-$LCFI21
|
496
|
+
.byte 0xc # DW_CFA_def_cfa
|
497
|
+
.uleb128 0x1e
|
498
|
+
.uleb128 SIZEOF_FRAME2
|
499
|
+
.align 2
|
500
|
+
$LEFDE2:
|
501
|
+
|
381
502
|
#endif
|