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
@@ -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
|
+
])
|
@@ -1,14 +1,18 @@
|
|
1
1
|
dnl Process this with autoconf to create configure
|
2
2
|
|
3
|
-
AC_PREREQ(2.
|
3
|
+
AC_PREREQ(2.68)
|
4
4
|
|
5
|
-
AC_INIT([libffi], [3.
|
5
|
+
AC_INIT([libffi], [3.99999], [http://github.com/libffi/libffi/issues])
|
6
6
|
AC_CONFIG_HEADERS([fficonfig.h])
|
7
7
|
|
8
8
|
AC_CANONICAL_SYSTEM
|
9
9
|
target_alias=${target_alias-$host_alias}
|
10
10
|
|
11
|
-
|
11
|
+
case "${host}" in
|
12
|
+
frv*-elf)
|
13
|
+
LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/
|
14
|
+
;;
|
15
|
+
esac
|
12
16
|
|
13
17
|
AX_ENABLE_BUILDDIR
|
14
18
|
|
@@ -25,9 +29,10 @@ m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
|
|
25
29
|
m4_define([_AC_ARG_VAR_PRECIOUS],[])
|
26
30
|
save_CFLAGS=$CFLAGS
|
27
31
|
AC_PROG_CC
|
32
|
+
AC_PROG_CXX
|
28
33
|
CFLAGS=$save_CFLAGS
|
29
34
|
m4_undefine([_AC_ARG_VAR_PRECIOUS])
|
30
|
-
|
35
|
+
m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
|
31
36
|
|
32
37
|
AC_SUBST(CFLAGS)
|
33
38
|
|
@@ -36,193 +41,46 @@ AM_PROG_CC_C_O
|
|
36
41
|
AC_PROG_LIBTOOL
|
37
42
|
AC_CONFIG_MACRO_DIR([m4])
|
38
43
|
|
44
|
+
# Test for 64-bit build.
|
45
|
+
AC_CHECK_SIZEOF([size_t])
|
46
|
+
|
47
|
+
AX_COMPILER_VENDOR
|
39
48
|
AX_CC_MAXOPT
|
40
|
-
AX_CFLAGS_WARN_ALL
|
49
|
+
# The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro
|
50
|
+
# compiler.
|
51
|
+
if test "$ax_cv_c_compiler_vendor" != "sun"; then
|
52
|
+
AX_CFLAGS_WARN_ALL
|
53
|
+
fi
|
54
|
+
|
41
55
|
if test "x$GCC" = "xyes"; then
|
42
56
|
CFLAGS="$CFLAGS -fexceptions"
|
43
57
|
fi
|
44
58
|
|
59
|
+
cat > local.exp <<EOF
|
60
|
+
set CC_FOR_TARGET "$CC"
|
61
|
+
set CXX_FOR_TARGET "$CXX"
|
62
|
+
EOF
|
63
|
+
|
45
64
|
AM_MAINTAINER_MODE
|
46
65
|
|
47
66
|
AC_CHECK_HEADERS(sys/mman.h)
|
48
|
-
AC_CHECK_FUNCS(mmap)
|
67
|
+
AC_CHECK_FUNCS([mmap mkostemp])
|
49
68
|
AC_FUNC_MMAP_BLACKLIST
|
50
69
|
|
51
70
|
dnl The -no-testsuite modules omit the test subdir.
|
52
71
|
AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite)
|
53
72
|
|
54
73
|
TARGETDIR="unknown"
|
55
|
-
|
56
|
-
alpha*-*-*)
|
57
|
-
TARGET=ALPHA; TARGETDIR=alpha;
|
58
|
-
# Support 128-bit long double, changeable via command-line switch.
|
59
|
-
HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
|
60
|
-
;;
|
61
|
-
|
62
|
-
arm*-*-*)
|
63
|
-
TARGET=ARM; TARGETDIR=arm
|
64
|
-
;;
|
65
|
-
|
66
|
-
amd64-*-freebsd* | amd64-*-openbsd*)
|
67
|
-
TARGET=X86_64; TARGETDIR=x86
|
68
|
-
;;
|
69
|
-
|
70
|
-
amd64-*-freebsd*)
|
71
|
-
TARGET=X86_64; TARGETDIR=x86
|
72
|
-
;;
|
73
|
-
|
74
|
-
avr32*-*-*)
|
75
|
-
TARGET=AVR32; TARGETDIR=avr32
|
76
|
-
;;
|
77
|
-
|
78
|
-
cris-*-*)
|
79
|
-
TARGET=LIBFFI_CRIS; TARGETDIR=cris
|
80
|
-
;;
|
81
|
-
|
82
|
-
frv-*-*)
|
83
|
-
TARGET=FRV; TARGETDIR=frv
|
84
|
-
;;
|
85
|
-
|
86
|
-
hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*)
|
87
|
-
TARGET=PA_LINUX; TARGETDIR=pa
|
88
|
-
;;
|
89
|
-
hppa*64-*-hpux*)
|
90
|
-
TARGET=PA64_HPUX; TARGETDIR=pa
|
91
|
-
;;
|
92
|
-
hppa*-*-hpux*)
|
93
|
-
TARGET=PA_HPUX; TARGETDIR=pa
|
94
|
-
;;
|
95
|
-
|
96
|
-
i?86-*-freebsd* | i?86-*-openbsd*)
|
97
|
-
TARGET=X86_FREEBSD; TARGETDIR=x86
|
98
|
-
;;
|
99
|
-
i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix*)
|
100
|
-
TARGET=X86_WIN32; TARGETDIR=x86
|
101
|
-
# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
|
102
|
-
# We must also check with_cross_host to decide if this is a native
|
103
|
-
# or cross-build and select where to install dlls appropriately.
|
104
|
-
if test -n "$with_cross_host" &&
|
105
|
-
test x"$with_cross_host" != x"no"; then
|
106
|
-
AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
|
107
|
-
else
|
108
|
-
AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
|
109
|
-
fi
|
110
|
-
;;
|
111
|
-
i?86-*-darwin*)
|
112
|
-
TARGET=X86_DARWIN; TARGETDIR=x86
|
113
|
-
;;
|
114
|
-
i?86-*-solaris2.1[[0-9]]*)
|
115
|
-
TARGET=X86_64; TARGETDIR=x86
|
116
|
-
;;
|
117
|
-
i?86-*-*)
|
118
|
-
TARGET=X86; TARGETDIR=x86
|
119
|
-
;;
|
120
|
-
|
121
|
-
ia64*-*-*)
|
122
|
-
TARGET=IA64; TARGETDIR=ia64
|
123
|
-
;;
|
124
|
-
|
125
|
-
m32r*-*-*)
|
126
|
-
TARGET=M32R; TARGETDIR=m32r
|
127
|
-
;;
|
128
|
-
|
129
|
-
m68k-*-*)
|
130
|
-
TARGET=M68K; TARGETDIR=m68k
|
131
|
-
;;
|
132
|
-
|
133
|
-
mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
|
134
|
-
TARGET=MIPS; TARGETDIR=mips
|
135
|
-
;;
|
136
|
-
mips*-*-linux* | mips*-*-openbsd*)
|
137
|
-
# Support 128-bit long double for NewABI.
|
138
|
-
HAVE_LONG_DOUBLE='defined(__mips64)'
|
139
|
-
TARGET=MIPS; TARGETDIR=mips
|
140
|
-
;;
|
141
|
-
|
142
|
-
powerpc*-*-linux* | powerpc-*-sysv*)
|
143
|
-
TARGET=POWERPC; TARGETDIR=powerpc
|
144
|
-
;;
|
145
|
-
powerpc-*-beos*)
|
146
|
-
TARGET=POWERPC; TARGETDIR=powerpc
|
147
|
-
;;
|
148
|
-
powerpc-*-darwin* | powerpc64-*-darwin*)
|
149
|
-
TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
|
150
|
-
;;
|
151
|
-
powerpc-*-aix* | rs6000-*-aix*)
|
152
|
-
TARGET=POWERPC_AIX; TARGETDIR=powerpc
|
153
|
-
;;
|
154
|
-
powerpc-*-freebsd* | powerpc-*-openbsd*)
|
155
|
-
TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
|
156
|
-
;;
|
157
|
-
powerpc64-*-freebsd*)
|
158
|
-
TARGET=POWERPC; TARGETDIR=powerpc
|
159
|
-
;;
|
160
|
-
powerpc*-*-rtems*)
|
161
|
-
TARGET=POWERPC; TARGETDIR=powerpc
|
162
|
-
;;
|
163
|
-
|
164
|
-
s390-*-* | s390x-*-*)
|
165
|
-
TARGET=S390; TARGETDIR=s390
|
166
|
-
;;
|
167
|
-
|
168
|
-
sh-*-* | sh[[34]]*-*-*)
|
169
|
-
TARGET=SH; TARGETDIR=sh
|
170
|
-
;;
|
171
|
-
sh64-*-* | sh5*-*-*)
|
172
|
-
TARGET=SH64; TARGETDIR=sh64
|
173
|
-
;;
|
174
|
-
|
175
|
-
sparc*-*-*)
|
176
|
-
TARGET=SPARC; TARGETDIR=sparc
|
177
|
-
;;
|
178
|
-
|
179
|
-
x86_64-*-darwin*)
|
180
|
-
TARGET=X86_DARWIN; TARGETDIR=x86
|
181
|
-
;;
|
182
|
-
|
183
|
-
x86_64-*-cygwin* | x86_64-*-mingw*)
|
184
|
-
TARGET=X86_WIN64; TARGETDIR=x86
|
185
|
-
;;
|
186
|
-
|
187
|
-
x86_64-*-*)
|
188
|
-
TARGET=X86_64; TARGETDIR=x86
|
189
|
-
;;
|
190
|
-
esac
|
74
|
+
HAVE_LONG_DOUBLE_VARIANT=0
|
191
75
|
|
192
|
-
|
193
|
-
AC_SUBST(AM_LTLDFLAGS)
|
76
|
+
. ${srcdir}/configure.host
|
194
77
|
|
195
|
-
if test $
|
78
|
+
if test -n "${UNSUPPORTED}"; then
|
196
79
|
AC_MSG_ERROR(["libffi has not been ported to $host."])
|
197
80
|
fi
|
198
81
|
|
199
|
-
|
200
|
-
|
201
|
-
AM_CONDITIONAL(X86, test x$TARGET = xX86)
|
202
|
-
AM_CONDITIONAL(X86_FREEBSD, test x$TARGET = xX86_FREEBSD)
|
203
|
-
AM_CONDITIONAL(X86_WIN32, test x$TARGET = xX86_WIN32)
|
204
|
-
AM_CONDITIONAL(X86_WIN64, test x$TARGET = xX86_WIN64)
|
205
|
-
AM_CONDITIONAL(X86_DARWIN, test x$TARGET = xX86_DARWIN)
|
206
|
-
AM_CONDITIONAL(ALPHA, test x$TARGET = xALPHA)
|
207
|
-
AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
|
208
|
-
AM_CONDITIONAL(M32R, test x$TARGET = xM32R)
|
209
|
-
AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
|
210
|
-
AM_CONDITIONAL(MOXIE, test x$TARGET = xMOXIE)
|
211
|
-
AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
|
212
|
-
AM_CONDITIONAL(POWERPC_AIX, test x$TARGET = xPOWERPC_AIX)
|
213
|
-
AM_CONDITIONAL(POWERPC_DARWIN, test x$TARGET = xPOWERPC_DARWIN)
|
214
|
-
AM_CONDITIONAL(POWERPC_FREEBSD, test x$TARGET = xPOWERPC_FREEBSD)
|
215
|
-
AM_CONDITIONAL(ARM, test x$TARGET = xARM)
|
216
|
-
AM_CONDITIONAL(AVR32, test x$TARGET = xAVR32)
|
217
|
-
AM_CONDITIONAL(LIBFFI_CRIS, test x$TARGET = xLIBFFI_CRIS)
|
218
|
-
AM_CONDITIONAL(FRV, test x$TARGET = xFRV)
|
219
|
-
AM_CONDITIONAL(S390, test x$TARGET = xS390)
|
220
|
-
AM_CONDITIONAL(X86_64, test x$TARGET = xX86_64)
|
221
|
-
AM_CONDITIONAL(SH, test x$TARGET = xSH)
|
222
|
-
AM_CONDITIONAL(SH64, test x$TARGET = xSH64)
|
223
|
-
AM_CONDITIONAL(PA_LINUX, test x$TARGET = xPA_LINUX)
|
224
|
-
AM_CONDITIONAL(PA_HPUX, test x$TARGET = xPA_HPUX)
|
225
|
-
AM_CONDITIONAL(PA64_HPUX, test x$TARGET = xPA64_HPUX)
|
82
|
+
AC_SUBST(AM_RUNTESTFLAGS)
|
83
|
+
AC_SUBST(AM_LTLDFLAGS)
|
226
84
|
|
227
85
|
AC_HEADER_STDC
|
228
86
|
AC_CHECK_FUNCS(memcpy)
|
@@ -234,30 +92,27 @@ AC_CHECK_SIZEOF(long double)
|
|
234
92
|
# Also AC_SUBST this variable for ffi.h.
|
235
93
|
if test -z "$HAVE_LONG_DOUBLE"; then
|
236
94
|
HAVE_LONG_DOUBLE=0
|
237
|
-
if test $
|
238
|
-
if test $
|
95
|
+
if test $ac_cv_sizeof_long_double != 0; then
|
96
|
+
if test $HAVE_LONG_DOUBLE_VARIANT != 0; then
|
97
|
+
AC_DEFINE(HAVE_LONG_DOUBLE_VARIANT, 1, [Define if you support more than one size of the long double type])
|
239
98
|
HAVE_LONG_DOUBLE=1
|
240
|
-
|
99
|
+
else
|
100
|
+
if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
|
101
|
+
HAVE_LONG_DOUBLE=1
|
102
|
+
AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double])
|
103
|
+
fi
|
241
104
|
fi
|
242
105
|
fi
|
243
106
|
fi
|
244
107
|
AC_SUBST(HAVE_LONG_DOUBLE)
|
108
|
+
AC_SUBST(HAVE_LONG_DOUBLE_VARIANT)
|
245
109
|
|
246
110
|
AC_C_BIGENDIAN
|
247
111
|
|
248
|
-
|
249
|
-
libffi_cv_as_cfi_pseudo_op, [
|
250
|
-
libffi_cv_as_cfi_pseudo_op=unknown
|
251
|
-
AC_TRY_COMPILE([asm (".cfi_startproc\n\t.cfi_endproc");],,
|
252
|
-
[libffi_cv_as_cfi_pseudo_op=yes],
|
253
|
-
[libffi_cv_as_cfi_pseudo_op=no])
|
254
|
-
])
|
255
|
-
if test "x$libffi_cv_as_cfi_pseudo_op" = xyes; then
|
256
|
-
AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1,
|
257
|
-
[Define if your assembler supports .cfi_* directives.])
|
258
|
-
fi
|
112
|
+
GCC_AS_CFI_PSEUDO_OP
|
259
113
|
|
260
|
-
|
114
|
+
case "$TARGET" in
|
115
|
+
SPARC)
|
261
116
|
AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
|
262
117
|
libffi_cv_as_sparc_ua_pcrel, [
|
263
118
|
save_CFLAGS="$CFLAGS"
|
@@ -278,7 +133,7 @@ if test x$TARGET = xSPARC; then
|
|
278
133
|
libffi_cv_as_register_pseudo_op, [
|
279
134
|
libffi_cv_as_register_pseudo_op=unknown
|
280
135
|
# Check if we have .register
|
281
|
-
AC_TRY_COMPILE([asm (".register %g2, #scratch");]
|
136
|
+
AC_TRY_COMPILE(,[asm (".register %g2, #scratch");],
|
282
137
|
[libffi_cv_as_register_pseudo_op=yes],
|
283
138
|
[libffi_cv_as_register_pseudo_op=no])
|
284
139
|
])
|
@@ -286,66 +141,63 @@ if test x$TARGET = xSPARC; then
|
|
286
141
|
AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
|
287
142
|
[Define if your assembler supports .register.])
|
288
143
|
fi
|
289
|
-
|
144
|
+
;;
|
290
145
|
|
291
|
-
|
146
|
+
X86*)
|
292
147
|
AC_CACHE_CHECK([assembler supports pc related relocs],
|
293
148
|
libffi_cv_as_x86_pcrel, [
|
294
149
|
libffi_cv_as_x86_pcrel=no
|
295
150
|
echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
|
296
|
-
if $CC $CFLAGS -c conftest.s > /dev/null; then
|
297
|
-
|
151
|
+
if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then
|
152
|
+
libffi_cv_as_x86_pcrel=yes
|
298
153
|
fi
|
299
154
|
])
|
300
155
|
if test "x$libffi_cv_as_x86_pcrel" = xyes; then
|
301
156
|
AC_DEFINE(HAVE_AS_X86_PCREL, 1,
|
302
157
|
[Define if your assembler supports PC relative relocs.])
|
303
158
|
fi
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
159
|
+
;;
|
160
|
+
|
161
|
+
S390)
|
162
|
+
AC_CACHE_CHECK([compiler uses zarch features],
|
163
|
+
libffi_cv_as_s390_zarch, [
|
164
|
+
libffi_cv_as_s390_zarch=no
|
165
|
+
echo 'void foo(void) { bar(); bar(); }' > conftest.c
|
166
|
+
if $CC $CFLAGS -S conftest.c > /dev/null 2>&1; then
|
167
|
+
if grep -q brasl conftest.s; then
|
168
|
+
libffi_cv_as_s390_zarch=yes
|
169
|
+
fi
|
170
|
+
fi
|
171
|
+
])
|
172
|
+
if test "x$libffi_cv_as_s390_zarch" = xyes; then
|
173
|
+
AC_DEFINE(HAVE_AS_S390_ZARCH, 1,
|
174
|
+
[Define if the compiler uses zarch features.])
|
316
175
|
fi
|
176
|
+
;;
|
177
|
+
esac
|
317
178
|
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
])
|
326
|
-
if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
|
327
|
-
AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1,
|
328
|
-
[Define if your assembler supports .string.])
|
329
|
-
fi
|
330
|
-
fi
|
179
|
+
# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC.
|
180
|
+
AC_ARG_ENABLE(pax_emutramp,
|
181
|
+
[ --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC],
|
182
|
+
if test "$enable_pax_emutramp" = "yes"; then
|
183
|
+
AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1,
|
184
|
+
[Define this if you want to enable pax emulated trampolines])
|
185
|
+
fi)
|
331
186
|
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
|
336
|
-
fi
|
187
|
+
LT_SYS_SYMBOL_USCORE
|
188
|
+
if test "x$sys_symbol_underscore" = xyes; then
|
189
|
+
AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
|
337
190
|
fi
|
338
191
|
|
339
|
-
|
340
192
|
FFI_EXEC_TRAMPOLINE_TABLE=0
|
341
193
|
case "$target" in
|
342
|
-
*arm*-apple-darwin*)
|
194
|
+
*arm*-apple-darwin* | aarch64-apple-darwin*)
|
343
195
|
FFI_EXEC_TRAMPOLINE_TABLE=1
|
344
196
|
AC_DEFINE(FFI_EXEC_TRAMPOLINE_TABLE, 1,
|
345
197
|
[Cannot use PROT_EXEC on this target, so, we revert to
|
346
198
|
alternative means])
|
347
199
|
;;
|
348
|
-
*-apple-
|
200
|
+
*-apple-darwin* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
|
349
201
|
AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
|
350
202
|
[Cannot use malloc on this target, so, we revert to
|
351
203
|
alternative means])
|
@@ -355,12 +207,28 @@ AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1)
|
|
355
207
|
AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE)
|
356
208
|
|
357
209
|
if test x$TARGET = xX86_64; then
|
358
|
-
AC_CACHE_CHECK([
|
210
|
+
AC_CACHE_CHECK([toolchain supports unwind section type],
|
359
211
|
libffi_cv_as_x86_64_unwind_section_type, [
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
212
|
+
cat > conftest1.s << EOF
|
213
|
+
.text
|
214
|
+
.globl foo
|
215
|
+
foo:
|
216
|
+
jmp bar
|
217
|
+
.section .eh_frame,"a",@unwind
|
218
|
+
bar:
|
219
|
+
EOF
|
220
|
+
|
221
|
+
cat > conftest2.c << EOF
|
222
|
+
extern void foo();
|
223
|
+
int main(){foo();}
|
224
|
+
EOF
|
225
|
+
|
226
|
+
libffi_cv_as_x86_64_unwind_section_type=no
|
227
|
+
# we ensure that we can compile _and_ link an assembly file containing an @unwind section
|
228
|
+
# since the compiler can support it and not the linker (ie old binutils)
|
229
|
+
if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \
|
230
|
+
$CC conftest2.c conftest1.o > /dev/null 2>&1 ; then
|
231
|
+
libffi_cv_as_x86_64_unwind_section_type=yes
|
364
232
|
fi
|
365
233
|
])
|
366
234
|
if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
|
@@ -374,13 +242,16 @@ if test "x$GCC" = "xyes"; then
|
|
374
242
|
libffi_cv_ro_eh_frame, [
|
375
243
|
libffi_cv_ro_eh_frame=no
|
376
244
|
echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
|
377
|
-
if $CC $CFLAGS -
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
245
|
+
if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then
|
246
|
+
objdump -h conftest.o > conftest.dump 2>&1
|
247
|
+
libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1`
|
248
|
+
if test "x$libffi_eh_frame_line" != "x"; then
|
249
|
+
libffi_test_line=`expr $libffi_eh_frame_line + 1`p
|
250
|
+
sed -n $libffi_test_line conftest.dump > conftest.line
|
251
|
+
if grep READONLY conftest.line > /dev/null; then
|
252
|
+
libffi_cv_ro_eh_frame=yes
|
253
|
+
fi
|
254
|
+
fi
|
384
255
|
fi
|
385
256
|
rm -f conftest.*
|
386
257
|
])
|
@@ -411,6 +282,13 @@ if test "x$GCC" = "xyes"; then
|
|
411
282
|
fi
|
412
283
|
fi
|
413
284
|
|
285
|
+
AC_ARG_ENABLE(docs,
|
286
|
+
AC_HELP_STRING([--disable-docs],
|
287
|
+
[Disable building of docs (default: no)]),
|
288
|
+
[enable_docs=no],
|
289
|
+
[enable_docs=yes])
|
290
|
+
AM_CONDITIONAL(BUILD_DOCS, [test x$enable_docs = xyes])
|
291
|
+
|
414
292
|
AH_BOTTOM([
|
415
293
|
#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
|
416
294
|
#ifdef LIBFFI_ASM
|
@@ -430,6 +308,14 @@ AH_BOTTOM([
|
|
430
308
|
AC_SUBST(TARGET)
|
431
309
|
AC_SUBST(TARGETDIR)
|
432
310
|
|
311
|
+
changequote(<,>)
|
312
|
+
TARGET_OBJ=
|
313
|
+
for i in $SOURCES; do
|
314
|
+
TARGET_OBJ="${TARGET_OBJ} src/${TARGETDIR}/"`echo $i | sed 's/[cS]$/lo/'`
|
315
|
+
done
|
316
|
+
changequote([,])
|
317
|
+
AC_SUBST(TARGET_OBJ)
|
318
|
+
|
433
319
|
AC_SUBST(SHELL)
|
434
320
|
|
435
321
|
AC_ARG_ENABLE(debug,
|
@@ -442,13 +328,14 @@ AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes")
|
|
442
328
|
AC_ARG_ENABLE(structs,
|
443
329
|
[ --disable-structs omit code for struct support],
|
444
330
|
if test "$enable_structs" = "no"; then
|
445
|
-
AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this
|
331
|
+
AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this if you do not want support for aggregate types.])
|
446
332
|
fi)
|
333
|
+
AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes")
|
447
334
|
|
448
335
|
AC_ARG_ENABLE(raw-api,
|
449
336
|
[ --disable-raw-api make the raw api unavailable],
|
450
337
|
if test "$enable_raw_api" = "no"; then
|
451
|
-
AC_DEFINE(FFI_NO_RAW_API, 1, [Define this
|
338
|
+
AC_DEFINE(FFI_NO_RAW_API, 1, [Define this if you do not want support for the raw API.])
|
452
339
|
fi)
|
453
340
|
|
454
341
|
AC_ARG_ENABLE(purify-safety,
|
@@ -457,31 +344,36 @@ AC_ARG_ENABLE(purify-safety,
|
|
457
344
|
AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.])
|
458
345
|
fi)
|
459
346
|
|
347
|
+
AC_ARG_ENABLE(multi-os-directory,
|
348
|
+
[ --disable-multi-os-directory
|
349
|
+
disable use of gcc --print-multi-os-directory to change the library installation directory])
|
350
|
+
|
460
351
|
# These variables are only ever used when we cross-build to X86_WIN32.
|
461
352
|
# And we only support this with GCC, so...
|
462
|
-
if test x
|
353
|
+
if test "x$GCC" = "xyes"; then
|
463
354
|
if test -n "$with_cross_host" &&
|
464
355
|
test x"$with_cross_host" != x"no"; then
|
465
|
-
toolexecdir='$(
|
466
|
-
toolexeclibdir=
|
356
|
+
toolexecdir="${exec_prefix}"/'$(target_alias)'
|
357
|
+
toolexeclibdir="${toolexecdir}"/lib
|
467
358
|
else
|
468
|
-
toolexecdir=
|
469
|
-
toolexeclibdir=
|
359
|
+
toolexecdir="${libdir}"/gcc-lib/'$(target_alias)'
|
360
|
+
toolexeclibdir="${libdir}"
|
361
|
+
fi
|
362
|
+
if test x"$enable_multi_os_directory" != x"no"; then
|
363
|
+
multi_os_directory=`$CC $CFLAGS -print-multi-os-directory`
|
364
|
+
case $multi_os_directory in
|
365
|
+
.) ;; # Avoid trailing /.
|
366
|
+
../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
|
367
|
+
esac
|
470
368
|
fi
|
471
|
-
multi_os_directory=`$CC -print-multi-os-directory`
|
472
|
-
case $multi_os_directory in
|
473
|
-
.) ;; # Avoid trailing /.
|
474
|
-
*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
|
475
|
-
esac
|
476
369
|
AC_SUBST(toolexecdir)
|
477
|
-
AC_SUBST(toolexeclibdir)
|
478
|
-
fi
|
479
|
-
|
480
|
-
if test "${multilib}" = "yes"; then
|
481
|
-
multilib_arg="--enable-multilib"
|
482
370
|
else
|
483
|
-
|
371
|
+
toolexeclibdir="${libdir}"
|
484
372
|
fi
|
373
|
+
AC_SUBST(toolexeclibdir)
|
374
|
+
|
375
|
+
# Check linker support.
|
376
|
+
LIBFFI_ENABLE_SYMVERS
|
485
377
|
|
486
378
|
AC_CONFIG_COMMANDS(include, [test -d include || mkdir include])
|
487
379
|
AC_CONFIG_COMMANDS(src, [
|
@@ -491,6 +383,6 @@ test -d src/$TARGETDIR || mkdir src/$TARGETDIR
|
|
491
383
|
|
492
384
|
AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h)
|
493
385
|
|
494
|
-
AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc)
|
386
|
+
AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile doc/Makefile libffi.pc)
|
495
387
|
|
496
388
|
AC_OUTPUT
|