ffi 1.9.18-x64-mingw32 → 1.9.21-x64-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
data/ext/ffi_c/libffi/README
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Status
|
2
2
|
======
|
3
3
|
|
4
|
-
libffi-
|
4
|
+
libffi-4?? was released on TBD. Check the libffi web
|
5
5
|
page for updates: <URL:http://sourceware.org/libffi/>.
|
6
6
|
|
7
7
|
|
@@ -43,51 +43,79 @@ Libffi has been ported to many different platforms.
|
|
43
43
|
For specific configuration details and testing status, please
|
44
44
|
refer to the wiki page here:
|
45
45
|
|
46
|
-
http://www.moxielogic.org/wiki/index.php?title=Libffi_3.
|
46
|
+
http://www.moxielogic.org/wiki/index.php?title=Libffi_3.2
|
47
47
|
|
48
48
|
At the time of release, the following basic configurations have been
|
49
49
|
tested:
|
50
50
|
|
51
|
-
|
52
|
-
| Architecture
|
53
|
-
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
51
|
+
|-----------------+------------------+-------------------------|
|
52
|
+
| Architecture | Operating System | Compiler |
|
53
|
+
|-----------------+------------------+-------------------------|
|
54
|
+
| AArch64 (ARM64) | iOS | Clang |
|
55
|
+
| AArch64 | Linux | GCC |
|
56
|
+
| Alpha | Linux | GCC |
|
57
|
+
| Alpha | Tru64 | GCC |
|
58
|
+
| ARC | Linux | GCC |
|
59
|
+
| ARM | Linux | GCC |
|
60
|
+
| ARM | iOS | GCC |
|
61
|
+
| AVR32 | Linux | GCC |
|
62
|
+
| Blackfin | uClinux | GCC |
|
63
|
+
| HPPA | HPUX | GCC |
|
64
|
+
| IA-64 | Linux | GCC |
|
65
|
+
| M68K | FreeMiNT | GCC |
|
66
|
+
| M68K | Linux | GCC |
|
67
|
+
| M68K | RTEMS | GCC |
|
68
|
+
| M88K | OpenBSD/mvme88k | GCC |
|
69
|
+
| Meta | Linux | GCC |
|
70
|
+
| MicroBlaze | Linux | GCC |
|
71
|
+
| MIPS | IRIX | GCC |
|
72
|
+
| MIPS | Linux | GCC |
|
73
|
+
| MIPS | RTEMS | GCC |
|
74
|
+
| MIPS64 | Linux | GCC |
|
75
|
+
| Moxie | Bare metal | GCC |
|
76
|
+
| Nios II | Linux | GCC |
|
77
|
+
| OpenRISC | Linux | GCC |
|
78
|
+
| PowerPC 32-bit | AIX | IBM XL C |
|
79
|
+
| PowerPC 64-bit | AIX | IBM XL C |
|
80
|
+
| PowerPC | AMIGA | GCC |
|
81
|
+
| PowerPC | Linux | GCC |
|
82
|
+
| PowerPC | Mac OSX | GCC |
|
83
|
+
| PowerPC | FreeBSD | GCC |
|
84
|
+
| PowerPC 64-bit | FreeBSD | GCC |
|
85
|
+
| PowerPC 64-bit | Linux ELFv1 | GCC |
|
86
|
+
| PowerPC 64-bit | Linux ELFv2 | GCC |
|
87
|
+
| S390 | Linux | GCC |
|
88
|
+
| S390X | Linux | GCC |
|
89
|
+
| SPARC | Linux | GCC |
|
90
|
+
| SPARC | Solaris | GCC |
|
91
|
+
| SPARC | Solaris | Oracle Solaris Studio C |
|
92
|
+
| SPARC64 | Linux | GCC |
|
93
|
+
| SPARC64 | FreeBSD | GCC |
|
94
|
+
| SPARC64 | Solaris | Oracle Solaris Studio C |
|
95
|
+
| TILE-Gx/TILEPro | Linux | GCC |
|
96
|
+
| VAX | OpenBSD/vax | GCC |
|
97
|
+
| X86 | FreeBSD | GCC |
|
98
|
+
| X86 | GNU HURD | GCC |
|
99
|
+
| X86 | Interix | GCC |
|
100
|
+
| X86 | kFreeBSD | GCC |
|
101
|
+
| X86 | Linux | GCC |
|
102
|
+
| X86 | Mac OSX | GCC |
|
103
|
+
| X86 | OpenBSD | GCC |
|
104
|
+
| X86 | OS/2 | GCC |
|
105
|
+
| X86 | Solaris | GCC |
|
106
|
+
| X86 | Solaris | Oracle Solaris Studio C |
|
107
|
+
| X86 | Windows/Cygwin | GCC |
|
108
|
+
| X86 | Windows/MingW | GCC |
|
109
|
+
| X86-64 | FreeBSD | GCC |
|
110
|
+
| X86-64 | Linux | GCC |
|
111
|
+
| X86-64 | Linux/x32 | GCC |
|
112
|
+
| X86-64 | OpenBSD | GCC |
|
113
|
+
| X86-64 | Solaris | Oracle Solaris Studio C |
|
114
|
+
| X86-64 | Windows/Cygwin | GCC |
|
115
|
+
| X86-64 | Windows/MingW | GCC |
|
116
|
+
| X86-64 | Mac OSX | GCC |
|
117
|
+
| Xtensa | Linux | GCC |
|
118
|
+
|-----------------+------------------+-------------------------|
|
91
119
|
|
92
120
|
Please send additional platform test results to
|
93
121
|
libffi-discuss@sourceware.org and feel free to update the wiki page
|
@@ -101,6 +129,9 @@ system. Go to the directory you wish to build libffi in and run the
|
|
101
129
|
"configure" program found in the root directory of the libffi source
|
102
130
|
distribution.
|
103
131
|
|
132
|
+
If you're building libffi directly from version control, configure won't
|
133
|
+
exist yet; run ./autogen.sh first.
|
134
|
+
|
104
135
|
You may want to tell configure where to install the libffi library and
|
105
136
|
header files. To do that, use the --prefix configure switch. Libffi
|
106
137
|
will install under /usr/local by default.
|
@@ -114,24 +145,35 @@ will add some extra code which will suppress certain warnings when you
|
|
114
145
|
are using Purify with libffi. Only use this switch when using
|
115
146
|
Purify, as it will slow down the library.
|
116
147
|
|
148
|
+
If you don't want to build documentation, use the --disable-docs
|
149
|
+
configure switch.
|
150
|
+
|
117
151
|
It's also possible to build libffi on Windows platforms with
|
118
152
|
Microsoft's Visual C++ compiler. In this case, use the msvcc.sh
|
119
153
|
wrapper script during configuration like so:
|
120
154
|
|
121
|
-
path/to/configure CC=path/to/msvcc.sh LD=link CPP
|
155
|
+
path/to/configure CC=path/to/msvcc.sh CXX=path/to/msvcc.sh LD=link CPP="cl -nologo -EP"
|
156
|
+
|
157
|
+
For 64-bit Windows builds, use CC="path/to/msvcc.sh -m64" and
|
158
|
+
CXX="path/to/msvcc.sh -m64". You may also need to specify --build
|
159
|
+
appropriately.
|
160
|
+
|
161
|
+
It is also possible to build libffi on Windows platforms with the LLVM
|
162
|
+
project's clang-cl compiler, like below:
|
163
|
+
|
164
|
+
path/to/configure CC="path/to/msvcc.sh -clang-cl" CXX="path/to/msvcc.sh -clang-cl" LD=link CPP="clang-cl -EP"
|
122
165
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
present in MingW, and is not required when using MingW-style paths.)
|
166
|
+
When building with MSVC under a MingW environment, you may need to
|
167
|
+
remove the line in configure that sets 'fix_srcfile_path' to a 'cygpath'
|
168
|
+
command. ('cygpath' is not present in MingW, and is not required when
|
169
|
+
using MingW-style paths.)
|
128
170
|
|
129
|
-
For iOS builds,
|
171
|
+
For iOS builds, the 'libffi.xcodeproj' Xcode project is available.
|
130
172
|
|
131
173
|
Configure has many other options. Use "configure --help" to see them all.
|
132
174
|
|
133
175
|
Once configure has finished, type "make". Note that you must be using
|
134
|
-
GNU make. You can ftp GNU make from
|
176
|
+
GNU make. You can ftp GNU make from ftp.gnu.org:/pub/gnu/make .
|
135
177
|
|
136
178
|
To ensure that libffi is working as advertised, type "make check".
|
137
179
|
This will require that you have DejaGNU installed.
|
@@ -142,7 +184,67 @@ To install the library and header files, type "make install".
|
|
142
184
|
History
|
143
185
|
=======
|
144
186
|
|
145
|
-
See the
|
187
|
+
See the git log for details at http://github.com/libffi/libffi.
|
188
|
+
|
189
|
+
4.0 TBD
|
190
|
+
New API in support of GO closures.
|
191
|
+
|
192
|
+
3.2.1 Nov-12-14
|
193
|
+
Build fix for non-iOS AArch64 targets.
|
194
|
+
|
195
|
+
3.2 Nov-11-14
|
196
|
+
Add C99 Complex Type support (currently only supported on
|
197
|
+
s390).
|
198
|
+
Add support for PASCAL and REGISTER calling conventions on x86
|
199
|
+
Windows/Linux.
|
200
|
+
Add OpenRISC and Cygwin-64 support.
|
201
|
+
Bug fixes.
|
202
|
+
|
203
|
+
3.1 May-19-14
|
204
|
+
Add AArch64 (ARM64) iOS support.
|
205
|
+
Add Nios II support.
|
206
|
+
Add m88k and DEC VAX support.
|
207
|
+
Add support for stdcall, thiscall, and fastcall on non-Windows
|
208
|
+
32-bit x86 targets such as Linux.
|
209
|
+
Various Android, MIPS N32, x86, FreeBSD and UltraSPARC IIi
|
210
|
+
fixes.
|
211
|
+
Make the testsuite more robust: eliminate several spurious
|
212
|
+
failures, and respect the $CC and $CXX environment variables.
|
213
|
+
Archive off the manually maintained ChangeLog in favor of git
|
214
|
+
log.
|
215
|
+
|
216
|
+
3.0.13 Mar-17-13
|
217
|
+
Add Meta support.
|
218
|
+
Add missing Moxie bits.
|
219
|
+
Fix stack alignment bug on 32-bit x86.
|
220
|
+
Build fix for m68000 targets.
|
221
|
+
Build fix for soft-float Power targets.
|
222
|
+
Fix the install dir location for some platforms when building
|
223
|
+
with GCC (OS X, Solaris).
|
224
|
+
Fix Cygwin regression.
|
225
|
+
|
226
|
+
3.0.12 Feb-11-13
|
227
|
+
Add Moxie support.
|
228
|
+
Add AArch64 support.
|
229
|
+
Add Blackfin support.
|
230
|
+
Add TILE-Gx/TILEPro support.
|
231
|
+
Add MicroBlaze support.
|
232
|
+
Add Xtensa support.
|
233
|
+
Add support for PaX enabled kernels with MPROTECT.
|
234
|
+
Add support for native vendor compilers on
|
235
|
+
Solaris and AIX.
|
236
|
+
Work around LLVM/GCC interoperability issue on x86_64.
|
237
|
+
|
238
|
+
3.0.11 Apr-11-12
|
239
|
+
Lots of build fixes.
|
240
|
+
Add support for variadic functions (ffi_prep_cif_var).
|
241
|
+
Add Linux/x32 support.
|
242
|
+
Add thiscall, fastcall and MSVC cdecl support on Windows.
|
243
|
+
Add Amiga and newer MacOS support.
|
244
|
+
Add m68k FreeMiNT support.
|
245
|
+
Integration with iOS' xcode build tools.
|
246
|
+
Fix Octeon and MC68881 support.
|
247
|
+
Fix code pessimizations.
|
146
248
|
|
147
249
|
3.0.10 Aug-23-11
|
148
250
|
Add support for Apple's iOS.
|
@@ -286,7 +388,7 @@ See the ChangeLog files for details.
|
|
286
388
|
Authors & Credits
|
287
389
|
=================
|
288
390
|
|
289
|
-
libffi was originally written by Anthony Green <green@
|
391
|
+
libffi was originally written by Anthony Green <green@moxielogic.com>.
|
290
392
|
|
291
393
|
The developers of the GNU Compiler Collection project have made
|
292
394
|
innumerable valuable contributions. See the ChangeLog file for
|
@@ -301,15 +403,22 @@ Thorup.
|
|
301
403
|
Major processor architecture ports were contributed by the following
|
302
404
|
developers:
|
303
405
|
|
406
|
+
aarch64 Marcus Shawcroft, James Greenhalgh
|
304
407
|
alpha Richard Henderson
|
305
408
|
arm Raffaele Sena
|
409
|
+
blackfin Alexandre Keunecke I. de Mendonca
|
306
410
|
cris Simon Posnjak, Hans-Peter Nilsson
|
307
411
|
frv Anthony Green
|
308
412
|
ia64 Hans Boehm
|
309
413
|
m32r Kazuhiro Inaoka
|
310
414
|
m68k Andreas Schwab
|
415
|
+
m88k Miod Vallat
|
416
|
+
microblaze Nathan Rossi
|
311
417
|
mips Anthony Green, Casey Marshall
|
312
418
|
mips64 David Daney
|
419
|
+
moxie Anthony Green
|
420
|
+
nios ii Sandra Loosemore
|
421
|
+
openrisc Sebastian Macke
|
313
422
|
pa Randolph Chung, Dave Anglin, Andreas Tobler
|
314
423
|
powerpc Geoffrey Keating, Andreas Tobler,
|
315
424
|
David Edelsohn, John Hornkvist
|
@@ -318,8 +427,11 @@ s390 Gerhard Tonn, Ulrich Weigand
|
|
318
427
|
sh Kaz Kojima
|
319
428
|
sh64 Kaz Kojima
|
320
429
|
sparc Anthony Green, Gordon Irlam
|
430
|
+
tile-gx/tilepro Walter Lee
|
431
|
+
vax Miod Vallat
|
321
432
|
x86 Anthony Green, Jon Beniston
|
322
433
|
x86-64 Bo Thorsen
|
434
|
+
xtensa Chris Zankel
|
323
435
|
|
324
436
|
Jesper Skov and Andrew Haley both did more than their fair share of
|
325
437
|
stepping through the code and tracking down bugs.
|
@@ -90,3 +90,384 @@ if test $ac_cv_func_mmap_anon = yes; then
|
|
90
90
|
[Define if mmap with MAP_ANON(YMOUS) works.])
|
91
91
|
fi
|
92
92
|
])
|
93
|
+
|
94
|
+
dnl ----------------------------------------------------------------------
|
95
|
+
dnl This whole bit snagged from libstdc++-v3, via libatomic.
|
96
|
+
|
97
|
+
dnl
|
98
|
+
dnl LIBFFI_ENABLE
|
99
|
+
dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING)
|
100
|
+
dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, permit a|b|c)
|
101
|
+
dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, SHELL-CODE-HANDLER)
|
102
|
+
dnl
|
103
|
+
dnl See docs/html/17_intro/configury.html#enable for documentation.
|
104
|
+
dnl
|
105
|
+
m4_define([LIBFFI_ENABLE],[dnl
|
106
|
+
m4_define([_g_switch],[--enable-$1])dnl
|
107
|
+
m4_define([_g_help],[AC_HELP_STRING(_g_switch$3,[$4 @<:@default=$2@:>@])])dnl
|
108
|
+
AC_ARG_ENABLE($1,_g_help,
|
109
|
+
m4_bmatch([$5],
|
110
|
+
[^permit ],
|
111
|
+
[[
|
112
|
+
case "$enableval" in
|
113
|
+
m4_bpatsubst([$5],[permit ])) ;;
|
114
|
+
*) AC_MSG_ERROR(Unknown argument to enable/disable $1) ;;
|
115
|
+
dnl Idea for future: generate a URL pointing to
|
116
|
+
dnl "onlinedocs/configopts.html#whatever"
|
117
|
+
esac
|
118
|
+
]],
|
119
|
+
[^$],
|
120
|
+
[[
|
121
|
+
case "$enableval" in
|
122
|
+
yes|no) ;;
|
123
|
+
*) AC_MSG_ERROR(Argument to enable/disable $1 must be yes or no) ;;
|
124
|
+
esac
|
125
|
+
]],
|
126
|
+
[[$5]]),
|
127
|
+
[enable_]m4_bpatsubst([$1],-,_)[=][$2])
|
128
|
+
m4_undefine([_g_switch])dnl
|
129
|
+
m4_undefine([_g_help])dnl
|
130
|
+
])
|
131
|
+
|
132
|
+
dnl
|
133
|
+
dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
|
134
|
+
dnl the native linker is in use, all variables will be defined to something
|
135
|
+
dnl safe (like an empty string).
|
136
|
+
dnl
|
137
|
+
dnl Defines:
|
138
|
+
dnl SECTION_LDFLAGS='-Wl,--gc-sections' if possible
|
139
|
+
dnl OPT_LDFLAGS='-Wl,-O1' if possible
|
140
|
+
dnl LD (as a side effect of testing)
|
141
|
+
dnl Sets:
|
142
|
+
dnl with_gnu_ld
|
143
|
+
dnl libat_ld_is_gold (possibly)
|
144
|
+
dnl libat_gnu_ld_version (possibly)
|
145
|
+
dnl
|
146
|
+
dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will
|
147
|
+
dnl set libat_gnu_ld_version to 12345. Zeros cause problems.
|
148
|
+
dnl
|
149
|
+
AC_DEFUN([LIBFFI_CHECK_LINKER_FEATURES], [
|
150
|
+
# If we're not using GNU ld, then there's no point in even trying these
|
151
|
+
# tests. Check for that first. We should have already tested for gld
|
152
|
+
# by now (in libtool), but require it now just to be safe...
|
153
|
+
test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
|
154
|
+
test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
|
155
|
+
AC_REQUIRE([AC_PROG_LD])
|
156
|
+
AC_REQUIRE([AC_PROG_AWK])
|
157
|
+
|
158
|
+
# The name set by libtool depends on the version of libtool. Shame on us
|
159
|
+
# for depending on an impl detail, but c'est la vie. Older versions used
|
160
|
+
# ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
|
161
|
+
# top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
|
162
|
+
# makes sense). We'll test with_gnu_ld everywhere else, so if that isn't
|
163
|
+
# set (hence we're using an older libtool), then set it.
|
164
|
+
if test x${with_gnu_ld+set} != xset; then
|
165
|
+
if test x${ac_cv_prog_gnu_ld+set} != xset; then
|
166
|
+
# We got through "ac_require(ac_prog_ld)" and still not set? Huh?
|
167
|
+
with_gnu_ld=no
|
168
|
+
else
|
169
|
+
with_gnu_ld=$ac_cv_prog_gnu_ld
|
170
|
+
fi
|
171
|
+
fi
|
172
|
+
|
173
|
+
# Start by getting the version number. I think the libtool test already
|
174
|
+
# does some of this, but throws away the result.
|
175
|
+
libat_ld_is_gold=no
|
176
|
+
if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
|
177
|
+
libat_ld_is_gold=yes
|
178
|
+
fi
|
179
|
+
changequote(,)
|
180
|
+
ldver=`$LD --version 2>/dev/null |
|
181
|
+
sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
|
182
|
+
changequote([,])
|
183
|
+
libat_gnu_ld_version=`echo $ldver | \
|
184
|
+
$AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
|
185
|
+
|
186
|
+
# Set --gc-sections.
|
187
|
+
if test "$with_gnu_ld" = "notbroken"; then
|
188
|
+
# GNU ld it is! Joy and bunny rabbits!
|
189
|
+
|
190
|
+
# All these tests are for C++; save the language and the compiler flags.
|
191
|
+
# Need to do this so that g++ won't try to link in libstdc++
|
192
|
+
ac_test_CFLAGS="${CFLAGS+set}"
|
193
|
+
ac_save_CFLAGS="$CFLAGS"
|
194
|
+
CFLAGS='-x c++ -Wl,--gc-sections'
|
195
|
+
|
196
|
+
# Check for -Wl,--gc-sections
|
197
|
+
# XXX This test is broken at the moment, as symbols required for linking
|
198
|
+
# are now in libsupc++ (not built yet). In addition, this test has
|
199
|
+
# cored on solaris in the past. In addition, --gc-sections doesn't
|
200
|
+
# really work at the moment (keeps on discarding used sections, first
|
201
|
+
# .eh_frame and now some of the glibc sections for iconv).
|
202
|
+
# Bzzzzt. Thanks for playing, maybe next time.
|
203
|
+
AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
|
204
|
+
AC_TRY_RUN([
|
205
|
+
int main(void)
|
206
|
+
{
|
207
|
+
try { throw 1; }
|
208
|
+
catch (...) { };
|
209
|
+
return 0;
|
210
|
+
}
|
211
|
+
], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes])
|
212
|
+
if test "$ac_test_CFLAGS" = set; then
|
213
|
+
CFLAGS="$ac_save_CFLAGS"
|
214
|
+
else
|
215
|
+
# this is the suspicious part
|
216
|
+
CFLAGS=''
|
217
|
+
fi
|
218
|
+
if test "$ac_sectionLDflags" = "yes"; then
|
219
|
+
SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
|
220
|
+
fi
|
221
|
+
AC_MSG_RESULT($ac_sectionLDflags)
|
222
|
+
fi
|
223
|
+
|
224
|
+
# Set linker optimization flags.
|
225
|
+
if test x"$with_gnu_ld" = x"yes"; then
|
226
|
+
OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
|
227
|
+
fi
|
228
|
+
|
229
|
+
AC_SUBST(SECTION_LDFLAGS)
|
230
|
+
AC_SUBST(OPT_LDFLAGS)
|
231
|
+
])
|
232
|
+
|
233
|
+
|
234
|
+
dnl
|
235
|
+
dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
|
236
|
+
dnl the native linker is in use, all variables will be defined to something
|
237
|
+
dnl safe (like an empty string).
|
238
|
+
dnl
|
239
|
+
dnl Defines:
|
240
|
+
dnl SECTION_LDFLAGS='-Wl,--gc-sections' if possible
|
241
|
+
dnl OPT_LDFLAGS='-Wl,-O1' if possible
|
242
|
+
dnl LD (as a side effect of testing)
|
243
|
+
dnl Sets:
|
244
|
+
dnl with_gnu_ld
|
245
|
+
dnl libat_ld_is_gold (possibly)
|
246
|
+
dnl libat_gnu_ld_version (possibly)
|
247
|
+
dnl
|
248
|
+
dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will
|
249
|
+
dnl set libat_gnu_ld_version to 12345. Zeros cause problems.
|
250
|
+
dnl
|
251
|
+
AC_DEFUN([LIBFFI_CHECK_LINKER_FEATURES], [
|
252
|
+
# If we're not using GNU ld, then there's no point in even trying these
|
253
|
+
# tests. Check for that first. We should have already tested for gld
|
254
|
+
# by now (in libtool), but require it now just to be safe...
|
255
|
+
test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
|
256
|
+
test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
|
257
|
+
AC_REQUIRE([AC_PROG_LD])
|
258
|
+
AC_REQUIRE([AC_PROG_AWK])
|
259
|
+
|
260
|
+
# The name set by libtool depends on the version of libtool. Shame on us
|
261
|
+
# for depending on an impl detail, but c'est la vie. Older versions used
|
262
|
+
# ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
|
263
|
+
# top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
|
264
|
+
# makes sense). We'll test with_gnu_ld everywhere else, so if that isn't
|
265
|
+
# set (hence we're using an older libtool), then set it.
|
266
|
+
if test x${with_gnu_ld+set} != xset; then
|
267
|
+
if test x${ac_cv_prog_gnu_ld+set} != xset; then
|
268
|
+
# We got through "ac_require(ac_prog_ld)" and still not set? Huh?
|
269
|
+
with_gnu_ld=no
|
270
|
+
else
|
271
|
+
with_gnu_ld=$ac_cv_prog_gnu_ld
|
272
|
+
fi
|
273
|
+
fi
|
274
|
+
|
275
|
+
# Start by getting the version number. I think the libtool test already
|
276
|
+
# does some of this, but throws away the result.
|
277
|
+
libat_ld_is_gold=no
|
278
|
+
if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
|
279
|
+
libat_ld_is_gold=yes
|
280
|
+
fi
|
281
|
+
changequote(,)
|
282
|
+
ldver=`$LD --version 2>/dev/null |
|
283
|
+
sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
|
284
|
+
changequote([,])
|
285
|
+
libat_gnu_ld_version=`echo $ldver | \
|
286
|
+
$AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
|
287
|
+
|
288
|
+
# Set --gc-sections.
|
289
|
+
if test "$with_gnu_ld" = "notbroken"; then
|
290
|
+
# GNU ld it is! Joy and bunny rabbits!
|
291
|
+
|
292
|
+
# All these tests are for C++; save the language and the compiler flags.
|
293
|
+
# Need to do this so that g++ won't try to link in libstdc++
|
294
|
+
ac_test_CFLAGS="${CFLAGS+set}"
|
295
|
+
ac_save_CFLAGS="$CFLAGS"
|
296
|
+
CFLAGS='-x c++ -Wl,--gc-sections'
|
297
|
+
|
298
|
+
# Check for -Wl,--gc-sections
|
299
|
+
# XXX This test is broken at the moment, as symbols required for linking
|
300
|
+
# are now in libsupc++ (not built yet). In addition, this test has
|
301
|
+
# cored on solaris in the past. In addition, --gc-sections doesn't
|
302
|
+
# really work at the moment (keeps on discarding used sections, first
|
303
|
+
# .eh_frame and now some of the glibc sections for iconv).
|
304
|
+
# Bzzzzt. Thanks for playing, maybe next time.
|
305
|
+
AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
|
306
|
+
AC_TRY_RUN([
|
307
|
+
int main(void)
|
308
|
+
{
|
309
|
+
try { throw 1; }
|
310
|
+
catch (...) { };
|
311
|
+
return 0;
|
312
|
+
}
|
313
|
+
], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes])
|
314
|
+
if test "$ac_test_CFLAGS" = set; then
|
315
|
+
CFLAGS="$ac_save_CFLAGS"
|
316
|
+
else
|
317
|
+
# this is the suspicious part
|
318
|
+
CFLAGS=''
|
319
|
+
fi
|
320
|
+
if test "$ac_sectionLDflags" = "yes"; then
|
321
|
+
SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
|
322
|
+
fi
|
323
|
+
AC_MSG_RESULT($ac_sectionLDflags)
|
324
|
+
fi
|
325
|
+
|
326
|
+
# Set linker optimization flags.
|
327
|
+
if test x"$with_gnu_ld" = x"yes"; then
|
328
|
+
OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
|
329
|
+
fi
|
330
|
+
|
331
|
+
AC_SUBST(SECTION_LDFLAGS)
|
332
|
+
AC_SUBST(OPT_LDFLAGS)
|
333
|
+
])
|
334
|
+
|
335
|
+
|
336
|
+
dnl
|
337
|
+
dnl Add version tags to symbols in shared library (or not), additionally
|
338
|
+
dnl marking other symbols as private/local (or not).
|
339
|
+
dnl
|
340
|
+
dnl --enable-symvers=style adds a version script to the linker call when
|
341
|
+
dnl creating the shared library. The choice of version script is
|
342
|
+
dnl controlled by 'style'.
|
343
|
+
dnl --disable-symvers does not.
|
344
|
+
dnl + Usage: LIBFFI_ENABLE_SYMVERS[(DEFAULT)]
|
345
|
+
dnl Where DEFAULT is either 'yes' or 'no'. Passing `yes' tries to
|
346
|
+
dnl choose a default style based on linker characteristics. Passing
|
347
|
+
dnl 'no' disables versioning.
|
348
|
+
dnl
|
349
|
+
AC_DEFUN([LIBFFI_ENABLE_SYMVERS], [
|
350
|
+
|
351
|
+
LIBFFI_ENABLE(symvers,yes,[=STYLE],
|
352
|
+
[enables symbol versioning of the shared library],
|
353
|
+
[permit yes|no|gnu*|sun])
|
354
|
+
|
355
|
+
# If we never went through the LIBFFI_CHECK_LINKER_FEATURES macro, then we
|
356
|
+
# don't know enough about $LD to do tricks...
|
357
|
+
AC_REQUIRE([LIBFFI_CHECK_LINKER_FEATURES])
|
358
|
+
|
359
|
+
# Turn a 'yes' into a suitable default.
|
360
|
+
if test x$enable_symvers = xyes ; then
|
361
|
+
# FIXME The following test is too strict, in theory.
|
362
|
+
if test $enable_shared = no || test "x$LD" = x; then
|
363
|
+
enable_symvers=no
|
364
|
+
else
|
365
|
+
if test $with_gnu_ld = yes ; then
|
366
|
+
enable_symvers=gnu
|
367
|
+
else
|
368
|
+
case ${target_os} in
|
369
|
+
# Sun symbol versioning exists since Solaris 2.5.
|
370
|
+
solaris2.[[5-9]]* | solaris2.1[[0-9]]*)
|
371
|
+
enable_symvers=sun ;;
|
372
|
+
*)
|
373
|
+
enable_symvers=no ;;
|
374
|
+
esac
|
375
|
+
fi
|
376
|
+
fi
|
377
|
+
fi
|
378
|
+
|
379
|
+
# Check if 'sun' was requested on non-Solaris 2 platforms.
|
380
|
+
if test x$enable_symvers = xsun ; then
|
381
|
+
case ${target_os} in
|
382
|
+
solaris2*)
|
383
|
+
# All fine.
|
384
|
+
;;
|
385
|
+
*)
|
386
|
+
# Unlikely to work.
|
387
|
+
AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
|
388
|
+
AC_MSG_WARN([=== you are not targetting Solaris 2.])
|
389
|
+
AC_MSG_WARN([=== Symbol versioning will be disabled.])
|
390
|
+
enable_symvers=no
|
391
|
+
;;
|
392
|
+
esac
|
393
|
+
fi
|
394
|
+
|
395
|
+
# Check to see if libgcc_s exists, indicating that shared libgcc is possible.
|
396
|
+
if test $enable_symvers != no; then
|
397
|
+
AC_MSG_CHECKING([for shared libgcc])
|
398
|
+
ac_save_CFLAGS="$CFLAGS"
|
399
|
+
CFLAGS=' -lgcc_s'
|
400
|
+
AC_TRY_LINK(, [return 0;], libat_shared_libgcc=yes, libat_shared_libgcc=no)
|
401
|
+
CFLAGS="$ac_save_CFLAGS"
|
402
|
+
if test $libat_shared_libgcc = no; then
|
403
|
+
cat > conftest.c <<EOF
|
404
|
+
int main (void) { return 0; }
|
405
|
+
EOF
|
406
|
+
changequote(,)dnl
|
407
|
+
libat_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
|
408
|
+
-shared -shared-libgcc -o conftest.so \
|
409
|
+
conftest.c -v 2>&1 >/dev/null \
|
410
|
+
| sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
|
411
|
+
changequote([,])dnl
|
412
|
+
rm -f conftest.c conftest.so
|
413
|
+
if test x${libat_libgcc_s_suffix+set} = xset; then
|
414
|
+
CFLAGS=" -lgcc_s$libat_libgcc_s_suffix"
|
415
|
+
AC_TRY_LINK(, [return 0;], libat_shared_libgcc=yes)
|
416
|
+
CFLAGS="$ac_save_CFLAGS"
|
417
|
+
fi
|
418
|
+
fi
|
419
|
+
AC_MSG_RESULT($libat_shared_libgcc)
|
420
|
+
fi
|
421
|
+
|
422
|
+
# For GNU ld, we need at least this version. The format is described in
|
423
|
+
# LIBFFI_CHECK_LINKER_FEATURES above.
|
424
|
+
libat_min_gnu_ld_version=21400
|
425
|
+
# XXXXXXXXXXX libat_gnu_ld_version=21390
|
426
|
+
|
427
|
+
# Check to see if unspecified "yes" value can win, given results above.
|
428
|
+
# Change "yes" into either "no" or a style name.
|
429
|
+
if test $enable_symvers != no && test $libat_shared_libgcc = yes; then
|
430
|
+
if test $with_gnu_ld = yes; then
|
431
|
+
if test $libat_gnu_ld_version -ge $libat_min_gnu_ld_version ; then
|
432
|
+
enable_symvers=gnu
|
433
|
+
elif test $libat_ld_is_gold = yes ; then
|
434
|
+
enable_symvers=gnu
|
435
|
+
else
|
436
|
+
# The right tools, the right setup, but too old. Fallbacks?
|
437
|
+
AC_MSG_WARN(=== Linker version $libat_gnu_ld_version is too old for)
|
438
|
+
AC_MSG_WARN(=== full symbol versioning support in this release of GCC.)
|
439
|
+
AC_MSG_WARN(=== You would need to upgrade your binutils to version)
|
440
|
+
AC_MSG_WARN(=== $libat_min_gnu_ld_version or later and rebuild GCC.)
|
441
|
+
if test $libat_gnu_ld_version -ge 21200 ; then
|
442
|
+
# Globbing fix is present, proper block support is not.
|
443
|
+
dnl AC_MSG_WARN([=== Dude, you are soooo close. Maybe we can fake it.])
|
444
|
+
dnl enable_symvers=???
|
445
|
+
AC_MSG_WARN([=== Symbol versioning will be disabled.])
|
446
|
+
enable_symvers=no
|
447
|
+
else
|
448
|
+
# 2.11 or older.
|
449
|
+
AC_MSG_WARN([=== Symbol versioning will be disabled.])
|
450
|
+
enable_symvers=no
|
451
|
+
fi
|
452
|
+
fi
|
453
|
+
elif test $enable_symvers = sun; then
|
454
|
+
: All interesting versions of Sun ld support sun style symbol versioning.
|
455
|
+
else
|
456
|
+
# just fail for now
|
457
|
+
AC_MSG_WARN([=== You have requested some kind of symbol versioning, but])
|
458
|
+
AC_MSG_WARN([=== either you are not using a supported linker, or you are])
|
459
|
+
AC_MSG_WARN([=== not building a shared libgcc_s (which is required).])
|
460
|
+
AC_MSG_WARN([=== Symbol versioning will be disabled.])
|
461
|
+
enable_symvers=no
|
462
|
+
fi
|
463
|
+
fi
|
464
|
+
if test $enable_symvers = gnu; then
|
465
|
+
AC_DEFINE(LIBFFI_GNU_SYMBOL_VERSIONING, 1,
|
466
|
+
[Define to 1 if GNU symbol versioning is used for libatomic.])
|
467
|
+
fi
|
468
|
+
|
469
|
+
AM_CONDITIONAL(LIBFFI_BUILD_VERSIONED_SHLIB, test $enable_symvers != no)
|
470
|
+
AM_CONDITIONAL(LIBFFI_BUILD_VERSIONED_SHLIB_GNU, test $enable_symvers = gnu)
|
471
|
+
AM_CONDITIONAL(LIBFFI_BUILD_VERSIONED_SHLIB_SUN, test $enable_symvers = sun)
|
472
|
+
AC_MSG_NOTICE(versioning on shared library symbols is $enable_symvers)
|
473
|
+
])
|