diff -r b441942b2a3f -r 72ba5129e5fd mozilla-aarch64-bmo-810631.patch --- a/mozilla-aarch64-bmo-810631.patch Thu Jun 12 22:59:33 2014 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100372 +0,0 @@ - -# HG changeset patch -# User Ryan VanderMeulen -# Date 1395835684 14400 -# Node ID 1c6abf8c653a8788f5f2cb30779e46647ac8d504 -# Parent 9afe2a1145bd2962684186fe78d0fc4773630144 -Bug 810631 - Update libffi to version 3.1rc1. - -diff --git a/js/src/ctypes/libffi/ChangeLog b/js/src/ctypes/libffi/ChangeLog ---- a/js/src/ctypes/libffi/ChangeLog -+++ b/js/src/ctypes/libffi/ChangeLog -@@ -1,4259 +1,4883 @@ --2010-08-05 Dan Witte -- -- * Makefile.am: Pass FFI_DEBUG define to msvcc.sh for linking to the -- debug CRT when --enable-debug is given. -- * configure.ac: Define it. -- * msvcc.sh: Translate -g and -DFFI_DEBUG appropriately. -- --2010-08-04 Dan Witte -- -- * src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64 -- platforms. -- * src/x86/ffi.c: Remove redundant ifdef checks. -- * src/prep_cif.c: Push stack space computation into src/x86/ffi.c -- for X86_ANY so return value space doesn't get added twice. -- --2010-08-03 Neil Rashbrooke -- -- * msvcc.sh: Don't pass -safeseh to ml64 because behavior is buggy. -- --2010-07-22 Dan Witte -- -- * src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI. -- * src/prep_cif.c: Fix ABI assertion. -- * src/cris/ffi.c: Ditto. -- --2010-07-10 Evan Phoenix -- -- * src/closures.c (selinux_enabled_check): Fix strncmp usage bug. -- --2010-07-07 Dan Horák -- -- * include/ffi.h.in: Protect #define with #ifndef. -- * src/powerpc/ffitarget.h: Ditto. -- * src/s390/ffitarget.h: Ditto. -- * src/sparc/ffitarget.h: Ditto. -- --2010-05-11 Dan Witte -- -- * doc/libffi.tex: Document previous change. -- --2010-05-11 Makoto Kato -- -- * src/x86/ffi.c (ffi_call): Don't copy structs passed by value. -- --2010-05-05 Michael Kohler -- -- * src/dlmalloc.c (dlfree): Fix spelling. -- * src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto. -- * configure.ac: Ditto. -- * configure: Rebuilt. -- --2010-04-13 Dan Witte -- -- * msvcc.sh: Build with -W3 instead of -Wall. -- * src/powerpc/ffi_darwin.c: Remove build warnings. -- * src/x86/ffi.c: Ditto. -- * src/x86/ffitarget.h: Ditto. -- --2010-03-30 Dan Witte -- -- * msvcc.sh: Disable build warnings. -- * README (tested): Clarify windows build procedure. -- --2010-03-14 Matthias Klose -- -- * src/x86/ffi64.c: Fix typo in comment. -- * src/x86/ffi.c: Use /* ... */ comment style. -- --2010-07-07 Neil Roberts -- -- * src/x86/sysv.S (ffi_call_SYSV): Align the stack pointer to -- 16-bytes. -- --2010-07-02 Jakub Jelinek -- -- * Makefile.am (AM_MAKEFLAGS): Pass also mandir to submakes. -- * Makefile.in: Regenerated. -- --2010-05-19 Rainer Orth -- -- * configure.ac (libffi_cv_as_x86_pcrel): Check for illegal in as -- output, too. -- (libffi_cv_as_ascii_pseudo_op): Check for .ascii. -- (libffi_cv_as_string_pseudo_op): Check for .string. -- * configure: Regenerate. -- * fficonfig.h.in: Regenerate. -- * src/x86/sysv.S (.eh_frame): Use .ascii, .string or error. -- --2010-04-07 Jakub Jelinek -- -- * regex.c (byte_re_match_2_internal): Avoid set but not used -- warning. -- --2010-04-02 Ralf Wildenhues -- -- * Makefile.in: Regenerate. -- * aclocal.m4: Regenerate. -- * include/Makefile.in: Regenerate. -- * man/Makefile.in: Regenerate. -- * testsuite/Makefile.in: Regenerate. -- --2010-03-15 Rainer Orth -- -- * configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test. -- * configure: Regenerate. -- * fficonfig.h.in: Regenerate. -- * libffi/src/x86/unix64.S (.eh_frame) -- [HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type. -- --2010-02-24 Rainer Orth -- -- * doc/libffi.texi (The Closure API): Fix typo. -- * doc/libffi.info: Remove. -- --2010-02-15 Matthias Klose -- -- * src/arm/sysv.S (__ARM_ARCH__): Define for processor -- __ARM_ARCH_7EM__. -- --2010-01-07 Rainer Orth -- -- PR libffi/40701 -- * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRIdLL, -- PRIuLL, PRId64, PRIu64, PRIuPTR): Define. -- * testsuite/libffi.call/cls_align_sint64.c: Add -Wno-format on -- alpha*-dec-osf*. -- * testsuite/libffi.call/cls_align_uint64.c: Likewise. -- * testsuite/libffi.call/cls_ulonglong.c: Likewise. -- * testsuite/libffi.call/return_ll1.c: Likewise. -- * testsuite/libffi.call/stret_medium2.c: Likewise. -- * testsuite/libffi.special/ffitestcxx.h (allocate_mmap): Cast -- MAP_FAILED to char *. -- --2010-01-06 Rainer Orth -- -- * src/mips/n32.S: Use .abicalls and .eh_frame with __GNUC__. -- --2009-12-31 Anthony Green -- -- * README: Update for libffi 3.0.9. -- --2009-12-27 Matthias Klose -- -- * configure.ac (HAVE_LONG_DOUBLE): Define for mips when -- appropriate. -- * configure: Rebuilt. -- --2009-12-26 Anthony Green -- -- * testsuite/libffi.call/cls_longdouble_va.c: Mark as xfail for -- avr32*-*-*. -- * testsuite/libffi.call/cls_double_va.c: Ditto. -- --2009-12-26 Andreas Tobler -- -- * testsuite/libffi.call/ffitest.h: Conditionally include stdint.h -- and inttypes.h. -- * testsuite/libffi.special/unwindtest.cc: Ditto. -- --2009-12-26 Andreas Tobler -- -- * configure.ac: Add amd64-*-openbsd*. -- * configure: Rebuilt. -- * testsuite/lib/libffi-dg.exp (libffi_target_compile): Link -- openbsd programs with -lpthread. -- --2009-12-26 Anthony Green -- -- * testsuite/libffi.call/cls_double_va.c, -- testsuite/libffi.call/cls_longdouble.c, -- testsuite/libffi.call/cls_longdouble_va.c, -- testsuite/libffi.call/cls_pointer.c, -- testsuite/libffi.call/cls_pointer_stack.c: Remove xfail for -- mips*-*-* and arm*-*-*. -- * testsuite/libffi.call/cls_align_longdouble_split.c, -- testsuite/libffi.call/cls_align_longdouble_split2.c, -- testsuite/libffi.call/stret_medium2.c, -- testsuite/libffi.call/stret_medium.c, -- testsuite/libffi.call/stret_large.c, -- testsuite/libffi.call/stret_large2.c: Remove xfail for arm*-*-*. -- --2009-12-31 Kay Tietz -- -- * testsuite/libffi.call/ffitest.h, -- testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix -- definitions. -- --2009-12-31 Carlo Bramini -- -- * configure.ac (AM_LTLDFLAGS): Define for windows hosts. -- * Makefile.am (libffi_la_LDFLAGS): Add AM_LTLDFLAGS. -- * configure: Rebuilt. -- * Makefile.in: Rebuilt. -- --2009-12-31 Anthony Green -- Blake Chaffin. -- -- * testsuite/libffi.call/huge_struct.c: New test case from Blake -- Chaffin @ Apple. -- --2009-12-28 David Edelsohn -- -- * src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to -- local variables. -- (aix_adjust_aggregate_sizes): New function. -- (ffi_prep_cif_machdep): Call it. -- --2009-12-26 Andreas Tobler -- -- * configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets. -- * configure: Regenerate. -- * fficonfig.h.in: Likewise. -- * src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for -- Solaris/x86. -- --2009-12-26 Andreas Schwab -- -- * src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count -- when a float arguments is passed in memory. -- (ffi_closure_helper_SYSV): Mark general registers as used up when -- a 64bit or soft-float long double argument is passed in memory. -- --2009-12-25 Matthias Klose -- -- * man/ffi_call.3: Fix #include in examples. -- * doc/libffi.texi: Add dircategory. -- --2009-12-25 Frank Everdij -- -- * include/ffi.h.in: Placed '__GNUC__' ifdef around -- '__attribute__((aligned(8)))' in ffi_closure, fixes compile for -- IRIX MIPSPro c99. -- * include/ffi_common.h: Added '__sgi' define to non -- '__attribute__((__mode__()))' integer typedefs. -- * src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32, -- ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check. -- (ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added -- FFI_LONGDOUBLE support and alignment(N32 only). -- * src/mips/ffitarget.h: Corrected '#include ' for IRIX and -- fixed non '__attribute__((__mode__()))' integer typedefs. -- * src/mips/n32.S: Put '#ifdef linux' around '.abicalls' and '.eh_frame' -- since they are Linux/GNU Assembler specific. -- --2009-12-25 Bradley Smith -- -- * configure.ac, Makefile.am, src/avr32/ffi.c, -- src/avr32/ffitarget.h, -- src/avr32/sysv.S: Add AVR32 port. -- * configure, Makefile.in: Rebuilt. -- --2009-12-21 Andreas Tobler -- -- * configure.ac: Make i?86 build on FreeBSD and OpenBSD. -- * configure: Regenerate. -- --2009-12-15 John David Anglin -- -- * testsuite/libffi.call/ffitest.h: Define PRIuPTR on PA HP-UX. -- --2009-12-13 John David Anglin -- -- * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE -- type on HP-UX. -- --2009-12-11 Eric Botcazou -- -- * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long -- double' arguments. -- --2009-12-11 Eric Botcazou -- -- * testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10. -- --2009-12-10 Rainer Orth -- -- PR libffi/40700 -- * src/closures.c [X86_64 && __sun__ && __svr4__] -- (FFI_MMAP_EXEC_WRIT): Define. -- --2009-12-08 David Daney -- -- * testsuite/libffi.call/stret_medium.c: Remove xfail for mips*-*-* -- * testsuite/libffi.call/cls_align_longdouble_split2.c: Same. -- * testsuite/libffi.call/stret_large.c: Same. -- * testsuite/libffi.call/cls_align_longdouble_split.c: Same. -- * testsuite/libffi.call/stret_large2.c: Same. -- * testsuite/libffi.call/stret_medium2.c: Same. -- --2009-12-07 David Edelsohn -- -- * src/powerpc/aix_closure.S (libffi_closure_ASM): Fix tablejump -- typo. -- --2009-12-05 David Edelsohn -- -- * src/powerpc/aix.S: Update AIX32 code to be consistent with AIX64 -- code. -- * src/powerpc/aix_closure.S: Same. -- --2009-12-05 Ralf Wildenhues -- -- * Makefile.in: Regenerate. -- * configure: Regenerate. -- * include/Makefile.in: Regenerate. -- * man/Makefile.in: Regenerate. -- * testsuite/Makefile.in: Regenerate. -- --2009-12-04 David Edelsohn -- -- * src/powerpc/aix_closure.S: Reorganize 64-bit code to match -- linux64_closure.S. -- --2009-12-04 Uros Bizjak -- -- PR libffi/41908 -- * src/x86/ffi64.c (classify_argument): Update from -- gcc/config/i386/i386.c. -- (ffi_closure_unix64_inner): Do not use the address of two consecutive -- SSE registers directly. -- * testsuite/libffi.call/cls_dbls_struct.c (main): Remove xfail -- for x86_64 linux targets. -- --2009-12-04 David Edelsohn -- -- * src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment -- pfr for long double split between fpr13 and stack. -- --2009-12-03 David Edelsohn -- -- * src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and -- fparg_count twice for long double. -- --2009-12-03 David Edelsohn -- -- PR libffi/42243 -- * src/powerpc/ffi_darwin.c (ffi_prep_args): Remove extra parentheses. -- --2009-12-03 Uros Bizjak -- -- * testsuite/libffi.call/cls_longdouble_va.c (main): Fix format string. -- Remove xfails for x86 linux targets. -- --2009-12-02 David Edelsohn -- -- * src/powerpc/ffi_darwin.c (ffi_prep_args): Fix typo in INT64 -- case. -- --2009-12-01 David Edelsohn -- -- * src/powerpc/aix.S (ffi_call_AIX): Convert to more standard -- register usage. Call ffi_prep_args directly. Add long double -- return value support. -- * src/powerpc/ffi_darwin.c (ffi_prep_args): Double arg increment -- applies to FFI_TYPE_DOUBLE. Correct fpr_base increment typo. -- Separate FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases. -- (ffi_prep_cif_machdep): Only 16 byte stack alignment in 64 bit -- mode. -- (ffi_closure_helper_DARWIN): Remove nf and ng counters. Move temp -- into case. -- * src/powerpc/aix_closure.S: Maintain 16 byte stack alignment. -- Allocate result area between params and FPRs. -- --2009-11-30 David Edelsohn -- -- PR target/35484 -- * src/powerpc/ffitarget.h (POWERPC64): Define for PPC64 Linux and -- AIX64. -- * src/powerpc/aix.S: Implement AIX64 version. -- * src/powerpc/aix_closure.S: Implement AIX64 version. -- (ffi_closure_ASM): Use extsb, lha and displament addresses. -- * src/powerpc/ffi_darwin.c (ffi_prep_args): Implement AIX64 -- support. -- (ffi_prep_cif_machdep): Same. -- (ffi_call): Same. -- (ffi_closure_helper_DARWIN): Same. -- --2009-11-02 Andreas Tobler -- -- PR libffi/41908 -- * testsuite/libffi.call/testclosure.c: New test. -- --2009-09-28 Kai Tietz -- -- * src/x86/win64.S (_ffi_call_win64 stack): Remove for gnu -- assembly version use of ___chkstk. -- --2009-09-23 Matthias Klose -- -- PR libffi/40242, PR libffi/41443 -- * src/arm/sysv.S (__ARM_ARCH__): Define for processors -- __ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__, -- __ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__. -- Change the conditionals to __SOFTFP__ || __ARM_EABI__ -- for -mfloat-abi=softfp to work. -- --2009-09-17 Loren J. Rittle -- -- PR testsuite/32843 (strikes again) -- * src/x86/ffi.c (ffi_prep_cif_machdep): Add X86_FREEBSD to -- enable proper extension on char and short. -- --2009-09-15 David Daney -- -- * src/java_raw_api.c (ffi_java_raw_to_rvalue): Remove special -- handling for FFI_TYPE_POINTER. -- * src/mips/ffitarget.h (FFI_TYPE_STRUCT_D_SOFT, -- FFI_TYPE_STRUCT_F_SOFT, FFI_TYPE_STRUCT_DD_SOFT, -- FFI_TYPE_STRUCT_FF_SOFT, FFI_TYPE_STRUCT_FD_SOFT, -- FFI_TYPE_STRUCT_DF_SOFT, FFI_TYPE_STRUCT_SOFT): New defines. -- (FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT): New ffi_abi enumerations. -- (enum ffi_abi): Set FFI_DEFAULT_ABI for soft-float. -- * src/mips/n32.S (ffi_call_N32): Add handling for soft-float -- structure and pointer returns. -- (ffi_closure_N32): Add handling for pointer returns. -- * src/mips/ffi.c (ffi_prep_args, calc_n32_struct_flags, -- calc_n32_return_struct_flags): Handle soft-float. -- (ffi_prep_cif_machdep): Handle soft-float, fix pointer handling. -- (ffi_call_N32): Declare proper argument types. -- (ffi_call, copy_struct_N32, ffi_closure_mips_inner_N32): Handle -- soft-float. -- --2009-08-24 Ralf Wildenhues -- -- * configure.ac (AC_PREREQ): Bump to 2.64. -- --2009-08-22 Ralf Wildenhues -- -- * Makefile.am (install-html, install-pdf): Remove. -- * Makefile.in: Regenerate. -- -- * Makefile.in: Regenerate. -- * aclocal.m4: Regenerate. -- * configure: Regenerate. -- * fficonfig.h.in: Regenerate. -- * include/Makefile.in: Regenerate. -- * man/Makefile.in: Regenerate. -- * testsuite/Makefile.in: Regenerate. -- --2009-07-30 Ralf Wildenhues -- -- * configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force. -- --2009-07-24 Dave Korn -- -- PR libffi/40807 -- * src/x86/ffi.c (ffi_prep_cif_machdep): Also use sign/zero-extending -- return types for X86_WIN32. -- * src/x86/win32.S (_ffi_call_SYSV): Handle omitted return types. -- (_ffi_call_STDCALL, _ffi_closure_SYSV, _ffi_closure_raw_SYSV, -- _ffi_closure_STDCALL): Likewise. -- -- * src/closures.c (is_selinux_enabled): Define to const 0 for Cygwin. -- (dlmmap, dlmunmap): Also use these functions on Cygwin. -- --2009-07-11 Richard Sandiford -- -- PR testsuite/40699 -- PR testsuite/40707 -- PR testsuite/40709 -- * testsuite/lib/libffi-dg.exp: Revert 2009-07-02, 2009-07-01 and -- 2009-06-30 commits. -- --2009-07-01 Richard Sandiford -- -- * testsuite/lib/libffi-dg.exp (libffi-init): Set ld_library_path -- to "" before adding paths. (This reinstates an assignment that -- was removed by my 2009-06-30 commit, but changes the initial -- value from "." to "".) -- --2009-07-01 H.J. Lu -- -- PR testsuite/40601 -- * testsuite/lib/libffi-dg.exp (libffi-init): Properly set -- gccdir. Adjust ld_library_path for gcc only if gccdir isn't -- empty. -- --2009-06-30 Richard Sandiford -- -- * testsuite/lib/libffi-dg.exp (libffi-init): Don't add "." -- to ld_library_path. Use add_path. Add just find_libgcc_s -- to ld_library_path, not every libgcc multilib directory. -- --2009-06-16 Wim Lewis -- -- * src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are -- supposed to be callee-saved. -- * src/powerpc/sysv.S (small_struct_return_value): Fix overrun of -- return buffer for odd-size structs. -- --2009-06-16 Andreas Tobler -- -- PR libffi/40444 -- * testsuite/lib/libffi-dg.exp (libffi_target_compile): Add -- allow_stack_execute for Darwin. -- --2009-06-16 Andrew Haley -- -- * configure.ac (TARGETDIR): Add missing blank lines. -- * configure: Regenerate. -- --2009-06-16 Andrew Haley -- -- * testsuite/libffi.call/cls_align_sint64.c, -- testsuite/libffi.call/cls_align_uint64.c, -- testsuite/libffi.call/cls_longdouble_va.c, -- testsuite/libffi.call/cls_ulonglong.c, -- testsuite/libffi.call/return_ll1.c, -- testsuite/libffi.call/stret_medium2.c: Fix printf format -- specifiers. -- * testsuite/libffi.call/ffitest.h, -- testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define. -- --2009-06-15 Andrew Haley -- -- * testsuite/libffi.call/err_bad_typedef.c: xfail everywhere. -- * testsuite/libffi.call/err_bad_abi.c: Likewise. -- --2009-06-12 Andrew Haley -- -- * Makefile.am: Remove info_TEXINFOS. -- --2009-06-12 Andrew Haley -- -- * ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c, -- testsuite/libffi.call/cls_align_uint64.c, -- testsuite/libffi.call/cls_ulonglong.c, -- testsuite/libffi.call/return_ll1.c, -- testsuite/libffi.call/stret_medium2.c: Fix printf format -- specifiers. -- testsuite/libffi.special/unwindtest.cc: include stdint.h. -- --2009-06-11 Timothy Wall -- -- * Makefile.am, -- configure.ac, -- include/ffi.h.in, -- include/ffi_common.h, -- src/closures.c, -- src/dlmalloc.c, -- src/x86/ffi.c, -- src/x86/ffitarget.h, -- src/x86/win64.S (new), -- README: Added win64 support (mingw or MSVC) -- * Makefile.in, -- include/Makefile.in, -- man/Makefile.in, -- testsuite/Makefile.in, -- configure, -- aclocal.m4: Regenerated -- * ltcf-c.sh: properly escape cygwin/w32 path -- * man/ffi_call.3: Clarify size requirements for return value. -- * src/x86/ffi64.c: Fix filename in comment. -- * src/x86/win32.S: Remove unused extern. -- -- * testsuite/libffi.call/closure_fn0.c, -- testsuite/libffi.call/closure_fn1.c, -- testsuite/libffi.call/closure_fn2.c, -- testsuite/libffi.call/closure_fn3.c, -- testsuite/libffi.call/closure_fn4.c, -- testsuite/libffi.call/closure_fn5.c, -- testsuite/libffi.call/closure_fn6.c, -- testsuite/libffi.call/closure_stdcall.c, -- testsuite/libffi.call/cls_12byte.c, -- testsuite/libffi.call/cls_16byte.c, -- testsuite/libffi.call/cls_18byte.c, -- testsuite/libffi.call/cls_19byte.c, -- testsuite/libffi.call/cls_1_1byte.c, -- testsuite/libffi.call/cls_20byte.c, -- testsuite/libffi.call/cls_20byte1.c, -- testsuite/libffi.call/cls_24byte.c, -- testsuite/libffi.call/cls_2byte.c, -- testsuite/libffi.call/cls_3_1byte.c, -- testsuite/libffi.call/cls_3byte1.c, -- testsuite/libffi.call/cls_3byte2.c, -- testsuite/libffi.call/cls_4_1byte.c, -- testsuite/libffi.call/cls_4byte.c, -- testsuite/libffi.call/cls_5_1_byte.c, -- testsuite/libffi.call/cls_5byte.c, -- testsuite/libffi.call/cls_64byte.c, -- testsuite/libffi.call/cls_6_1_byte.c, -- testsuite/libffi.call/cls_6byte.c, -- testsuite/libffi.call/cls_7_1_byte.c, -- testsuite/libffi.call/cls_7byte.c, -- testsuite/libffi.call/cls_8byte.c, -- testsuite/libffi.call/cls_9byte1.c, -- testsuite/libffi.call/cls_9byte2.c, -- testsuite/libffi.call/cls_align_double.c, -- testsuite/libffi.call/cls_align_float.c, -- testsuite/libffi.call/cls_align_longdouble.c, -- testsuite/libffi.call/cls_align_longdouble_split.c, -- testsuite/libffi.call/cls_align_longdouble_split2.c, -- testsuite/libffi.call/cls_align_pointer.c, -- testsuite/libffi.call/cls_align_sint16.c, -- testsuite/libffi.call/cls_align_sint32.c, -- testsuite/libffi.call/cls_align_sint64.c, -- testsuite/libffi.call/cls_align_uint16.c, -- testsuite/libffi.call/cls_align_uint32.c, -- testsuite/libffi.call/cls_align_uint64.c, -- testsuite/libffi.call/cls_dbls_struct.c, -- testsuite/libffi.call/cls_double.c, -- testsuite/libffi.call/cls_double_va.c, -- testsuite/libffi.call/cls_float.c, -- testsuite/libffi.call/cls_longdouble.c, -- testsuite/libffi.call/cls_longdouble_va.c, -- testsuite/libffi.call/cls_multi_schar.c, -- testsuite/libffi.call/cls_multi_sshort.c, -- testsuite/libffi.call/cls_multi_sshortchar.c, -- testsuite/libffi.call/cls_multi_uchar.c, -- testsuite/libffi.call/cls_multi_ushort.c, -- testsuite/libffi.call/cls_multi_ushortchar.c, -- testsuite/libffi.call/cls_pointer.c, -- testsuite/libffi.call/cls_pointer_stack.c, -- testsuite/libffi.call/cls_schar.c, -- testsuite/libffi.call/cls_sint.c, -- testsuite/libffi.call/cls_sshort.c, -- testsuite/libffi.call/cls_uchar.c, -- testsuite/libffi.call/cls_uint.c, -- testsuite/libffi.call/cls_ulonglong.c, -- testsuite/libffi.call/cls_ushort.c, -- testsuite/libffi.call/err_bad_abi.c, -- testsuite/libffi.call/err_bad_typedef.c, -- testsuite/libffi.call/float2.c, -- testsuite/libffi.call/huge_struct.c, -- testsuite/libffi.call/nested_struct.c, -- testsuite/libffi.call/nested_struct1.c, -- testsuite/libffi.call/nested_struct10.c, -- testsuite/libffi.call/nested_struct2.c, -- testsuite/libffi.call/nested_struct3.c, -- testsuite/libffi.call/nested_struct4.c, -- testsuite/libffi.call/nested_struct5.c, -- testsuite/libffi.call/nested_struct6.c, -- testsuite/libffi.call/nested_struct7.c, -- testsuite/libffi.call/nested_struct8.c, -- testsuite/libffi.call/nested_struct9.c, -- testsuite/libffi.call/problem1.c, -- testsuite/libffi.call/return_ldl.c, -- testsuite/libffi.call/return_ll1.c, -- testsuite/libffi.call/stret_large.c, -- testsuite/libffi.call/stret_large2.c, -- testsuite/libffi.call/stret_medium.c, -- testsuite/libffi.call/stret_medium2.c, -- testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead -- of checking for MMAP. Use intptr_t instead of long casts. -- --2009-06-11 Kaz Kojima -- -- * testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*. -- * testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*. -- * testsuite/libffi.call/err_bad_typedef.c: Likewise. -- --2009-06-09 Andrew Haley -- -- * src/x86/freebsd.S: Add missing file. -- --2009-06-08 Andrew Haley -- -- Import from libffi 3.0.8: -- -- * doc/libffi.texi: New file. -- * doc/libffi.info: Likewise. -- * doc/stamp-vti: Likewise. -- * man/Makefile.am: New file. -- * man/ffi_call.3: New file. -- -- * Makefile.am (EXTRA_DIST): Add src/x86/darwin64.S, -- src/dlmalloc.c. -- (nodist_libffi_la_SOURCES): Add X86_FREEBSD. -- -- * configure.ac: Bump version to 3.0.8. -- parisc*-*-linux*: Add. -- i386-*-freebsd* | i386-*-openbsd*: Add. -- powerpc-*-beos*: Add. -- AM_CONDITIONAL X86_FREEBSD: Add. -- AC_CONFIG_FILES: Add man/Makefile. -- -- * include/ffi.h.in (FFI_FN): Change void (*)() to void (*)(void). -- --2009-06-08 Andrew Haley -- -- * README: Import from libffi 3.0.8. -- --2009-06-08 Andrew Haley -- -- * testsuite/libffi.call/err_bad_abi.c: Add xfails. -- * testsuite/libffi.call/cls_longdouble_va.c: Add xfails. -- * testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*. -- * testsuite/libffi.call/err_bad_typedef.c: Add xfails. -- -- * testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args. -- * testsuite/libffi.call/stret_medium.c: Likewise. -- * testsuite/libffi.call/stret_large2.c: Likewise. -- * testsuite/libffi.call/stret_large.c: Likewise. -- --2008-12-26 Timothy Wall -- -- * testsuite/libffi.call/cls_longdouble.c, -- testsuite/libffi.call/cls_longdouble_va.c, -- testsuite/libffi.call/cls_align_longdouble.c, -- testsuite/libffi.call/cls_align_longdouble_split.c, -- testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected -- failures on x86_64 cygwin/mingw. -- --2008-12-22 Timothy Wall -- -- * testsuite/libffi.call/closure_fn0.c, -- testsuite/libffi.call/closure_fn1.c, -- testsuite/libffi.call/closure_fn2.c, -- testsuite/libffi.call/closure_fn3.c, -- testsuite/libffi.call/closure_fn4.c, -- testsuite/libffi.call/closure_fn5.c, -- testsuite/libffi.call/closure_fn6.c, -- testsuite/libffi.call/closure_loc_fn0.c, -- testsuite/libffi.call/closure_stdcall.c, -- testsuite/libffi.call/cls_align_pointer.c, -- testsuite/libffi.call/cls_pointer.c, -- testsuite/libffi.call/cls_pointer_stack.c: use portable cast from -- pointer to integer (intptr_t). -- * testsuite/libffi.call/cls_longdouble.c: disable for win64. -- --2008-07-24 Anthony Green -- -- * testsuite/libffi.call/cls_dbls_struct.c, -- testsuite/libffi.call/cls_double_va.c, -- testsuite/libffi.call/cls_longdouble.c, -- testsuite/libffi.call/cls_longdouble_va.c, -- testsuite/libffi.call/cls_pointer.c, -- testsuite/libffi.call/cls_pointer_stack.c, -- testsuite/libffi.call/err_bad_abi.c: Clean up failures from -- compiler warnings. -- --2008-03-04 Anthony Green -- Blake Chaffin -- hos@tamanegi.org -- -- * testsuite/libffi.call/cls_align_longdouble_split2.c -- testsuite/libffi.call/cls_align_longdouble_split.c -- testsuite/libffi.call/cls_dbls_struct.c -- testsuite/libffi.call/cls_double_va.c -- testsuite/libffi.call/cls_longdouble.c -- testsuite/libffi.call/cls_longdouble_va.c -- testsuite/libffi.call/cls_pointer.c -- testsuite/libffi.call/cls_pointer_stack.c -- testsuite/libffi.call/err_bad_abi.c -- testsuite/libffi.call/err_bad_typedef.c -- testsuite/libffi.call/stret_large2.c -- testsuite/libffi.call/stret_large.c -- testsuite/libffi.call/stret_medium2.c -- testsuite/libffi.call/stret_medium.c: New tests from Apple. -- --2009-06-05 Andrew Haley -- -- * src/x86/ffitarget.h, src/x86/ffi.c: Merge stdcall changes from -- libffi. -- --2009-06-04 Andrew Haley -- -- * src/x86/ffitarget.h, src/x86/win32.S, src/x86/ffi.c: Back out -- stdcall changes. -- --2008-02-26 Anthony Green -- Thomas Heller -- -- * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C -- comment. -- --2008-02-03 Timothy Wall -- -- * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return -- offset based on code pointer, not data pointer. -- --2008-01-31 Timothy Wall -- -- * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall -- closures. -- * src/x86/ffitarget.h: Increase size of trampoline for stdcall -- closures. -- * src/x86/win32.S: Add assembly for stdcall closure. -- * src/x86/ffi.c: Initialize stdcall closure trampoline. -- --2009-06-04 Andrew Haley -- -- * include/ffi.h.in: Change void (*)() to void (*)(void). -- * src/x86/ffi.c: Likewise. -- --2009-06-04 Andrew Haley -- -- * src/powerpc/ppc_closure.S: Insert licence header. -- * src/powerpc/linux64_closure.S: Likewise. -- * src/m68k/sysv.S: Likewise. -- -- * src/sh64/ffi.c: Change void (*)() to void (*)(void). -- * src/powerpc/ffi.c: Likewise. -- * src/powerpc/ffi_darwin.c: Likewise. -- * src/m32r/ffi.c: Likewise. -- * src/sh64/ffi.c: Likewise. -- * src/x86/ffi64.c: Likewise. -- * src/alpha/ffi.c: Likewise. -- * src/alpha/osf.S: Likewise. -- * src/frv/ffi.c: Likewise. -- * src/s390/ffi.c: Likewise. -- * src/pa/ffi.c: Likewise. -- * src/pa/hpux32.S: Likewise. -- * src/ia64/unix.S: Likewise. -- * src/ia64/ffi.c: Likewise. -- * src/sparc/ffi.c: Likewise. -- * src/mips/ffi.c: Likewise. -- * src/sh/ffi.c: Likewise. -- --2008-02-15 David Daney -- -- * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE): -- Define (conditionally), and use it to include cachectl.h. -- (ffi_prep_closure_loc): Fix cache flushing. -- * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define. -- --2009-06-04 Andrew Haley -- -- include/ffi.h.in, -- src/arm/ffitarget.h, -- src/arm/ffi.c, -- src/arm/sysv.S, -- src/powerpc/ffitarget.h, -- src/closures.c, -- src/sh64/ffitarget.h, -- src/sh64/ffi.c, -- src/sh64/sysv.S, -- src/types.c, -- src/x86/ffi64.c, -- src/x86/ffitarget.h, -- src/x86/win32.S, -- src/x86/darwin.S, -- src/x86/ffi.c, -- src/x86/sysv.S, -- src/x86/unix64.S, -- src/alpha/ffitarget.h, -- src/alpha/ffi.c, -- src/alpha/osf.S, -- src/m68k/ffitarget.h, -- src/frv/ffitarget.h, -- src/frv/ffi.c, -- src/s390/ffitarget.h, -- src/s390/sysv.S, -- src/cris/ffitarget.h, -- src/pa/linux.S, -- src/pa/ffitarget.h, -- src/pa/ffi.c, -- src/raw_api.c, -- src/ia64/ffitarget.h, -- src/ia64/unix.S, -- src/ia64/ffi.c, -- src/ia64/ia64_flags.h, -- src/java_raw_api.c, -- src/debug.c, -- src/sparc/v9.S, -- src/sparc/ffitarget.h, -- src/sparc/ffi.c, -- src/sparc/v8.S, -- src/mips/ffitarget.h, -- src/mips/n32.S, -- src/mips/o32.S, -- src/mips/ffi.c, -- src/prep_cif.c, -- src/sh/ffitarget.h, -- src/sh/ffi.c, -- src/sh/sysv.S: Update license text. -- --2009-05-22 Dave Korn -- -- * src/x86/win32.S (_ffi_closure_STDCALL): New function. -- (.eh_frame): Add FDE for it. -- --2009-05-22 Dave Korn -- -- * configure.ac: Also check if assembler supports pc-relative -- relocs on X86_WIN32 targets. -- * configure: Regenerate. -- * src/x86/win32.S (ffi_prep_args): Declare extern, not global. -- (_ffi_call_SYSV): Add missing function type symbol .def and -- add EH markup labels. -- (_ffi_call_STDCALL): Likewise. -- (_ffi_closure_SYSV): Likewise. -- (_ffi_closure_raw_SYSV): Likewise. -- (.eh_frame): Add hand-crafted EH data. -- --2009-04-09 Jakub Jelinek -- -- * testsuite/lib/libffi-dg.exp: Change copyright header to refer to -- version 3 of the GNU General Public License and to point readers -- at the COPYING3 file and the FSF's license web page. -- * testsuite/libffi.call/call.exp: Likewise. -- * testsuite/libffi.special/special.exp: Likewise. -- --2009-03-01 Ralf Wildenhues -- -- * configure: Regenerate. -- --2008-12-18 Rainer Orth -- -- PR libffi/26048 -- * configure.ac (HAVE_AS_X86_PCREL): New test. -- * configure: Regenerate. -- * fficonfig.h.in: Regenerate. -- * src/x86/sysv.S [!FFI_NO_RAW_API]: Precalculate -- RAW_CLOSURE_CIF_OFFSET, RAW_CLOSURE_FUN_OFFSET, -- RAW_CLOSURE_USER_DATA_OFFSET for the Solaris 10/x86 assembler. -- (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL. -- * src/x86/unix64.S (.Lstore_table): Move to .text section. -- (.Lload_table): Likewise. -- (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL. -- --2008-12-18 Ralf Wildenhues -- -- * configure: Regenerate. -- --2008-11-21 Eric Botcazou -- -- * src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for -- signed/unsigned int8/16 return values. -- * src/sparc/v8.S (ffi_call_v8): Likewise. -- (ffi_closure_v8): Likewise. -- --2008-09-26 Peter O'Gorman -- Steve Ellcey -- -- * configure: Regenerate for new libtool. -- * Makefile.in: Ditto. -- * include/Makefile.in: Ditto. -- * aclocal.m4: Ditto. -- --2008-08-25 Andreas Tobler -- -- * src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and -- FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum. -- Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT. -- Adjust copyright notice. -- * src/powerpc/ffi.c: Add two new flags to indicate if we have one -- register or two register to use for FFI_SYSV structs. -- (ffi_prep_cif_machdep): Pass the right register flag introduced above. -- (ffi_closure_helper_SYSV): Fix the return type for -- FFI_SYSV_TYPE_SMALL_STRUCT. Comment. -- Adjust copyright notice. -- --2008-07-16 Kaz Kojima -- -- * src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned -- int. -- --2008-06-17 Ralf Wildenhues -- -- * configure: Regenerate. -- * include/Makefile.in: Regenerate. -- * testsuite/Makefile.in: Regenerate. -- --2008-06-07 Joseph Myers -- -- * configure.ac (parisc*-*-linux*, powerpc-*-sysv*, -- powerpc-*-beos*): Remove. -- * configure: Regenerate. -- --2008-05-09 Julian Brown -- -- * Makefile.am (LTLDFLAGS): New. -- (libffi_la_LDFLAGS): Use above. -- * Makefile.in: Regenerate. -- --2008-04-18 Paolo Bonzini -- -- PR bootstrap/35457 -- * aclocal.m4: Regenerate. -- * configure: Regenerate. -- --2008-03-26 Kaz Kojima -- -- * src/sh/sysv.S: Add .note.GNU-stack on Linux. -- * src/sh64/sysv.S: Likewise. -- --2008-03-26 Daniel Jacobowitz -- -- * src/arm/sysv.S: Fix ARM comment marker. -- --2008-03-26 Jakub Jelinek -- -- * src/alpha/osf.S: Add .note.GNU-stack on Linux. -- * src/s390/sysv.S: Likewise. -- * src/powerpc/ppc_closure.S: Likewise. -- * src/powerpc/sysv.S: Likewise. -- * src/x86/unix64.S: Likewise. -- * src/x86/sysv.S: Likewise. -- * src/sparc/v8.S: Likewise. -- * src/sparc/v9.S: Likewise. -- * src/m68k/sysv.S: Likewise. -- * src/arm/sysv.S: Likewise. -- --2008-03-16 Ralf Wildenhues -- -- * aclocal.m4: Regenerate. -- * configure: Likewise. -- * Makefile.in: Likewise. -- * include/Makefile.in: Likewise. -- * testsuite/Makefile.in: Likewise. -- --2008-02-12 Bjoern Koenig -- Andreas Tobler -- -- * configure.ac: Add amd64-*-freebsd* target. -- * configure: Regenerate. -- --2008-01-30 H.J. Lu -- -- PR libffi/34612 -- * src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when -- returning struct. -- -- * testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer" -- tests. -- --2008-01-24 David Edelsohn -- -- * configure: Regenerate. -- --2008-01-06 Andreas Tobler -- -- * src/x86/ffi.c (ffi_prep_cif_machdep): Fix thinko. -- --2008-01-05 Andreas Tobler -- -- PR testsuite/32843 -- * src/x86/ffi.c (ffi_prep_cif_machdep): Add code for -- signed/unsigned int8/16 for X86_DARWIN. -- Updated copyright info. -- Handle one and two byte structs with special cif->flags. -- * src/x86/ffitarget.h: Add special types for one and two byte structs. -- Updated copyright info. -- * src/x86/darwin.S (ffi_call_SYSV): Rewrite to use a jump table like -- sysv.S -- Remove code to pop args from the stack after call. -- Special-case signed/unsigned for int8/16, one and two byte structs. -- (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8, -- FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, -- FFI_TYPE_SINT32. -- Updated copyright info. -- --2007-12-08 David Daney -- -- * src/mips/n32.S (ffi_call_N32): Replace dadd with ADDU, dsub with -- SUBU, add with ADDU and use smaller code sequences. -- --2007-12-07 David Daney -- -- * src/mips/ffi.c (ffi_prep_cif_machdep): Handle long double return -- type. -- --2007-12-06 David Daney -- -- * include/ffi.h.in (FFI_SIZEOF_JAVA_RAW): Define if not already -- defined. -- (ffi_java_raw): New typedef. -- (ffi_java_raw_call, ffi_java_ptrarray_to_raw, -- ffi_java_raw_to_ptrarray): Change parameter types from ffi_raw to -- ffi_java_raw. -- (ffi_java_raw_closure) : Same. -- (ffi_prep_java_raw_closure, ffi_prep_java_raw_closure_loc): Change -- parameter types. -- * src/java_raw_api.c (ffi_java_raw_size): Replace FFI_SIZEOF_ARG with -- FFI_SIZEOF_JAVA_RAW. -- (ffi_java_raw_to_ptrarray): Change type of raw to ffi_java_raw. -- Replace FFI_SIZEOF_ARG with FFI_SIZEOF_JAVA_RAW. Use -- sizeof(ffi_java_raw) for alignment calculations. -- (ffi_java_ptrarray_to_raw): Same. -- (ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER -- if FFI_SIZEOF_JAVA_RAW == 4. -- (ffi_java_raw_to_rvalue): Same. -- (ffi_java_raw_call): Change type of raw to ffi_java_raw. -- (ffi_java_translate_args): Same. -- (ffi_prep_java_raw_closure_loc, ffi_prep_java_raw_closure): Change -- parameter types. -- * src/mips/ffitarget.h (FFI_SIZEOF_JAVA_RAW): Define for N32 ABI. -- --2007-12-06 David Daney -- -- * src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on -- pointer values. -- --2007-12-01 Andreas Tobler -- -- PR libffi/31937 -- * src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT. -- Add local FFI_TYPE_UINT128 to handle soft-float long-double-128. -- * src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and -- set the NUM_FPR_ARG_REGISTERS according to. -- Add support for potential soft-float support under hard-float -- architecture. -- (ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of -- FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according -- to the FFI_LINUX_SOFT_FLOAT ABI. -- (ffi_prep_cif_machdep): Likewise. -- (ffi_closure_helper_SYSV): Likewise. -- * src/powerpc/ppc_closure.S: Make sure not to store float/double -- on archs where __NO_FPRS__ is true. -- Add FFI_TYPE_UINT128 support. -- * src/powerpc/sysv.S: Add support for soft-float long-double-128. -- Adjust copyright notice. -- --2007-11-25 Andreas Tobler -- -- * src/closures.c: Move defintion of MAYBE_UNUSED from here to ... -- * include/ffi_common.h: ... here. -- Update copyright. -- --2007-11-17 Andreas Tobler -- -- * src/powerpc/sysv.S: Load correct cr to compare if we have long double. -- * src/powerpc/linux64.S: Likewise. -- * src/powerpc/ffi.c: Add a comment to show which part goes into cr6. -- * testsuite/libffi.call/return_ldl.c: New test. -- --2007-09-04 -- -- * src/arm/sysv.S (UNWIND): New. -- (Whole file): Conditionally compile unwinder directives. -- * src/arm/sysv.S: Add unwinder directives. -- -- * src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes. -- Only treat r0 as a struct address if we're actually returning a -- struct by address. -- Only copy the bytes that are actually within a struct. -- (ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes -- is returned in r0, not passed by address. -- (ffi_call): Allocate a word-sized temporary for the case where -- a composite is returned in r0. -- (ffi_prep_incoming_args_SYSV): Align as necessary. -- --2007-08-05 Steven Newbury -- -- * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of -- directly using the sys_cacheflush syscall. -- --2007-07-27 Andrew Haley -- -- * src/arm/sysv.S (ffi_closure_SYSV): Add soft-float. -- --2007-09-03 Maciej W. Rozycki -- -- * Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS. -- * configure.ac: Likewise. -- * Makefile.in: Regenerate. -- * include/Makefile.in: Likewise. -- * testsuite/Makefile.in: Likewise. -- * configure: Likewise. -- --2007-08-24 David Daney -- -- * testsuite/libffi.call/return_sl.c: New test. -- --2007-08-10 David Daney -- -- * testsuite/libffi.call/cls_multi_ushort.c, -- testsuite/libffi.call/cls_align_uint16.c, -- testsuite/libffi.call/nested_struct1.c, -- testsuite/libffi.call/nested_struct3.c, -- testsuite/libffi.call/cls_7_1_byte.c, -- testsuite/libffi.call/nested_struct5.c, -- testsuite/libffi.call/cls_double.c, -- testsuite/libffi.call/nested_struct7.c, -- testsuite/libffi.call/cls_sint.c, -- testsuite/libffi.call/nested_struct9.c, -- testsuite/libffi.call/cls_20byte1.c, -- testsuite/libffi.call/cls_multi_sshortchar.c, -- testsuite/libffi.call/cls_align_sint64.c, -- testsuite/libffi.call/cls_3byte2.c, -- testsuite/libffi.call/cls_multi_schar.c, -- testsuite/libffi.call/cls_multi_uchar.c, -- testsuite/libffi.call/cls_19byte.c, -- testsuite/libffi.call/cls_9byte1.c, -- testsuite/libffi.call/cls_align_float.c, -- testsuite/libffi.call/closure_fn1.c, -- testsuite/libffi.call/problem1.c, -- testsuite/libffi.call/closure_fn3.c, -- testsuite/libffi.call/cls_sshort.c, -- testsuite/libffi.call/closure_fn5.c, -- testsuite/libffi.call/cls_align_double.c, -- testsuite/libffi.call/nested_struct.c, -- testsuite/libffi.call/cls_2byte.c, -- testsuite/libffi.call/nested_struct10.c, -- testsuite/libffi.call/cls_4byte.c, -- testsuite/libffi.call/cls_6byte.c, -- testsuite/libffi.call/cls_8byte.c, -- testsuite/libffi.call/cls_multi_sshort.c, -- testsuite/libffi.call/cls_align_sint16.c, -- testsuite/libffi.call/cls_align_uint32.c, -- testsuite/libffi.call/cls_20byte.c, -- testsuite/libffi.call/cls_float.c, -- testsuite/libffi.call/nested_struct2.c, -- testsuite/libffi.call/cls_5_1_byte.c, -- testsuite/libffi.call/nested_struct4.c, -- testsuite/libffi.call/cls_24byte.c, -- testsuite/libffi.call/nested_struct6.c, -- testsuite/libffi.call/cls_64byte.c, -- testsuite/libffi.call/nested_struct8.c, -- testsuite/libffi.call/cls_uint.c, -- testsuite/libffi.call/cls_multi_ushortchar.c, -- testsuite/libffi.call/cls_schar.c, -- testsuite/libffi.call/cls_uchar.c, -- testsuite/libffi.call/cls_align_uint64.c, -- testsuite/libffi.call/cls_ulonglong.c, -- testsuite/libffi.call/cls_align_longdouble.c, -- testsuite/libffi.call/cls_1_1byte.c, -- testsuite/libffi.call/cls_12byte.c, -- testsuite/libffi.call/cls_3_1byte.c, -- testsuite/libffi.call/cls_3byte1.c, -- testsuite/libffi.call/cls_4_1byte.c, -- testsuite/libffi.call/cls_6_1_byte.c, -- testsuite/libffi.call/cls_16byte.c, -- testsuite/libffi.call/cls_18byte.c, -- testsuite/libffi.call/closure_fn0.c, -- testsuite/libffi.call/cls_9byte2.c, -- testsuite/libffi.call/closure_fn2.c, -- testsuite/libffi.call/closure_fn4.c, -- testsuite/libffi.call/cls_ushort.c, -- testsuite/libffi.call/closure_fn6.c, -- testsuite/libffi.call/cls_5byte.c, -- testsuite/libffi.call/cls_align_pointer.c, -- testsuite/libffi.call/cls_7byte.c, -- testsuite/libffi.call/cls_align_sint32.c, -- testsuite/libffi.special/unwindtest_ffi_call.cc, -- testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*. -- --2007-08-10 David Daney -- -- PR libffi/28313 -- * configure.ac: Don't treat mips64 as a special case. -- * Makefile.am (nodist_libffi_la_SOURCES): Add n32.S. -- * configure: Regenerate -- * Makefile.in: Ditto. -- * fficonfig.h.in: Ditto. -- * src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent. -- (LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros. -- (FFI_DEFAULT_ABI): Set for n64 case. -- (FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases. -- * src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE. -- (ffi_closure_N32): New function. -- (.eh_frame): New section -- * src/mips/o32.S: Clean up comments. -- (ffi_closure_O32): Pass ffi_closure parameter in $12. -- * src/mips/ffi.c: Use FFI_MIPS_N32 instead of -- _MIPS_SIM == _ABIN32 throughout. -- (FFI_MIPS_STOP_HERE): New, use in place of -- ffi_stop_here. -- (ffi_prep_args): Use unsigned long to hold pointer values. Rewrite -- to support n32/n64 ABIs. -- (calc_n32_struct_flags): Rewrite. -- (calc_n32_return_struct_flags): Remove unused variable. Reverse -- position of flag bits. -- (ffi_prep_cif_machdep): Rewrite n32 portion. -- (ffi_call): Enable for n64. Add special handling for small structure -- return values. -- (ffi_prep_closure_loc): Add n32 and n64 support. -- (ffi_closure_mips_inner_O32): Add cast to silence warning. -- (copy_struct_N32, ffi_closure_mips_inner_N32): New functions. -- --2007-08-08 David Daney -- -- * testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition. -- * testsuite/libffi.call/cls_align_uint16.c (main): Use correct type -- specifiers. -- * testsuite/libffi.call/nested_struct1.c (main): Ditto. -- * testsuite/libffi.call/cls_sint.c (main): Ditto. -- * testsuite/libffi.call/nested_struct9.c (main): Ditto. -- * testsuite/libffi.call/cls_20byte1.c (main): Ditto. -- * testsuite/libffi.call/cls_9byte1.c (main): Ditto. -- * testsuite/libffi.call/closure_fn1.c (main): Ditto. -- * testsuite/libffi.call/closure_fn3.c (main): Ditto. -- * testsuite/libffi.call/return_dbl2.c (main): Ditto. -- * testsuite/libffi.call/cls_sshort.c (main): Ditto. -- * testsuite/libffi.call/return_fl3.c (main): Ditto. -- * testsuite/libffi.call/closure_fn5.c (main): Ditto. -- * testsuite/libffi.call/nested_struct.c (main): Ditto. -- * testsuite/libffi.call/nested_struct10.c (main): Ditto. -- * testsuite/libffi.call/return_ll1.c (main): Ditto. -- * testsuite/libffi.call/cls_8byte.c (main): Ditto. -- * testsuite/libffi.call/cls_align_uint32.c (main): Ditto. -- * testsuite/libffi.call/cls_align_sint16.c (main): Ditto. -- * testsuite/libffi.call/cls_20byte.c (main): Ditto. -- * testsuite/libffi.call/nested_struct2.c (main): Ditto. -- * testsuite/libffi.call/cls_24byte.c (main): Ditto. -- * testsuite/libffi.call/nested_struct6.c (main): Ditto. -- * testsuite/libffi.call/cls_uint.c (main): Ditto. -- * testsuite/libffi.call/cls_12byte.c (main): Ditto. -- * testsuite/libffi.call/cls_16byte.c (main): Ditto. -- * testsuite/libffi.call/closure_fn0.c (main): Ditto. -- * testsuite/libffi.call/cls_9byte2.c (main): Ditto. -- * testsuite/libffi.call/closure_fn2.c (main): Ditto. -- * testsuite/libffi.call/return_dbl1.c (main): Ditto. -- * testsuite/libffi.call/closure_fn4.c (main): Ditto. -- * testsuite/libffi.call/closure_fn6.c (main): Ditto. -- * testsuite/libffi.call/cls_align_sint32.c (main): Ditto. -- --2007-08-07 Andrew Haley -- -- * src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous -- checkin. -- --2007-08-06 Andrew Haley -- -- PR testsuite/32843 -- * src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8, -- FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, -- FFI_TYPE_SINT32. -- --2007-08-02 David Daney -- -- * testsuite/libffi.call/return_ul.c (main): Define return type as -- ffi_arg. Use proper printf conversion specifier. -- --2007-07-30 Andrew Haley -- -- PR testsuite/32843 -- * src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for -- signed/unsigned int8/16. -- * src/x86/sysv.S (ffi_call_SYSV): Rewrite to: -- Use a jump table. -- Remove code to pop args from the stack after call. -- Special-case signed/unsigned int8/16. -- * testsuite/libffi.call/return_sc.c (main): Revert. -- --2007-07-26 Richard Guenther -- -- PR testsuite/32843 -- * testsuite/libffi.call/return_sc.c (main): Verify call -- result as signed char, not ffi_arg. -- --2007-07-16 Rainer Orth -- -- * configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64. -- * configure: Regenerate. -- --2007-07-11 David Daney -- -- * src/mips/ffi.c: Don't include sys/cachectl.h. -- (ffi_prep_closure_loc): Use __builtin___clear_cache() instead of -- cacheflush(). -- --2007-05-18 Aurelien Jarno -- -- * src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted -- from (ffi_prep_closure): ... this. -- (FFI_INIT_TRAMPOLINE): Adjust. -- --2005-12-31 Phil Blundell -- -- * src/arm/ffi.c (ffi_prep_incoming_args_SYSV, -- ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support. -- * src/arm/sysv.S(ffi_closure_SYSV): Likewise. -- * src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. -- (FFI_CLOSURES): Enable closure support. -- --2007-07-03 Andrew Haley -- -- * testsuite/libffi.call/cls_multi_ushort.c, -- testsuite/libffi.call/cls_align_uint16.c, -- testsuite/libffi.call/nested_struct1.c, -- testsuite/libffi.call/nested_struct3.c, -- testsuite/libffi.call/cls_7_1_byte.c, -- testsuite/libffi.call/cls_double.c, -- testsuite/libffi.call/nested_struct5.c, -- testsuite/libffi.call/nested_struct7.c, -- testsuite/libffi.call/cls_sint.c, -- testsuite/libffi.call/nested_struct9.c, -- testsuite/libffi.call/cls_20byte1.c, -- testsuite/libffi.call/cls_multi_sshortchar.c, -- testsuite/libffi.call/cls_align_sint64.c, -- testsuite/libffi.call/cls_3byte2.c, -- testsuite/libffi.call/cls_multi_schar.c, -- testsuite/libffi.call/cls_multi_uchar.c, -- testsuite/libffi.call/cls_19byte.c, -- testsuite/libffi.call/cls_9byte1.c, -- testsuite/libffi.call/cls_align_float.c, -- testsuite/libffi.call/closure_fn1.c, -- testsuite/libffi.call/problem1.c, -- testsuite/libffi.call/closure_fn3.c, -- testsuite/libffi.call/cls_sshort.c, -- testsuite/libffi.call/closure_fn5.c, -- testsuite/libffi.call/cls_align_double.c, -- testsuite/libffi.call/cls_2byte.c, -- testsuite/libffi.call/nested_struct.c, -- testsuite/libffi.call/nested_struct10.c, -- testsuite/libffi.call/cls_4byte.c, -- testsuite/libffi.call/cls_6byte.c, -- testsuite/libffi.call/cls_8byte.c, -- testsuite/libffi.call/cls_multi_sshort.c, -- testsuite/libffi.call/cls_align_uint32.c, -- testsuite/libffi.call/cls_align_sint16.c, -- testsuite/libffi.call/cls_float.c, -- testsuite/libffi.call/cls_20byte.c, -- testsuite/libffi.call/cls_5_1_byte.c, -- testsuite/libffi.call/nested_struct2.c, -- testsuite/libffi.call/cls_24byte.c, -- testsuite/libffi.call/nested_struct4.c, -- testsuite/libffi.call/nested_struct6.c, -- testsuite/libffi.call/cls_64byte.c, -- testsuite/libffi.call/nested_struct8.c, -- testsuite/libffi.call/cls_uint.c, -- testsuite/libffi.call/cls_multi_ushortchar.c, -- testsuite/libffi.call/cls_schar.c, -- testsuite/libffi.call/cls_uchar.c, -- testsuite/libffi.call/cls_align_uint64.c, -- testsuite/libffi.call/cls_ulonglong.c, -- testsuite/libffi.call/cls_align_longdouble.c, -- testsuite/libffi.call/cls_1_1byte.c, -- testsuite/libffi.call/cls_12byte.c, -- testsuite/libffi.call/cls_3_1byte.c, -- testsuite/libffi.call/cls_3byte1.c, -- testsuite/libffi.call/cls_4_1byte.c, -- testsuite/libffi.call/cls_6_1_byte.c, -- testsuite/libffi.call/cls_16byte.c, -- testsuite/libffi.call/cls_18byte.c, -- testsuite/libffi.call/closure_fn0.c, -- testsuite/libffi.call/cls_9byte2.c, -- testsuite/libffi.call/closure_fn2.c, -- testsuite/libffi.call/closure_fn4.c, -- testsuite/libffi.call/cls_ushort.c, -- testsuite/libffi.call/closure_fn6.c, -- testsuite/libffi.call/cls_5byte.c, -- testsuite/libffi.call/cls_align_pointer.c, -- testsuite/libffi.call/cls_7byte.c, -- testsuite/libffi.call/cls_align_sint32.c, -- testsuite/libffi.special/unwindtest_ffi_call.cc, -- testsuite/libffi.special/unwindtest.cc: Enable for ARM. -- --2007-07-05 H.J. Lu -- -- * aclocal.m4: Regenerated. -- --2007-06-02 Paolo Bonzini -- -- * configure: Regenerate. -- --2007-05-23 Steve Ellcey -- -- * Makefile.in: Regenerate. -- * configure: Regenerate. -- * aclocal.m4: Regenerate. -- * include/Makefile.in: Regenerate. -- * testsuite/Makefile.in: Regenerate. -- --2007-05-10 Roman Zippel -- -- * src/m68k/ffi.c (ffi_prep_incoming_args_SYSV, -- ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support. -- * src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise. -- * src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. -- (FFI_CLOSURES): Enable closure support. -- --2007-05-10 Roman Zippel -- -- * configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test. -- * configure: Regenerate. -- * fficonfig.h.in: Regenerate. -- * src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC, -- CFI_OFFSET,CFI_DEF_CFA): New macros. -- (ffi_call_SYSV): Add callframe annotation. -- --2007-05-10 Roman Zippel -- -- * src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix -- numerous test suite failures. -- * src/m68k/sysv.S (ffi_call_SYSV): Likewise. -- --2007-04-11 Paolo Bonzini -- -- * Makefile.am (EXTRA_DIST): Bring up to date. -- * Makefile.in: Regenerate. -- * src/frv/eabi.S: Remove RCS keyword. -- --2007-04-06 Richard Henderson -- -- * configure.ac: Tidy target case. -- (HAVE_LONG_DOUBLE): Allow the target to override. -- * configure: Regenerate. -- * include/ffi.h.in: Don't define ffi_type_foo if -- LIBFFI_HIDE_BASIC_TYPES is defined. -- (ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define -- to ffi_type_double. -- * types.c (LIBFFI_HIDE_BASIC_TYPES): Define. -- (FFI_TYPEDEF, ffi_type_void): Mark the data const. -- (ffi_type_longdouble): Special case for Alpha. Don't define -- if long double == double. -- -- * src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value. -- (ffi_prep_cif_machdep): Handle it as the 128-bit type. -- (ffi_call, ffi_closure_osf_inner): Likewise. -- (ffi_closure_osf_inner): Likewise. Mark hidden. -- (ffi_call_osf, ffi_closure_osf): Mark hidden. -- * src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition. -- * src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden. -- (load_table): Handle 128-bit long double. -- -- * testsuite/libffi.call/float4.c: Add -mieee for alpha. -- --2007-04-06 Tom Tromey -- -- PR libffi/31491: -- * README: Fixed bug in example. -- --2007-04-03 Jakub Jelinek -- -- * src/closures.c: Include sys/statfs.h. -- (_GNU_SOURCE): Define on Linux. -- (FFI_MMAP_EXEC_SELINUX): Define. -- (selinux_enabled): New variable. -- (selinux_enabled_check): New function. -- (is_selinux_enabled): Define. -- (dlmmap): Use it. -- --2007-03-24 Uros Bizjak -- -- * testsuite/libffi.call/return_fl2.c (return_fl): Mark as static. -- Use 'volatile float sum' to create sum of floats to avoid false -- negative due to excess precision on ix86 targets. -- (main): Ditto. -- --2007-03-08 Alexandre Oliva -- -- * src/powerpc/ffi.c (flush_icache): Fix left-over from previous -- patch. -- (ffi_prep_closure_loc): Remove unneeded casts. Add needed ones. -- --2007-03-07 Alexandre Oliva -- -- * include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New. -- (ffi_prep_closure_loc): New. -- (ffi_prep_raw_closure_loc): New. -- (ffi_prep_java_raw_closure_loc): New. -- * src/closures.c: New file. -- * src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment): -- Replace sflags with exec_offset. -- [FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset, -- sub_segment_exec_offset): New macros. -- (get_segment_flags, set_segment_flags, check_segment_merge): New -- macros. -- (is_mmapped_segment, is_extern_segment): Use get_segment_flags. -- (add_segment, sys_alloc, create_mspace, create_mspace_with_base, -- destroy_mspace): Use new macros. -- (sys_alloc): Silence warning. -- * Makefile.am (libffi_la_SOURCES): Add src/closures.c. -- * Makefile.in: Rebuilt. -- * src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in -- terms of ffi_prep_closure_loc. -- * src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted -- from... -- (ffi_prep_raw_closure): ... this. Re-implement in terms of the -- renamed version. -- * src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and -- adjusted from... -- (ffi_prep_java_raw_closure): ... this. Re-implement in terms of -- the renamed version. -- * src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from -- (ffi_prep_closure): ... this. -- * src/pa/ffi.c: Likewise. -- * src/cris/ffi.c: Likewise. Adjust. -- * src/frv/ffi.c: Likewise. -- * src/ia64/ffi.c: Likewise. -- * src/mips/ffi.c: Likewise. -- * src/powerpc/ffi_darwin.c: Likewise. -- * src/s390/ffi.c: Likewise. -- * src/sh/ffi.c: Likewise. -- * src/sh64/ffi.c: Likewise. -- * src/sparc/ffi.c: Likewise. -- * src/x86/ffi64.c: Likewise. -- * src/x86/ffi.c: Likewise. -- (FFI_INIT_TRAMPOLINE): Adjust. -- (ffi_prep_raw_closure_loc): Renamed and adjusted from... -- (ffi_prep_raw_closure): ... this. -- * src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from -- (ffi_prep_closure): ... this. -- (flush_icache): Adjust. -- --2007-03-07 Alexandre Oliva -- -- * src/dlmalloc.c: New file, imported version 2.8.3 of Doug -- Lea's malloc. -- --2007-03-01 Brooks Moses -- -- * Makefile.am: Add dummy install-pdf target. -- * Makefile.in: Regenerate -- --2007-02-13 Andreas Krebbel -- -- * src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep, -- ffi_closure_helper_SYSV): Add long double handling. -- --2007-02-02 Jakub Jelinek -- -- * src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2 -- immediately after bctrl instruction. -- --2007-01-18 Alexandre Oliva -- -- * Makefile.am (all-recursive, install-recursive, -- mostlyclean-recursive, clean-recursive, distclean-recursive, -- maintainer-clean-recursive): Add missing targets. -- * Makefile.in: Rebuilt. -- --2006-12-14 Andreas Tobler -- -- * configure.ac: Add TARGET for x86_64-*-darwin*. -- * Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources -- for X86_DARWIN. -- * src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*. -- * src/x86/darwin64.S: New file for x86_64-*-darwin* support. -- * configure: Regenerate. -- * Makefile.in: Regenerate. -- * include/Makefile.in: Regenerate. -- * testsuite/Makefile.in: Regenerate. -- * testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for -- ffi_call only. -- --2006-12-13 Andreas Tobler -- -- * aclocal.m4: Regenerate with aclocal -I .. as written in the -- Makefile.am. -- --2006-10-31 Geoffrey Keating -- -- * src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New. -- (ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for -- Darwin. -- * testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL. -- * testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL. -- --2006-10-10 Paolo Bonzini -- Sandro Tolaini -- -- * configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and -- conditional. -- * configure: Regenerated. -- * Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case. -- (EXTRA_DIST): Add src/x86/darwin.S. -- * Makefile.in: Regenerated. -- * include/Makefile.in: Regenerated. -- * testsuite/Makefile.in: Regenerated. -- -- * src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like -- X86_WIN32, and additionally align stack to 16 bytes. -- * src/x86/darwin.S: New, based on sysv.S. -- * src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs. -- --2006-09-12 David Daney -- -- PR libffi/23935 -- * include/Makefile.am: Install both ffi.h and ffitarget.h in -- $(libdir)/gcc/$(target_alias)/$(gcc_version)/include. -- * aclocal.m4: Regenerated for automake 1.9.6. -- * Makefile.in: Regenerated. -- * include/Makefile.in: Regenerated. -- * testsuite/Makefile.in: Regenerated. -- --2006-08-17 Andreas Tobler -- -- * include/ffi_common.h (struct): Revert accidental commit. -- --2006-08-15 Andreas Tobler -- -- * include/ffi_common.h: Remove lint directives. -- * include/ffi.h.in: Likewise. -- --2006-07-25 Torsten Schoenfeld -- -- * include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly -- for 32-bit architectures. -- * testsuite/libffi.call/return_ul.c: New test case. -- --2006-07-19 David Daney -- -- * testsuite/libffi.call/closure_fn6.c: Remove xfail for mips, -- xfail remains for mips64. -- --2006-05-23 Carlos O'Donell -- -- * Makefile.am: Add install-html target. Add install-html to .PHONY -- * Makefile.in: Regenerate. -- * aclocal.m4: Regenerate. -- * include/Makefile.in: Regenerate. -- * testsuite/Makefile.in: Regenerate. -- --2006-05-18 John David Anglin -- -- * pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from -- stack slot. -- --2006-04-22 Andreas Tobler -- -- * README: Remove notice about 'Crazy Comments'. -- * src/debug.c: Remove lint directives. Cleanup white spaces. -- * src/java_raw_api.c: Likewise. -- * src/prep_cif.c: Likewise. -- * src/raw_api.c: Likewise. -- * src/ffitest.c: Delete. No longer needed, all test cases migrated -- to the testsuite. -- * src/arm/ffi.c: Remove lint directives. -- * src/m32r/ffi.c: Likewise. -- * src/pa/ffi.c: Likewise. -- * src/powerpc/ffi.c: Likewise. -- * src/powerpc/ffi_darwin.c: Likewise. -- * src/sh/ffi.c: Likewise. -- * src/sh64/ffi.c: Likewise. -- * src/x86/ffi.c: Likewise. -- * testsuite/libffi.call/float2.c: Likewise. -- * testsuite/libffi.call/promotion.c: Likewise. -- * testsuite/libffi.call/struct1.c: Likewise. -- --2006-04-13 Andreas Tobler -- -- * src/pa/hpux32.S: Correct unwind offset calculation for -- ffi_closure_pa32. -- * src/pa/linux.S: Likewise. -- --2006-04-12 James E Wilson -- -- PR libgcj/26483 -- * src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros. -- (hfa_type_load): Call stf_spill. -- (hfa_type_store): Call ldf_fill. -- (ffi_call): Adjust calls to above routines. Add local temps for -- macro result. -- --2006-04-10 Matthias Klose -- -- * testsuite/lib/libffi-dg.exp (libffi-init): Recognize multilib -- directory names containing underscores. -- --2006-04-07 James E Wilson -- -- * testsuite/libffi.call/float4.c: New testcase. -- --2006-04-05 John David Anglin -- Andreas Tobler -- -- * Makefile.am: Add PA_HPUX port. -- * Makefile.in: Regenerate. -- * include/Makefile.in: Likewise. -- * testsuite/Makefile.in: Likewise. -- * configure.ac: Add PA_HPUX rules. -- * configure: Regenerate. -- * src/pa/ffitarget.h: Rename linux target to PA_LINUX. -- Add PA_HPUX and PA64_HPUX. -- Rename FFI_LINUX ABI to FFI_PA32 ABI. -- (FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets. -- (FFI_TYPE_SMALL_STRUCT2): Define. -- (FFI_TYPE_SMALL_STRUCT4): Likewise. -- (FFI_TYPE_SMALL_STRUCT8): Likewise. -- (FFI_TYPE_SMALL_STRUCT3): Redefine. -- (FFI_TYPE_SMALL_STRUCT5): Likewise. -- (FFI_TYPE_SMALL_STRUCT6): Likewise. -- (FFI_TYPE_SMALL_STRUCT7): Likewise. -- * src/pa/ffi.c (ROUND_DOWN): Delete. -- (fldw, fstw, fldd, fstd): Use '__asm__'. -- (ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2, -- FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8. -- (ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment. -- Simplify incrementing of stack slot variable. Change type of local -- 'n' to unsigned int. -- (ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long -- double on PA_HPUX. -- (ffi_prep_cif_machdep): Likewise. -- (ffi_call): Likewise. -- (ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change -- return type to ffi_status. Simplify incrementing of stack slot -- variable. Only copy floating point argument registers when PA_LINUX -- is true. Reformat debug statement. -- Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and -- FFI_TYPE_SMALL_STRUCT8. -- (ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to -- declaration. -- (ffi_prep_closure): Make linux trampoline conditional on PA_LINUX. -- Add nops to cache flush. Add trampoline for PA_HPUX. -- * src/pa/hpux32.S: New file. -- * src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename -- ffi_prep_args_LINUX to ffi_prep_args_pa32. -- Localize labels. Add support for 2, 4 and 8-byte small structs. Handle -- unaligned destinations in 3, 5, 6 and 7-byte small structs. Order -- argument type checks so that common argument types appear first. -- (ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename -- ffi_closure_inner_LINUX to ffi_closure_inner_pa32. -- --2006-03-24 Alan Modra -- -- * src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX. Default -- for 32-bit using IBM extended double format. Fix FFI_LAST_ABI. -- * src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of -- FFI_TYPE_LONGDOUBLE. -- (ffi_prep_args64): Assert using IBM extended double. -- (ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type. -- Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args. -- (ffi_call): Handle FFI_LINUX. -- (ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs -- gpr3 return pointer as for struct return. Handle FFI_LINUX -- FFI_TYPE_LONGDOUBLE return and args. Don't increment "nf" -- unnecessarily. -- * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2 -- for FFI_TYPE_LONGDOUBLE. Move epilogue insns into case table. -- Don't use r6 as pointer to results, instead use sp offset. Don't -- make a special call to load lr with case table address, instead -- use offset from previous call. -- * src/powerpc/sysv.S (ffi_call_SYSV): Save long double return. -- * src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double -- return. -- --2006-03-15 Kaz Kojima -- -- * src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments -- passed with FP registers correctly. -- (ffi_closure_helper_SYSV): Likewise. -- * src/sh64/sysv.S: Likewise. -- --2006-03-01 Andreas Tobler -- -- * testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif, -- args and userdata unused. -- (closure_test_fn1): Mark cif and userdata unused. -- (main): Remove unused res. -- --2006-02-28 Andreas Tobler -- -- * testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for -- -O2, -O3, -Os and the warning flags -W -Wall. -- * testsuite/libffi.special/special.exp: Likewise. -- * testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark -- unused parameter unused for gcc or else do nothing. -- * testsuite/libffi.special/ffitestcxx.h: Likewise. -- * testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif -- and userdata unused. -- * testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise. -- * testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise. -- * testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise. -- * testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise. -- * testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise. -- * testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise. -- * testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise. -- * testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise. -- * testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise. -- * testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise. -- * testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise. -- * testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise. -- * testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise. -- * testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise. -- * testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise. -- * testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise. -- * testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise. -- * testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise. -- * testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise. -- * testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise. -- * testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise. -- * testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise. -- * testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise. -- * testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn): -- Likewise. -- * testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn): -- Likewise. -- * testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn): -- Likewise. -- * testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast -- void* to avoid compiler warning. -- (main): Likewise. -- (cls_struct_align_gn): Mark cif and userdata unused. -- * testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn): -- Likewise. -- * testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn): -- Likewise. -- * testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn): -- Likewise. -- * testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn): -- Likewise. -- * testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn): -- Likewise. -- * testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise. -- * testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise. -- * testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and -- data unused. -- (main): Cast res_call to silence gcc. -- * testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and -- data unused. -- (main): Cast res_call to silence gcc. -- * testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif -- and data unused. -- (main): Cast res_call to silence gcc. -- * testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and -- data unused. -- (main): Cast res_call to silence gcc. -- * testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and -- data unused. -- (main): Cast res_call to silence gcc. -- * testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif -- and data unused. -- (main): Cast res_call to silence gcc. -- * testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and -- userdata unused. -- (cls_ret_schar_fn): Cast printf parameter to silence gcc. -- * testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and -- userdata unused. -- (cls_ret_sint_fn): Cast printf parameter to silence gcc. -- * testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and -- userdata unused. -- (cls_ret_sshort_fn): Cast printf parameter to silence gcc. -- * testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn): Mark cif and -- userdata unused. -- (cls_ret_uchar_fn): Cast printf parameter to silence gcc. -- * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and -- userdata unused. -- (cls_ret_uint_fn): Cast printf parameter to silence gcc. -- * testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif -- and userdata unused. -- * testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and -- userdata unused. -- (cls_ret_ushort_fn): Cast printf parameter to silence gcc. -- * testsuite/libffi.call/float.c (floating): Remove unused parameter e. -- * testsuite/libffi.call/float1.c (main): Remove unused variable i. -- Cleanup white spaces. -- * testsuite/libffi.call/negint.c (checking): Remove unused variable i. -- * testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark -- cif and userdata unused. -- * testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn): -- Likewise. -- * testsuite/libffi.call/nested_struct10.c (B_gn): Likewise. -- * testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf -- formatters to silence gcc. -- (B_gn): Mark cif and userdata unused. -- * testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata -- unused. -- * testsuite/libffi.call/nested_struct4.c: Mention related PR. -- (B_gn): Mark cif and userdata unused. -- * testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata -- unused. -- * testsuite/libffi.call/nested_struct6.c: Mention related PR. -- (B_gn): Mark cif and userdata unused. -- * testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata -- unused. -- * testsuite/libffi.call/nested_struct8.c (B_gn): Likewise. -- * testsuite/libffi.call/nested_struct9.c (B_gn): Likewise. -- * testsuite/libffi.call/problem1.c (stub): Likewise. -- * testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence -- gcc. -- * testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned -- in the last commit for this test case in the test case itself. -- * testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as -- unused. -- * testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise. -- * testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise. -- * testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise. -- * testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise. -- * testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise. -- * testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise. -- --2006-02-22 Kaz Kojima -- -- * src/sh/sysv.S: Fix register numbers in the FDE for -- ffi_closure_SYSV. -- --2006-02-20 Andreas Tobler -- -- * testsuite/libffi.call/return_fl2.c (return_fl): Remove static -- declaration to avoid a false negative on ix86. See PR323. -- --2006-02-18 Kaz Kojima -- -- * src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable -- and cast integer to void * if needed. Update the pointer to -- the FP register saved area correctly. -- --2006-02-17 Andreas Tobler -- -- * testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630 -- is fixed. -- * testsuite/libffi.call/nested_struct4.c: Likewise. -- --2006-02-16 Andreas Tobler -- -- * testsuite/libffi.call/return_dbl.c: New test case. -- * testsuite/libffi.call/return_dbl1.c: Likewise. -- * testsuite/libffi.call/return_dbl2.c: Likewise. -- * testsuite/libffi.call/return_fl.c: Likewise. -- * testsuite/libffi.call/return_fl1.c: Likewise. -- * testsuite/libffi.call/return_fl2.c: Likewise. -- * testsuite/libffi.call/return_fl3.c: Likewise. -- * testsuite/libffi.call/closure_fn6.c: Likewise. -- -- * testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong -- definition. -- * testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition -- here to be used by other test cases too. -- -- * testsuite/libffi.call/nested_struct10.c: New test case. -- * testsuite/libffi.call/nested_struct9.c: Likewise. -- * testsuite/libffi.call/nested_struct8.c: Likewise. -- * testsuite/libffi.call/nested_struct7.c: Likewise. -- * testsuite/libffi.call/nested_struct6.c: Likewise. -- * testsuite/libffi.call/nested_struct5.c: Likewise. -- * testsuite/libffi.call/nested_struct4.c: Likewise. -- --2006-01-21 Andreas Tobler -- -- * configure.ac: Enable libffi for sparc64-*-freebsd*. -- * configure: Rebuilt. -- --2006-01-18 Jakub Jelinek -- -- * src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3, -- instead do the shifting inline. -- * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5 -- shift count unconditionally. Simplify load sequences for 1, 2, 3, 4 -- and 8 byte structs, for the remaining struct sizes don't call -- __lshrdi3, instead do the shifting inline. -- --2005-12-07 Thiemo Seufer -- -- * src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add -- missing parentheses. -- * src/mips/o32.S (ffi_call_O32): Code formatting. Define -- and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations. -- (ffi_closure_O32): Likewise, but with newly defined A3_OFF2, -- A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2, -- V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2, -- FA_0_0_OFF2. -- * src/mips/ffi.c (ffi_prep_args): Code formatting. Fix -- endianness bugs. -- (ffi_prep_closure): Improve trampoline instruction scheduling. -- (ffi_closure_mips_inner_O32): Fix endianness bugs. -- --2005-12-03 Alan Modra -- -- * src/powerpc/ffi.c: Formatting. -- (ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions. -- (ffi_prep_args64): Likewise. -- --2005-09-30 Geoffrey Keating -- -- * testsuite/lib/libffi-dg.exp (libffi_target_compile): For -- darwin, use -shared-libgcc not -lgcc_s, and explain why. -- --2005-09-26 Tom Tromey -- -- * testsuite/libffi.call/float1.c (value_type): New typedef. -- (CANARY): New define. -- (main): Check for result buffer overflow. -- * src/powerpc/linux64.S: Handle linux64 long double returns. -- * src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant. -- (ffi_prep_cif_machdep): Handle linux64 long double returns. -- --2005-08-25 Alan Modra -- -- PR target/23404 -- * src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack -- homed fp args. -- (ffi_status ffi_prep_cif_machdep): Correct stack sizing for same. -- --2005-08-11 Jakub Jelinek -- -- * configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test. -- (AH_BOTTOM): Add FFI_HIDDEN definition. -- * configure: Rebuilt. -- * fficonfig.h.in: Rebuilt. -- * src/powerpc/ffi.c (hidden): Remove. -- (ffi_closure_LINUX64, ffi_prep_args64, ffi_call_LINUX64, -- ffi_closure_helper_LINUX64): Use FFI_HIDDEN instead of hidden. -- * src/powerpc/linux64_closure.S (ffi_closure_LINUX64, -- .ffi_closure_LINUX64): Use FFI_HIDDEN instead of .hidden. -- * src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): Remove, -- add FFI_HIDDEN to its prototype. -- (ffi_closure_SYSV_inner): New. -- * src/x86/sysv.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New. -- * src/x86/win32.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New. -- --2005-08-10 Alfred M. Szmidt -- -- PR libffi/21819: -- * configure: Rebuilt. -- * configure.ac: Handle i*86-*-gnu*. -- --2005-08-09 Jakub Jelinek -- -- * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use -- DW_CFA_offset_extended_sf rather than -- DW_CFA_GNU_negative_offset_extended. -- * src/powerpc/sysv.S (ffi_call_SYSV): Likewise. -- --2005-07-22 SUGIOKA Toshinobu -- -- * src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly -- on sh3. -- (ffi_closure_SYSV): Change the stack layout for sh3 struct argument. -- * src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is -- partially on register. -- (ffi_closure_helper_SYSV): Likewise. -- (ffi_prep_cif_machdep): Don't set too many cif->flags. -- --2005-07-20 Kaz Kojima -- -- * src/sh/ffi.c (ffi_call): Handle small structures correctly. -- Remove empty line. -- * src/sh64/ffi.c (simple_type): Remove. -- (return_type): Handle small structures correctly. -- (ffi_prep_args): Likewise. -- (ffi_call): Likewise. -- (ffi_closure_helper_SYSV): Likewise. -- * src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return. -- Emit position independent code if PIC and remove wrong datalabel -- prefixes from EH data. -- --2005-07-19 Andreas Tobler -- -- * Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD. -- * Makefile.in: Regenerate. -- * include/Makefile.in: Likewise. -- * testsuite/Makefile.in: Likewise. -- * configure.ac: Add POWERPC_FREEBSD rules. -- * configure: Regenerate. -- * src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules. -- (FFI_SYSV_TYPE_SMALL_STRUCT): Define. -- * src/powerpc/ffi.c: Add flags to handle small structure returns -- in ffi_call_SYSV. -- (ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI. -- Aka FFI_SYSV. -- (ffi_closure_helper_SYSV): Likewise. -- * src/powerpc/ppc_closure.S: Add return types for small structures. -- * src/powerpc/sysv.S: Add bits to handle small structures for -- final SYSV 4 ABI. -- --2005-07-10 Andreas Tobler -- -- * testsuite/libffi.call/cls_5_1_byte.c: New test file. -- * testsuite/libffi.call/cls_6_1_byte.c: Likewise. -- * testsuite/libffi.call/cls_7_1_byte.c: Likewise. -- --2005-07-05 Randolph Chung -- -- * src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1 -- as FFI_TYPE_SMALL_STRUCT3. Break out handling for 5-7 byte -- structures. Kill compilation warnings. -- (ffi_closure_inner_LINUX): Print return values as hex in debug -- message. Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3. -- Properly handle 5-7 byte structure returns. -- * src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1) -- (FFI_TYPE_SMALL_STRUCT2): Remove. -- (FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5) -- (FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define. -- * src/pa/linux.S: Mark source file as using PA1.1 assembly. -- (checksmst1, checksmst2): Remove. -- (checksmst3): Optimize handling of 3-byte struct returns. -- (checksmst567): Properly handle 5-7 byte struct returns. -- --2005-06-15 Rainer Orth -- -- PR libgcj/21943 -- * src/mips/n32.S: Enforce PIC code. -- * src/mips/o32.S: Likewise. -- --2005-06-15 Rainer Orth -- -- * configure.ac: Treat i*86-*-solaris2.10 and up as X86_64. -- * configure: Regenerate. -- --2005-06-01 Alan Modra -- -- * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET -- to call ffi_closure_helper_SYSV. Append @local instead. -- * src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV. -- --2005-05-17 Kelley Cook -- -- * configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS. -- Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF. -- * Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config. -- * aclocal.m4, configure, fficonfig.h.in, Makefile.in, -- include/Makefile.in, testsuite/Makefile.in: Regenerate. -- --2005-05-09 Mike Stump -- -- * configure: Regenerate. -- --2005-05-08 Richard Henderson -- -- PR libffi/21285 -- * src/alpha/osf.S: Update unwind into to match code. -- --2005-05-04 Andreas Degert -- Richard Henderson -- -- * src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in -- bit 11 of flags. -- (ffi_call): Mask return type field. Pass ssecount to ffi_call_unix64. -- (ffi_prep_closure): Set carry bit if sse-used flag set. -- * src/x86/unix64.S (ffi_call_unix64): Add ssecount argument. -- Only load sse registers if ssecount non-zero. -- (ffi_closure_unix64): Only save sse registers if carry set on entry. -- --2005-04-29 Ralf Corsepius -- -- * configure.ac: Add i*86-*-rtems*, sparc*-*-rtems*, -- powerpc-*rtems*, arm*-*-rtems*, sh-*-rtems*. -- * configure: Regenerate. -- --2005-04-20 Hans-Peter Nilsson -- -- * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use, -- have Tcl8.3-compatible intermediate variable. -- --2005-04-18 Simon Posnjak -- Hans-Peter Nilsson -- -- * Makefile.am: Add CRIS support. -- * configure.ac: Likewise. -- * Makefile.in, configure, testsuite/Makefile.in, -- include/Makefile.in: Regenerate. -- * src/cris: New directory. -- * src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files. -- * src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__. -- -- * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): Replace \n with -- \r?\n in output tests. -- --2005-04-12 Mike Stump -- -- * configure: Regenerate. -- --2005-03-30 Hans Boehm -- -- * src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI. -- --2005-03-30 Steve Ellcey -- -- * src/ia64/ffitarget.h (ffi_arg) ADD DI attribute. -- (ffi_sarg) Ditto. -- * src/ia64/unix.S (ffi_closure_unix): Extend gp -- to 64 bits in ILP32 mode. -- Load 64 bits even for short data. -- --2005-03-23 Mike Stump -- -- * src/powerpc/darwin.S: Update for -m64 multilib. -- * src/powerpc/darwin_closure.S: Likewise. -- --2005-03-21 Zack Weinberg -- -- * configure.ac: Do not invoke TL_AC_GCC_VERSION. -- Do not set tool_include_dir. -- * aclocal.m4, configure, Makefile.in, testsuite/Makefile.in: -- Regenerate. -- * include/Makefile.am: Set gcc_version and toollibffidir. -- * include/Makefile.in: Regenerate. -- --2005-02-22 Andrew Haley -- -- * src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to -- odd-numbered register pairs for 64-bit integer types. -- --2005-02-23 Andreas Tobler -- -- PR libffi/20104 -- * testsuite/libffi.call/return_ll1.c: New test case. -- --2005-02-11 Janis Johnson -- -- * testsuite/libffi.call/cls_align_longdouble.c: Remove dg-options. -- * testsuite/libffi.call/float.c: Ditto. -- * testsuite/libffi.call/float2.c: Ditto. -- * testsuite/libffi.call/float3.c: Ditto. -- --2005-02-08 Andreas Tobler -- -- * src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv. -- --2005-01-12 Eric Botcazou -- -- * testsuite/libffi.special/special.exp (cxx_options): Add -- -shared-libgcc. -- --2004-12-31 Richard Henderson -- -- * src/types.c (FFI_AGGREGATE_TYPEDEF): Remove. -- (FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF. Replace size and -- offset parameters with a type parameter; deduce size and structure -- alignment. Update all users. -- --2004-12-31 Richard Henderson -- -- * src/types.c (FFI_TYPE_POINTER): Define with sizeof. -- (FFI_TYPE_LONGDOUBLE): Fix for ia64. -- * src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move -- into ffi_prep_closure. -- * src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite -- from scratch. -- --2004-12-27 Richard Henderson -- -- * src/x86/unix64.S: Fix typo in unwind info. -- --2004-12-25 Richard Henderson -- -- * src/x86/ffi64.c (struct register_args): Rename from stackLayout. -- (enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS. -- (merge_classes): Check for it. -- (SSE_CLASS_P): New. -- (classify_argument): Pass byte_offset by value; perform all updates -- inside struct case. -- (examine_argument): Add classes argument; handle -- X86_64_COMPLEX_X87_CLASS. -- (ffi_prep_args): Merge into ... -- (ffi_call): ... here. Share stack frame with ffi_call_unix64. -- (ffi_prep_cif_machdep): Setup cif->flags for proper structure return. -- (ffi_fill_return_value): Remove. -- (ffi_prep_closure): Remove dead assert. -- (ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner. -- Rewrite to use struct register_args instead of va_list. Create -- flags for handling structure returns. -- * src/x86/unix64.S: Remove dead strings. -- (ffi_call_unix64): Rename from ffi_call_UNIX64. Rewrite to share -- stack frame with ffi_call. Handle structure returns properly. -- (float2sse, floatfloat2sse, double2sse): Remove. -- (sse2float, sse2double, sse2floatfloat): Remove. -- (ffi_closure_unix64): Rename from ffi_closure_UNIX64. Rewrite -- to handle structure returns properly. -- --2004-12-08 David Edelsohn -- -- * Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and -- PICFLAG. -- * Makefile.in: Regenerated. -- --2004-12-02 Richard Sandiford -- -- * configure.ac: Use TL_AC_GCC_VERSION to set gcc_version. -- * configure, aclocal.m4, Makefile.in: Regenerate. -- * include/Makefile.in, testsuite/Makefile.in: Regenerate. -- --2004-11-29 Kelley Cook -- -- * configure: Regenerate for libtool change. -- --2004-11-25 Kelley Cook -- -- * configure: Regenerate for libtool reversion. -- --2004-11-24 Kelley Cook -- -- * configure: Regenerate for libtool change. -- --2004-11-23 John David Anglin -- -- * testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp. -- --2004-11-23 Richard Sandiford -- -- * src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead -- of jal. Use an absolute encoding for the frame information. -- --2004-11-23 Kelley Cook -- -- * Makefile.am: Remove no-dependencies. Add ACLOCAL_AMFLAGS. -- * acinclude.m4: Delete logic for sincludes. -- * aclocal.m4, Makefile.in, configure: Regenerate. -- * include/Makefile: Likewise. -- * testsuite/Makefile: Likewise. -- --2004-11-22 Eric Botcazou -- -- * src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers -- on a 8-byte boundary. -- * src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments. -- --2004-10-27 Richard Earnshaw -- -- * src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return -- long long values. Round stack allocation to a multiple of 8 bytes -- for ATPCS compatibility. -- * src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register -- names. Handle returning long long types. Add Thumb and interworking -- support. Improve soft-float code. -- --2004-10-27 Richard Earnshaw -- -- * testsuite/lib/libffi-db.exp (load_gcc_lib): New function. -- (libffi_exit): New function. -- (libffi_init): Build the testglue wrapper if needed. -- --2004-10-25 Eric Botcazou -- -- PR other/18138 -- * testsuite/lib/libffi-dg.exp: Accept more than one multilib libgcc. -- --2004-10-25 Kazuhiro Inaoka -- -- * src/m32r/libffitarget.h (FFI_CLOSURES): Set to 0. -- --2004-10-20 Kaz Kojima -- -- * src/sh/sysv.S (ffi_call_SYSV): Don't align for double data. -- * testsuite/libffi.call/float3.c: New test case. -- --2004-10-18 Kaz Kojima -- -- * src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for -- the function returning a structure pointed with R2. -- * src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to -- the structure return value if T bit set. Emit position -- independent code and EH data if PIC. -- --2004-10-13 Kazuhiro Inaoka -- -- * Makefile.am: Add m32r support. -- * configure.ac: Likewise. -- * Makefile.in: Regenerate. -- * confiugre: Regenerate. -- * src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF -- (uint64, sint64, double, longdouble) -- * src/m32r: New directory. -- * src/m32r/ffi.c: New file. -- * src/m32r/sysv.S: Likewise. -- * src/m32r/ffitarget.h: Likewise. -- --2004-10-02 Kaz Kojima -- -- * testsuite/libffi.call/negint.c: New test case. -- --2004-09-14 H.J. Lu -- -- PR libgcj/17465 -- * testsuite/lib/libffi-dg.exp: Don't use global ld_library_path. -- Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH, -- LD_LIBRARY64_PATH, LD_LIBRARY_PATH_32, LD_LIBRARY_PATH_64 and -- DYLD_LIBRARY_PATH. -- --2004-09-05 Andreas Tobler -- -- * testsuite/libffi.call/many_win32.c: Remove whitespaces. -- * testsuite/libffi.call/promotion.c: Likewise. -- * testsuite/libffi.call/return_ll.c: Remove unused var. Cleanup -- whitespaces. -- * testsuite/libffi.call/return_sc.c: Likewise. -- * testsuite/libffi.call/return_uc.c: Likewise. -- --2004-09-05 Andreas Tobler -- -- * src/powerpc/darwin.S: Fix comments and identation. -- * src/powerpc/darwin_closure.S: Likewise. -- --2004-09-02 Andreas Tobler -- -- * src/powerpc/ffi_darwin.c: Add flag for longdouble return values. -- (ffi_prep_args): Handle longdouble arguments. -- (ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for -- longdouble. -- (ffi_closure_helper_DARWIN): Add closure handling for longdouble. -- * src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble -- values. -- * src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise. -- * src/types.c: Defined longdouble size and alignment for darwin. -- --2004-09-02 Andreas Tobler -- -- * src/powerpc/aix.S: Remove whitespaces. -- * src/powerpc/aix_closure.S: Likewise. -- * src/powerpc/asm.h: Likewise. -- * src/powerpc/ffi.c: Likewise. -- * src/powerpc/ffitarget.h: Likewise. -- * src/powerpc/linux64.S: Likewise. -- * src/powerpc/linux64_closure.S: Likewise. -- * src/powerpc/ppc_closure.S: Likewise. -- * src/powerpc/sysv.S: Likewise. -- --2004-08-30 Anthony Green -- -- * Makefile.am: Add frv support. -- * Makefile.in, testsuite/Makefile.in: Rebuilt. -- * configure.ac: Read configure.host. -- * configure.in: Read configure.host. -- * configure.host: New file. frv-elf needs libgloss. -- * include/ffi.h.in: Force ffi_closure to have a nice big (8) -- alignment. This is needed to frv and shouldn't harm the others. -- * include/ffi_common.h (ALIGN_DOWN): New macro. -- * src/frv/ffi.c, src/frv/ffitarget.h, src/frv/eabi.S: New files. -- --2004-08-24 David Daney -- -- * testsuite/libffi.call/closure_fn0.c: Xfail mips64* instead of mips*. -- * testsuite/libffi.call/closure_fn1.c: Likewise. -- * testsuite/libffi.call/closure_fn2.c Likewise. -- * testsuite/libffi.call/closure_fn3.c: Likewise. -- * testsuite/libffi.call/closure_fn4.c: Likewise. -- * testsuite/libffi.call/closure_fn5.c: Likewise. -- * testsuite/libffi.call/cls_18byte.c: Likewise. -- * testsuite/libffi.call/cls_19byte.c: Likewise. -- * testsuite/libffi.call/cls_1_1byte.c: Likewise. -- * testsuite/libffi.call/cls_20byte.c: Likewise. -- * testsuite/libffi.call/cls_20byte1.c: Likewise. -- * testsuite/libffi.call/cls_24byte.c: Likewise. -- * testsuite/libffi.call/cls_2byte.c: Likewise. -- * testsuite/libffi.call/cls_3_1byte.c: Likewise. -- * testsuite/libffi.call/cls_3byte1.c: Likewise. -- * testsuite/libffi.call/cls_3byte2.c: Likewise. -- * testsuite/libffi.call/cls_4_1byte.c: Likewise. -- * testsuite/libffi.call/cls_4byte.c: Likewise. -- * testsuite/libffi.call/cls_64byte.c: Likewise. -- * testsuite/libffi.call/cls_6byte.c: Likewise. -- * testsuite/libffi.call/cls_7byte.c: Likewise. -- * testsuite/libffi.call/cls_8byte.c: Likewise. -- * testsuite/libffi.call/cls_9byte1.c: Likewise. -- * testsuite/libffi.call/cls_9byte2.c: Likewise. -- * testsuite/libffi.call/cls_align_double.c: Likewise. -- * testsuite/libffi.call/cls_align_float.c: Likewise. -- * testsuite/libffi.call/cls_align_longdouble.c: Likewise. -- * testsuite/libffi.call/cls_align_pointer.c: Likewise. -- * testsuite/libffi.call/cls_align_sint16.c: Likewise. -- * testsuite/libffi.call/cls_align_sint32.c: Likewise. -- * testsuite/libffi.call/cls_align_sint64.c: Likewise. -- * testsuite/libffi.call/cls_align_uint16.c: Likewise. -- * testsuite/libffi.call/cls_align_uint32.c: Likewise. -- * testsuite/libffi.call/cls_align_uint64.c: Likewise. -- * testsuite/libffi.call/cls_double.c: Likewise. -- * testsuite/libffi.call/cls_float.c: Likewise. -- * testsuite/libffi.call/cls_multi_schar.c: Likewise. -- * testsuite/libffi.call/cls_multi_sshort.c: Likewise. -- * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise. -- * testsuite/libffi.call/cls_multi_uchar.c: Likewise. -- * testsuite/libffi.call/cls_multi_ushort.c: Likewise. -- * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise. -- * testsuite/libffi.call/cls_schar.c: Likewise. -- * testsuite/libffi.call/cls_sint.c: Likewise. -- * testsuite/libffi.call/cls_sshort.c: Likewise. -- * testsuite/libffi.call/cls_uchar.c: Likewise. -- * testsuite/libffi.call/cls_uint.c: Likewise. -- * testsuite/libffi.call/cls_ulonglong.c: Likewise. -- * testsuite/libffi.call/cls_ushort.c: Likewise. -- * testsuite/libffi.call/nested_struct.c: Likewise. -- * testsuite/libffi.call/nested_struct1.c: Likewise. -- * testsuite/libffi.call/nested_struct2.c: Likewise. -- * testsuite/libffi.call/nested_struct3.c: Likewise. -- * testsuite/libffi.call/problem1.c: Likewise. -- * testsuite/libffi.special/unwindtest.cc: Likewise. -- * testsuite/libffi.call/cls_12byte.c: Likewise and set return value -- to zero. -- * testsuite/libffi.call/cls_16byte.c: Likewise. -- * testsuite/libffi.call/cls_5byte.c: Likewise. -- --2004-08-23 David Daney -- -- PR libgcj/13141 -- * src/mips/ffitarget.h (FFI_O32_SOFT_FLOAT): New ABI. -- * src/mips/ffi.c (ffi_prep_args): Fix alignment calculation. -- (ffi_prep_cif_machdep): Handle FFI_O32_SOFT_FLOAT floating point -- parameters and return types. -- (ffi_call): Handle FFI_O32_SOFT_FLOAT ABI. -- (ffi_prep_closure): Ditto. -- (ffi_closure_mips_inner_O32): Handle FFI_O32_SOFT_FLOAT ABI, fix -- alignment calculations. -- * src/mips/o32.S (ffi_closure_O32): Don't use floating point -- instructions if FFI_O32_SOFT_FLOAT, make stack frame ABI compliant. -- --2004-08-14 Casey Marshall -- -- * src/mips/ffi.c (ffi_pref_cif_machdep): set `cif->flags' to -- contain `FFI_TYPE_UINT64' as return type for any 64-bit -- integer (O32 ABI only). -- (ffi_prep_closure): new function. -- (ffi_closure_mips_inner_O32): new function. -- * src/mips/ffitarget.h: Define `FFI_CLOSURES' and -- `FFI_TRAMPOLINE_SIZE' appropriately if the ABI is o32. -- * src/mips/o32.S (ffi_call_O32): add labels for .eh_frame. Return -- 64 bit integers correctly. -- (ffi_closure_O32): new function. -- Added DWARF-2 unwind info for both functions. -- --2004-08-10 Andrew Haley -- -- * src/x86/ffi64.c (ffi_prep_args ): 8-align all stack arguments. -- --2004-08-01 Robert Millan -- -- * configure.ac: Detect knetbsd-gnu and kfreebsd-gnu. -- * configure: Regenerate. -- --2004-07-30 Maciej W. Rozycki -- -- * acinclude.m4 (AC_FUNC_MMAP_BLACKLIST): Check for -- and mmap() explicitly instead of relying on preset autoconf cache -- variables. -- * aclocal.m4: Regenerate. -- * configure: Regenerate. -- --2004-07-11 Ulrich Weigand -- -- * src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation. -- (ffi_check_float_struct): Remove unused prototype. -- --2004-06-30 Geoffrey Keating -- -- * src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment -- character on Darwin, use '\n\t' instead. -- --2004-06-26 Matthias Klose -- -- * libtool-version: Fix typo in revision/age. -- --2004-06-17 Matthias Klose -- -- * libtool-version: New. -- * Makefile.am (libffi_la_LDFLAGS): Use -version-info for soname. -- * Makefile.in: Regenerate. -- --2004-06-15 Paolo Bonzini -- -- * Makefile.am: Remove useless multilib rules. -- * Makefile.in: Regenerate. -- * aclocal.m4: Regenerate with automake 1.8.5. -- * configure.ac: Remove useless multilib configury. -- * configure: Regenerate. -- --2004-06-15 Paolo Bonzini -- -- * .cvsignore: New file. -- --2004-06-10 Jakub Jelinek -- -- * src/ia64/unix.S (ffi_call_unix): Insert group barrier break -- fp_done. -- (ffi_closure_UNIX): Fix f14/f15 adjustment if FLOAT_SZ is ever -- changed from 8. -- --2004-06-06 Sean McNeil -- -- * configure.ac: Add x86_64-*-freebsd* support. -- * configure: Regenerate. -- --2004-04-26 Joe Buck -- -- Bug 15093 -- * configure.ac: Test for existence of mmap and sys/mman.h before -- checking blacklist. Fix suggested by Jim Wilson. -- * configure: Regenerate. -- --2004-04-26 Matt Austern -- -- * src/powerpc/darwin.S: Go through a non-lazy pointer for initial -- FDE location. -- * src/powerpc/darwin_closure.S: Likewise. -- --2004-04-24 Andreas Tobler -- -- * testsuite/libffi.call/cls_multi_schar.c (main): Fix initialization -- error. Reported by Thomas Heller . -- * testsuite/libffi.call/cls_multi_sshort.c (main): Likewise. -- * testsuite/libffi.call/cls_multi_ushort.c (main): Likewise. -- --2004-03-20 Matthias Klose -- -- * src/pa/linux.S: Fix typo. -- --2004-03-19 Matthias Klose -- -- * Makefile.am: Update. -- * Makefile.in: Regenerate. -- * src/pa/ffi.h.in: Remove. -- * src/pa/ffitarget.h: New file. -- --2004-02-10 Randolph Chung -- -- * Makefile.am: Add PA support. -- * Makefile.in: Regenerate. -- * include/Makefile.in: Regenerate. -- * configure.ac: Add PA target. -- * configure: Regenerate. -- * src/pa/ffi.c: New file. -- * src/pa/ffi.h.in: Add PA support. -- * src/pa/linux.S: New file. -- * prep_cif.c: Add PA support. -- --2004-03-16 Hosaka Yuji -- -- * src/types.c: Fix alignment size of X86_WIN32 case int64 and -- double. -- * src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type -- with ecif->cif->flags. -- (ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type -- with cif->flags. -- (ffi_prep_cif_machdep): Add X86_WIN32 struct case. -- (ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32. -- * src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b, -- sc_retstruct2b): Add for 1 or 2-bytes struct case. -- --2004-03-15 Kelley Cook -- -- * configure.in: Rename file to ... -- * configure.ac: ... this. -- * fficonfig.h.in: Regenerate. -- * Makefile.in: Regenerate. -- * include/Makefile.in: Regenerate. -- * testsuite/Makefile.in: Regenerate. -- --2004-03-12 Matt Austern -- -- * src/powerpc/darwin.S: Fix EH information so it corresponds to -- changes in EH format resulting from addition of linkonce support. -- * src/powerpc/darwin_closure.S: Likewise. -- --2004-03-11 Andreas Tobler -- Paolo Bonzini -- -- * Makefile.am (AUTOMAKE_OPTIONS): Set them. -- Remove VPATH. Remove rules for object files. Remove multilib support. -- (AM_CCASFLAGS): Add. -- * configure.in (AC_CONFIG_HEADERS): Relace AM_CONFIG_HEADER. -- (AC_PREREQ): Bump version to 2.59. -- (AC_INIT): Fill with version info and bug address. -- (ORIGINAL_LD_FOR_MULTILIBS): Remove. -- (AM_ENABLE_MULTILIB): Use this instead of AC_ARG_ENABLE. -- De-precious CC so that the right flags are passed down to multilibs. -- (AC_MSG_ERROR): Replace obsolete macro AC_ERROR. -- (AC_CONFIG_FILES): Replace obsolete macro AC_LINK_FILES. -- (AC_OUTPUT): Reorganize the output with AC_CONFIG_COMMANDS. -- * configure: Rebuilt. -- * aclocal.m4: Likewise. -- * Makefile.in, include/Makefile.in, testsuite/Makefile.in: Likewise. -- * fficonfig.h.in: Likewise. -- --2004-03-11 Andreas Schwab -- -- * src/ia64/ffi.c (ffi_prep_incoming_args_UNIX): Get floating point -- arguments from fp registers only for the first 8 parameter slots. -- Don't convert a float parameter when passed in memory. -- --2004-03-09 Hans-Peter Nilsson -- -- * configure: Regenerate for config/accross.m4 correction. -- --2004-02-25 Matt Kraai -- -- * src/powerpc/ffi.c (ffi_prep_args_SYSV): Change -- ecif->cif->bytes to bytes. -- (ffi_prep_cif_machdep): Add braces around nested if statement. -- --2004-02-09 Alan Modra -- -- * src/types.c (pointer): POWERPC64 has 8 byte pointers. -- -- * src/powerpc/ffi.c (ffi_prep_args64): Correct long double handling. -- (ffi_closure_helper_LINUX64): Fix typo. -- * testsuite/libffi.call/cls_align_longdouble.c: Pass -mlong-double-128 -- for powerpc64-*-*. -- * testsuite/libffi.call/float.c: Likewise. -- * testsuite/libffi.call/float2.c: Likewise. -- --2004-02-08 Alan Modra -- -- * src/powerpc/ffi.c (ffi_prep_cif_machdep ): Correct -- long double function return and long double arg handling. -- (ffi_closure_helper_LINUX64): Formatting. Delete unused "ng" var. -- Use "end_pfr" instead of "nf". Correct long double handling. -- Localise "temp". -- * src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double -- return value. -- * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate -- space for long double return value. Adjust stack frame and offsets. -- Load f2 long double return. -- --2004-02-07 Alan Modra -- -- * src/types.c: Use 16 byte long double for POWERPC64. -- --2004-01-25 Eric Botcazou -- -- * src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array -- when the structure return address is passed in %o0. -- (ffi_V9_return_struct): Rename into ffi_v9_layout_struct. -- (ffi_v9_layout_struct): Align the field following a nested structure -- on a word boundary. Use memmove instead of memcpy. -- (ffi_call): Update call to ffi_V9_return_struct. -- (ffi_prep_closure): Define 'ctx' only for V8. -- (ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8 -- and ffi_closure_sparc_inner_v9. -- (ffi_closure_sparc_inner_v8): Return long doubles by reference. -- Always skip the structure return address. For structures and long -- doubles, copy the argument directly. -- (ffi_closure_sparc_inner_v9): Skip the structure return address only -- if required. Shift the maximum floating-point slot accordingly. For -- big structures, copy the argument directly; otherwise, left-justify the -- argument and call ffi_v9_layout_struct to lay out the structure on -- the stack. -- * src/sparc/v8.S: Undef STACKFRAME before defining it. -- (ffi_closure_v8): Pass the structure return address. Update call to -- ffi_closure_sparc_inner_v8. Short-circuit FFI_TYPE_INT handling. -- Skip the 'unimp' insn when returning long doubles and structures. -- * src/sparc/v9.S: Undef STACKFRAME before defining it. -- (ffi_closure_v9): Increase the frame size by 2 words. Short-circuit -- FFI_TYPE_INT handling. Load structures both in integers and -- floating-point registers on return. -- * README: Update status of the SPARC port. -- --2004-01-24 Andreas Tobler -- -- * testsuite/libffi.call/pyobjc-tc.c (main): Treat result value -- as of type ffi_arg. -- * testsuite/libffi.call/struct3.c (main): Fix CHECK. -- --2004-01-22 Ulrich Weigand -- -- * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Treat result -- value as of type ffi_arg, not unsigned int. -- --2004-01-21 Michael Ritzert -- -- * ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead -- of the LHS. -- --2004-01-12 Andreas Tobler -- -- * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_32 for -- Solaris. -- --2004-01-08 Rainer Orth -- -- * testsuite/libffi.call/ffitest.h (allocate_mmap): Cast MAP_FAILED -- to void *. -- --2003-12-10 Richard Henderson -- -- * testsuite/libffi.call/cls_align_pointer.c: Cast pointers to -- size_t instead of int. -- --2003-12-04 Hosaka Yuji -- -- * testsuite/libffi.call/many_win32.c: Include . -- * testsuite/libffi.call/many_win32.c (main): Replace variable -- int i with unsigned long ul. -- -- * testsuite/libffi.call/cls_align_uint64.c: New test case. -- * testsuite/libffi.call/cls_align_sint64.c: Likewise. -- * testsuite/libffi.call/cls_align_uint32.c: Likewise. -- * testsuite/libffi.call/cls_align_sint32.c: Likewise. -- * testsuite/libffi.call/cls_align_uint16.c: Likewise. -- * testsuite/libffi.call/cls_align_sint16.c: Likewise. -- * testsuite/libffi.call/cls_align_float.c: Likewise. -- * testsuite/libffi.call/cls_align_double.c: Likewise. -- * testsuite/libffi.call/cls_align_longdouble.c: Likewise. -- * testsuite/libffi.call/cls_align_pointer.c: Likewise. -- --2003-12-02 Hosaka Yuji -- -- PR other/13221 -- * src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): -- Align arguments to 32 bits. -- --2003-12-01 Andreas Tobler -- -- PR other/13221 -- * testsuite/libffi.call/cls_multi_sshort.c: New test case. -- * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise. -- * testsuite/libffi.call/cls_multi_uchar.c: Likewise. -- * testsuite/libffi.call/cls_multi_schar.c: Likewise. -- * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise. -- * testsuite/libffi.call/cls_multi_ushort.c: Likewise. -- -- * testsuite/libffi.special/unwindtest.cc: Cosmetics. -- --2003-11-26 Kaveh R. Ghazi -- -- * testsuite/libffi.call/ffitest.h: Include . -- * testsuite/libffi.special/ffitestcxx.h: Likewise. -- --2003-11-22 Andreas Tobler -- -- * Makefile.in: Rebuilt. -- * configure: Likewise. -- * testsuite/libffi.special/unwindtest.cc: Convert the mmap to -- the right type. -- --2003-11-21 Andreas Jaeger -- Andreas Tobler -- -- * acinclude.m4: Add AC_FUNC_MMAP_BLACKLIST. -- * configure.in: Call AC_FUNC_MMAP_BLACKLIST. -- * Makefile.in: Rebuilt. -- * aclocal.m4: Likewise. -- * configure: Likewise. -- * fficonfig.h.in: Likewise. -- * testsuite/lib/libffi-dg.exp: Add include dir. -- * testsuite/libffi.call/ffitest.h: Add MMAP definitions. -- * testsuite/libffi.special/ffitestcxx.h: Likewise. -- * testsuite/libffi.call/closure_fn0.c: Use MMAP functionality -- for ffi_closure if available. -- * testsuite/libffi.call/closure_fn1.c: Likewise. -- * testsuite/libffi.call/closure_fn2.c: Likewise. -- * testsuite/libffi.call/closure_fn3.c: Likewise. -- * testsuite/libffi.call/closure_fn4.c: Likewise. -- * testsuite/libffi.call/closure_fn5.c: Likewise. -- * testsuite/libffi.call/cls_12byte.c: Likewise. -- * testsuite/libffi.call/cls_16byte.c: Likewise. -- * testsuite/libffi.call/cls_18byte.c: Likewise. -- * testsuite/libffi.call/cls_19byte.c: Likewise. -- * testsuite/libffi.call/cls_1_1byte.c: Likewise. -- * testsuite/libffi.call/cls_20byte.c: Likewise. -- * testsuite/libffi.call/cls_20byte1.c: Likewise. -- * testsuite/libffi.call/cls_24byte.c: Likewise. -- * testsuite/libffi.call/cls_2byte.c: Likewise. -- * testsuite/libffi.call/cls_3_1byte.c: Likewise. -- * testsuite/libffi.call/cls_3byte1.c: Likewise. -- * testsuite/libffi.call/cls_3byte2.c: Likewise. -- * testsuite/libffi.call/cls_4_1byte.c: Likewise. -- * testsuite/libffi.call/cls_4byte.c: Likewise. -- * testsuite/libffi.call/cls_5byte.c: Likewise. -- * testsuite/libffi.call/cls_64byte.c: Likewise. -- * testsuite/libffi.call/cls_6byte.c: Likewise. -- * testsuite/libffi.call/cls_7byte.c: Likewise. -- * testsuite/libffi.call/cls_8byte.c: Likewise. -- * testsuite/libffi.call/cls_9byte1.c: Likewise. -- * testsuite/libffi.call/cls_9byte2.c: Likewise. -- * testsuite/libffi.call/cls_double.c: Likewise. -- * testsuite/libffi.call/cls_float.c: Likewise. -- * testsuite/libffi.call/cls_schar.c: Likewise. -- * testsuite/libffi.call/cls_sint.c: Likewise. -- * testsuite/libffi.call/cls_sshort.c: Likewise. -- * testsuite/libffi.call/cls_uchar.c: Likewise. -- * testsuite/libffi.call/cls_uint.c: Likewise. -- * testsuite/libffi.call/cls_ulonglong.c: Likewise. -- * testsuite/libffi.call/cls_ushort.c: Likewise. -- * testsuite/libffi.call/nested_struct.c: Likewise. -- * testsuite/libffi.call/nested_struct1.c: Likewise. -- * testsuite/libffi.call/nested_struct2.c: Likewise. -- * testsuite/libffi.call/nested_struct3.c: Likewise. -- * testsuite/libffi.call/problem1.c: Likewise. -- * testsuite/libffi.special/unwindtest.cc: Likewise. -- --2003-11-20 Andreas Tobler -- -- * testsuite/lib/libffi-dg.exp: Make the -lgcc_s conditional. -- --2003-11-19 Andreas Tobler -- -- * testsuite/lib/libffi-dg.exp: Add DYLD_LIBRARY_PATH for darwin. -- Add -lgcc_s to additional flags. -- --2003-11-12 Andreas Tobler -- -- * configure.in, include/Makefile.am: PR libgcj/11147, install -- the ffitarget.h header file in a gcc versioned and target -- dependent place. -- * configure: Regenerated. -- * Makefile.in, include/Makefile.in: Likewise. -- * testsuite/Makefile.in: Likewise. -- --2003-11-09 Andreas Tobler -- -- * testsuite/libffi.call/closure_fn0.c: Print result and check -- with dg-output to make debugging easier. -- * testsuite/libffi.call/closure_fn1.c: Likewise. -- * testsuite/libffi.call/closure_fn2.c: Likewise. -- * testsuite/libffi.call/closure_fn3.c: Likewise. -- * testsuite/libffi.call/closure_fn4.c: Likewise. -- * testsuite/libffi.call/closure_fn5.c: Likewise. -- * testsuite/libffi.call/cls_12byte.c: Likewise. -- * testsuite/libffi.call/cls_16byte.c: Likewise. -- * testsuite/libffi.call/cls_18byte.c: Likewise. -- * testsuite/libffi.call/cls_19byte.c: Likewise. -- * testsuite/libffi.call/cls_1_1byte.c: Likewise. -- * testsuite/libffi.call/cls_20byte.c: Likewise. -- * testsuite/libffi.call/cls_20byte1.c: Likewise. -- * testsuite/libffi.call/cls_24byte.c: Likewise. -- * testsuite/libffi.call/cls_2byte.c: Likewise. -- * testsuite/libffi.call/cls_3_1byte.c: Likewise. -- * testsuite/libffi.call/cls_3byte1.c: Likewise. -- * testsuite/libffi.call/cls_3byte2.c: Likewise. -- * testsuite/libffi.call/cls_4_1byte.c: Likewise. -- * testsuite/libffi.call/cls_4byte.c: Likewise. -- * testsuite/libffi.call/cls_5byte.c: Likewise. -- * testsuite/libffi.call/cls_64byte.c: Likewise. -- * testsuite/libffi.call/cls_6byte.c: Likewise. -- * testsuite/libffi.call/cls_7byte.c: Likewise. -- * testsuite/libffi.call/cls_8byte.c: Likewise. -- * testsuite/libffi.call/cls_9byte1.c: Likewise. -- * testsuite/libffi.call/cls_9byte2.c: Likewise. -- * testsuite/libffi.call/cls_double.c: Likewise. -- * testsuite/libffi.call/cls_float.c: Likewise. -- * testsuite/libffi.call/cls_schar.c: Likewise. -- * testsuite/libffi.call/cls_sint.c: Likewise. -- * testsuite/libffi.call/cls_sshort.c: Likewise. -- * testsuite/libffi.call/cls_uchar.c: Likewise. -- * testsuite/libffi.call/cls_uint.c: Likewise. -- * testsuite/libffi.call/cls_ulonglong.c: Likewise. -- * testsuite/libffi.call/cls_ushort.c: Likewise. -- * testsuite/libffi.call/problem1.c: Likewise. -- -- * testsuite/libffi.special/unwindtest.cc: Make ffi_closure -- static. -- --2003-11-08 Andreas Tobler -- -- * testsuite/libffi.call/cls_9byte2.c: New test case. -- * testsuite/libffi.call/cls_9byte1.c: Likewise. -- * testsuite/libffi.call/cls_64byte.c: Likewise. -- * testsuite/libffi.call/cls_20byte1.c: Likewise. -- * testsuite/libffi.call/cls_19byte.c: Likewise. -- * testsuite/libffi.call/cls_18byte.c: Likewise. -- * testsuite/libffi.call/closure_fn4.c: Likewise. -- * testsuite/libffi.call/closure_fn5.c: Likewise. -- * testsuite/libffi.call/cls_schar.c: Likewise. -- * testsuite/libffi.call/cls_sint.c: Likewise. -- * testsuite/libffi.call/cls_sshort.c: Likewise. -- * testsuite/libffi.call/nested_struct2.c: Likewise. -- * testsuite/libffi.call/nested_struct3.c: Likewise. -- --2003-11-08 Andreas Tobler -- -- * testsuite/libffi.call/cls_double.c: Do a check on the result. -- * testsuite/libffi.call/cls_uchar.c: Likewise. -- * testsuite/libffi.call/cls_uint.c: Likewise. -- * testsuite/libffi.call/cls_ulonglong.c: Likewise. -- * testsuite/libffi.call/cls_ushort.c: Likewise. -- * testsuite/libffi.call/return_sc.c: Cleanup whitespaces. -- --2003-11-06 Andreas Tobler -- -- * src/prep_cif.c (ffi_prep_cif): Move the validity check after -- the initialization. -- --2003-10-23 Andreas Tobler -- -- * src/java_raw_api.c (ffi_java_ptrarray_to_raw): Replace -- FFI_ASSERT(FALSE) with FFI_ASSERT(0). -- --2003-10-22 David Daney -- -- * src/mips/ffitarget.h: Replace undefined UINT32 and friends with -- __attribute__((__mode__(__SI__))) and friends. -- --2003-10-22 Andreas Schwab -- -- * src/ia64/ffi.c: Replace FALSE/TRUE with false/true. -- --2003-10-21 Andreas Tobler -- -- * configure.in: AC_LINK_FILES(ffitarget.h). -- * configure: Regenerate. -- * Makefile.in: Likewise. -- * include/Makefile.in: Likewise. -- * testsuite/Makefile.in: Likewise. -- * fficonfig.h.in: Likewise. -- --2003-10-21 Paolo Bonzini -- Richard Henderson -- -- Avoid that ffi.h includes fficonfig.h. -- -- * Makefile.am (EXTRA_DIST): Include ffitarget.h files -- (TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX. -- (TARGET_SRC_MIPS_SGI): Removed. -- (MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX. -- (MIPS_SGI): Removed. -- (CLEANFILES): Removed. -- (mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New -- targets. -- * acconfig.h: Removed. -- * configure.in: Compute sizeofs only for double and long double. -- Use them to define and subst HAVE_LONG_DOUBLE. Include comments -- into AC_DEFINE instead of using acconfig.h. Create -- include/ffitarget.h instead of include/fficonfig.h. Rename -- MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree. -- AC_DEFINE EH_FRAME_FLAGS. -- * include/Makefile.am (DISTCLEANFILES): New automake macro. -- (hack_DATA): Add ffitarget.h. -- * include/ffi.h.in: Remove all system specific definitions. -- Declare raw API even if it is not installed, why bother? -- Use limits.h instead of SIZEOF_* to define ffi_type_*. Do -- not define EH_FRAME_FLAGS, it is in fficonfig.h now. Include -- ffitarget.h instead of fficonfig.h. Remove ALIGN macro. -- (UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead. -- * include/ffi_common.h (bool): Do not define. -- (ffi_assert): Accept failed assertion. -- (ffi_type_test): Return void and accept file/line. -- (FFI_ASSERT): Pass stringized failed assertion. -- (FFI_ASSERT_AT): New macro. -- (FFI_ASSERT_VALID_TYPE): New macro. -- (UINT8, SINT8, UINT16, SINT16, UINT32, SINT32, -- UINT64, SINT64): Define here with gcc's __attribute__ macro -- instead of in ffi.h -- (FLOAT32, ALIGN): Define here instead of in ffi.h -- * include/ffi-mips.h: Removed. Its content moved to -- src/mips/ffitarget.h after separating assembly and C sections. -- * src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c -- src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c, -- src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S, -- src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c: -- SIZEOF_ARG -> FFI_SIZEOF_ARG. -- * src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+). -- * src/debug.c (ffi_assert): Accept stringized failed assertion. -- (ffi_type_test): Rewritten. -- * src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call -- FFI_ASSERT_VALID_TYPE. -- * src/alpha/ffitarget.h, src/arm/ffitarget.h, -- src/ia64/ffitarget.h, src/m68k/ffitarget.h, -- src/mips/ffitarget.h, src/powerpc/ffitarget.h, -- src/s390/ffitarget.h, src/sh/ffitarget.h, -- src/sh64/ffitarget.h, src/sparc/ffitarget.h, -- src/x86/ffitarget.h: New files. -- * src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S, -- src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S, -- src/powerpc/aix.S, src/powerpc/darwin.S, -- src/powerpc/ffi_darwin.c, src/powerpc/linux64.S, -- src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S, -- src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S, -- src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S, -- src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S: -- include fficonfig.h -- --2003-10-20 Rainer Orth -- -- * src/mips/ffi.c: Use _ABIN32, _ABIO32 instead of external -- _MIPS_SIM_NABI32, _MIPS_SIM_ABI32. -- --2003-10-19 Andreas Tobler -- -- * src/powerpc/ffi_darwin.c (ffi_prep_args): Declare bytes again. -- Used when FFI_DEBUG = 1. -- --2003-10-14 Alan Modra -- -- * src/types.c (double, longdouble): Default POWERPC64 to 8 byte size -- and align. -- --2003-10-06 Rainer Orth -- -- * include/ffi_mips.h: Define FFI_MIPS_N32 for N32/N64 ABIs, -- FFI_MIPS_O32 for O32 ABI. -- --2003-10-01 Andreas Tobler -- -- * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_64 for -- SPARC64. Cleanup whitespaces. -- --2003-09-19 Andreas Tobler -- -- * testsuite/libffi.call/closure_fn0.c: Xfail mips, arm, -- strongarm, xscale. Cleanup whitespaces. -- * testsuite/libffi.call/closure_fn1.c: Likewise. -- * testsuite/libffi.call/closure_fn2.c: Likewise. -- * testsuite/libffi.call/closure_fn3.c: Likewise. -- * testsuite/libffi.call/cls_12byte.c: Likewise. -- * testsuite/libffi.call/cls_16byte.c: Likewise. -- * testsuite/libffi.call/cls_1_1byte.c: Likewise. -- * testsuite/libffi.call/cls_20byte.c: Likewise. -- * testsuite/libffi.call/cls_24byte.c: Likewise. -- * testsuite/libffi.call/cls_2byte.c: Likewise. -- * testsuite/libffi.call/cls_3_1byte.c: Likewise. -- * testsuite/libffi.call/cls_3byte1.c: Likewise. -- * testsuite/libffi.call/cls_3byte2.c: Likewise. -- * testsuite/libffi.call/cls_4_1byte.c: Likewise. -- * testsuite/libffi.call/cls_4byte.c: Likewise. -- * testsuite/libffi.call/cls_5byte.c: Likewise. -- * testsuite/libffi.call/cls_6byte.c: Likewise. -- * testsuite/libffi.call/cls_7byte.c: Likewise. -- * testsuite/libffi.call/cls_8byte.c: Likewise. -- * testsuite/libffi.call/cls_double.c: Likewise. -- * testsuite/libffi.call/cls_float.c: Likewise. -- * testsuite/libffi.call/cls_uchar.c: Likewise. -- * testsuite/libffi.call/cls_uint.c: Likewise. -- * testsuite/libffi.call/cls_ulonglong.c: Likewise. -- * testsuite/libffi.call/cls_ushort.c: Likewise. -- * testsuite/libffi.call/nested_struct.c: Likewise. -- * testsuite/libffi.call/nested_struct1.c: Likewise. -- * testsuite/libffi.call/problem1.c: Likewise. -- * testsuite/libffi.special/unwindtest.cc: Likewise. -- * testsuite/libffi.call/pyobjc-tc.c: Cleanup whitespaces. -- --2003-09-18 David Edelsohn -- -- * src/powerpc/aix.S: Cleanup whitespaces. -- * src/powerpc/aix_closure.S: Likewise. -- --2003-09-18 Andreas Tobler -- -- * src/powerpc/darwin.S: Cleanup whitespaces, comment formatting. -- * src/powerpc/darwin_closure.S: Likewise. -- * src/powerpc/ffi_darwin.c: Likewise. -- --2003-09-18 Andreas Tobler -- David Edelsohn -- -- * src/types.c (double): Add AIX and Darwin to the right TYPEDEF. -- * src/powerpc/aix_closure.S: Remove the pointer to the outgoing -- parameter stack. -- * src/powerpc/darwin_closure.S: Likewise. -- * src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures -- according to the Darwin/AIX ABI. -- (ffi_prep_cif_machdep): Likewise. -- (ffi_closure_helper_DARWIN): Likewise. -- Remove the outgoing parameter stack logic. Simplify the evaluation -- of the different CASE types. -- (ffi_prep_clousure): Avoid the casts on lvalues. Change the branch -- statement in the trampoline code. -- --2003-09-18 Kaz Kojima -- -- * src/sh/ffi.c (ffi_prep_args): Take account into the alignement -- for the register size. -- (ffi_closure_helper_SYSV): Handle the structure return value -- address correctly. -- (ffi_closure_helper_SYSV): Return the appropriate type when -- the registers are used for the structure return value. -- * src/sh/sysv.S (ffi_closure_SYSV): Fix the stack layout for -- the 64-bit return value. Update copyright years. -- --2003-09-17 Rainer Orth -- -- * testsuite/lib/libffi-dg.exp (libffi_target_compile): Search in -- srcdir for ffi_mips.h. -- --2003-09-12 Alan Modra -- -- * src/prep_cif.c (initialize_aggregate): Include tail padding in -- structure size. -- * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct -- placement of float result. -- * testsuite/libffi.special/unwindtest.cc (closure_test_fn1): Correct -- cast of "resp" for big-endian 64 bit machines. -- --2003-09-11 Alan Modra -- -- * src/types.c (double, longdouble): Merge identical SH and ARM -- typedefs, and add POWERPC64. -- * src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for -- struct split over gpr and rest. -- (ffi_prep_cif_machdep): Correct intarg_count for structures. -- * src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets. -- --2003-09-09 Andreas Tobler -- -- * src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct -- passing correctly. -- --2003-09-09 Alan Modra -- -- * configure: Regenerate. -- --2003-09-04 Andreas Tobler -- -- * Makefile.am: Remove build rules for ffitest. -- * Makefile.in: Rebuilt. -- --2003-09-04 Andreas Tobler -- -- * src/java_raw_api.c: Include to fix compiler warning -- about implicit declaration of abort(). -- --2003-09-04 Andreas Tobler -- -- * Makefile.am: Add dejagnu test framework. Fixes PR other/11411. -- * Makefile.in: Rebuilt. -- * configure.in: Add dejagnu test framework. -- * configure: Rebuilt. -- -- * testsuite/Makefile.am: New file. -- * testsuite/Makefile.in: Built -- * testsuite/lib/libffi-dg.exp: New file. -- * testsuite/config/default.exp: Likewise. -- * testsuite/libffi.call/call.exp: Likewise. -- * testsuite/libffi.call/ffitest.h: Likewise. -- * testsuite/libffi.call/closure_fn0.c: Likewise. -- * testsuite/libffi.call/closure_fn1.c: Likewise. -- * testsuite/libffi.call/closure_fn2.c: Likewise. -- * testsuite/libffi.call/closure_fn3.c: Likewise. -- * testsuite/libffi.call/cls_1_1byte.c: Likewise. -- * testsuite/libffi.call/cls_3_1byte.c: Likewise. -- * testsuite/libffi.call/cls_4_1byte.c: Likewise. -- * testsuite/libffi.call/cls_2byte.c: Likewise. -- * testsuite/libffi.call/cls_3byte1.c: Likewise. -- * testsuite/libffi.call/cls_3byte2.c: Likewise. -- * testsuite/libffi.call/cls_4byte.c: Likewise. -- * testsuite/libffi.call/cls_5byte.c: Likewise. -- * testsuite/libffi.call/cls_6byte.c: Likewise. -- * testsuite/libffi.call/cls_7byte.c: Likewise. -- * testsuite/libffi.call/cls_8byte.c: Likewise. -- * testsuite/libffi.call/cls_12byte.c: Likewise. -- * testsuite/libffi.call/cls_16byte.c: Likewise. -- * testsuite/libffi.call/cls_20byte.c: Likewise. -- * testsuite/libffi.call/cls_24byte.c: Likewise. -- * testsuite/libffi.call/cls_double.c: Likewise. -- * testsuite/libffi.call/cls_float.c: Likewise. -- * testsuite/libffi.call/cls_uchar.c: Likewise. -- * testsuite/libffi.call/cls_uint.c: Likewise. -- * testsuite/libffi.call/cls_ulonglong.c: Likewise. -- * testsuite/libffi.call/cls_ushort.c: Likewise. -- * testsuite/libffi.call/float.c: Likewise. -- * testsuite/libffi.call/float1.c: Likewise. -- * testsuite/libffi.call/float2.c: Likewise. -- * testsuite/libffi.call/many.c: Likewise. -- * testsuite/libffi.call/many_win32.c: Likewise. -- * testsuite/libffi.call/nested_struct.c: Likewise. -- * testsuite/libffi.call/nested_struct1.c: Likewise. -- * testsuite/libffi.call/pyobjc-tc.c: Likewise. -- * testsuite/libffi.call/problem1.c: Likewise. -- * testsuite/libffi.call/promotion.c: Likewise. -- * testsuite/libffi.call/return_ll.c: Likewise. -- * testsuite/libffi.call/return_sc.c: Likewise. -- * testsuite/libffi.call/return_uc.c: Likewise. -- * testsuite/libffi.call/strlen.c: Likewise. -- * testsuite/libffi.call/strlen_win32.c: Likewise. -- * testsuite/libffi.call/struct1.c: Likewise. -- * testsuite/libffi.call/struct2.c: Likewise. -- * testsuite/libffi.call/struct3.c: Likewise. -- * testsuite/libffi.call/struct4.c: Likewise. -- * testsuite/libffi.call/struct5.c: Likewise. -- * testsuite/libffi.call/struct6.c: Likewise. -- * testsuite/libffi.call/struct7.c: Likewise. -- * testsuite/libffi.call/struct8.c: Likewise. -- * testsuite/libffi.call/struct9.c: Likewise. -- * testsuite/libffi.special/special.exp: New file. -- * testsuite/libffi.special/ffitestcxx.h: Likewise. -- * testsuite/libffi.special/unwindtest.cc: Likewise. -- -- --2003-08-13 Kaz Kojima -- -- * src/sh/ffi.c (OFS_INT16): Set 0 for little endian case. Update -- copyright years. -- --2003-08-02 Alan Modra -- -- * src/powerpc/ffi.c (ffi_prep_args64): Modify for changed gcc -- structure passing. -- (ffi_closure_helper_LINUX64): Likewise. -- * src/powerpc/linux64.S: Remove code writing to parm save area. -- * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Use return -- address in lr from ffi_closure_helper_LINUX64 call to calculate -- table address. Optimize function tail. -- --2003-07-28 Andreas Tobler -- -- * src/sparc/ffi.c: Handle all floating point registers. -- * src/sparc/v9.S: Likewise. Fixes second part of PR target/11410. -- --2003-07-11 Gerald Pfeifer -- -- * README: Note that libffi is not part of GCC. Update the project -- URL and status. -- --2003-06-19 Franz Sirl -- -- * src/powerpc/ppc_closure.S: Include ffi.h. -- --2003-06-13 Rainer Orth -- -- * src/x86/sysv.S: Avoid gas-only .uleb128/.sleb128 directives. -- Use C style comments. -- --2003-06-13 Kaz Kojima -- -- * Makefile.am: Add SHmedia support. Fix a typo of SH support. -- * Makefile.in: Regenerate. -- * configure.in (sh64-*-linux*, sh5*-*-linux*): Add target. -- * configure: Regenerate. -- * include/ffi.h.in: Add SHmedia support. -- * src/sh64/ffi.c: New file. -- * src/sh64/sysv.S: New file. -- --2003-05-16 Jakub Jelinek -- -- * configure.in (HAVE_RO_EH_FRAME): Check whether .eh_frame section -- should be read-only. -- * configure: Rebuilt. -- * fficonfig.h.in: Rebuilt. -- * include/ffi.h.in (EH_FRAME_FLAGS): Define. -- * src/alpha/osf.S: Use EH_FRAME_FLAGS. -- * src/powerpc/linux64.S: Likewise. -- * src/powerpc/linux64_closure.S: Likewise. Include ffi.h. -- * src/powerpc/sysv.S: Use EH_FRAME_FLAGS. Use pcrel encoding -- if -fpic/-fPIC/-mrelocatable. -- * src/powerpc/powerpc_closure.S: Likewise. -- * src/sparc/v8.S: If HAVE_RO_EH_FRAME is defined, don't include -- #write in .eh_frame flags. -- * src/sparc/v9.S: Likewise. -- * src/x86/unix64.S: Use EH_FRAME_FLAGS. -- * src/x86/sysv.S: Likewise. Use pcrel encoding if -fpic/-fPIC. -- * src/s390/sysv.S: Use EH_FRAME_FLAGS. Include ffi.h. -- --2003-05-07 Jeff Sturm -- -- Fixes PR bootstrap/10656 -- * configure.in (HAVE_AS_REGISTER_PSEUDO_OP): Test assembler -- support for .register pseudo-op. -- * src/sparc/v8.S: Use it. -- * fficonfig.h.in: Rebuilt. -- * configure: Rebuilt. -- --2003-04-18 Jakub Jelinek -- -- * include/ffi.h.in (POWERPC64): Define if 64-bit. -- (enum ffi_abi): Add FFI_LINUX64 on POWERPC. -- Make it the default on POWERPC64. -- (FFI_TRAMPOLINE_SIZE): Define to 24 on POWERPC64. -- * configure.in: Change powerpc-*-linux* into powerpc*-*-linux*. -- * configure: Rebuilt. -- * src/powerpc/ffi.c (hidden): Define. -- (ffi_prep_args_SYSV): Renamed from -- ffi_prep_args. Cast pointers to unsigned long to shut up warnings. -- (NUM_GPR_ARG_REGISTERS64, NUM_FPR_ARG_REGISTERS64, -- ASM_NEEDS_REGISTERS64): New. -- (ffi_prep_args64): New function. -- (ffi_prep_cif_machdep): Handle FFI_LINUX64 ABI. -- (ffi_call): Likewise. -- (ffi_prep_closure): Likewise. -- (flush_icache): Surround by #ifndef POWERPC64. -- (ffi_dblfl): New union type. -- (ffi_closure_helper_SYSV): Use it to avoid aliasing problems. -- (ffi_closure_helper_LINUX64): New function. -- * src/powerpc/ppc_closure.S: Surround whole file by #ifndef -- __powerpc64__. -- * src/powerpc/sysv.S: Likewise. -- (ffi_call_SYSV): Rename ffi_prep_args to ffi_prep_args_SYSV. -- * src/powerpc/linux64.S: New file. -- * src/powerpc/linux64_closure.S: New file. -- * Makefile.am (EXTRA_DIST): Add src/powerpc/linux64.S and -- src/powerpc/linux64_closure.S. -- (TARGET_SRC_POWERPC): Likewise. -- -- * src/ffitest.c (closure_test_fn, closure_test_fn1, closure_test_fn2, -- closure_test_fn3): Fix result printing on big-endian 64-bit -- machines. -- (main): Print tst2_arg instead of uninitialized tst2_result. -- -- * src/ffitest.c (main): Hide what closure pointer really points to -- from the compiler. -- --2003-04-16 Richard Earnshaw -- -- * configure.in (arm-*-netbsdelf*): Add configuration. -- (configure): Regenerated. -- --2003-04-04 Loren J. Rittle -- -- * include/Makefile.in: Regenerate. -- --2003-03-21 Zdenek Dvorak -- -- * libffi/include/ffi.h.in: Define X86 instead of X86_64 in 32 -- bit mode. -- * libffi/src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): -- Receive closure pointer through parameter, read args using -- __builtin_dwarf_cfa. -- (FFI_INIT_TRAMPOLINE): Send closure reference through eax. -- --2003-03-12 Andreas Schwab -- -- * configure.in: Avoid trailing /. in toolexeclibdir. -- * configure: Rebuilt. -- --2003-03-03 Andreas Tobler -- -- * src/powerpc/darwin_closure.S: Recode to fit dynamic libraries. -- --2003-02-06 Andreas Tobler -- -- * libffi/src/powerpc/darwin_closure.S: -- Fix alignement bug, allocate 8 bytes for the result. -- * libffi/src/powerpc/aix_closure.S: -- Likewise. -- * libffi/src/powerpc/ffi_darwin.c: -- Update stackframe description for aix/darwin_closure.S. -- --2003-02-06 Jakub Jelinek -- -- * src/s390/ffi.c (ffi_closure_helper_SYSV): Add hidden visibility -- attribute. -- --2003-01-31 Christian Cornelssen , -- Andreas Schwab -- -- * configure.in: Adjust command to source config-ml.in to account -- for changes to the libffi_basedir definition. -- (libffi_basedir): Remove ${srcdir} from value and include trailing -- slash if nonempty. -- -- * configure: Regenerate. -- --2003-01-29 Franz Sirl -- -- * src/powerpc/ppc_closure.S: Recode to fit shared libs. -- --2003-01-28 Andrew Haley -- -- * include/ffi.h.in: Enable FFI_CLOSURES for x86_64. -- * src/x86/ffi64.c (ffi_prep_closure): New. -- (ffi_closure_UNIX64_inner): New. -- * src/x86/unix64.S (ffi_closure_UNIX64): New. -- --2003-01-27 Alexandre Oliva -- -- * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST. -- Remove USE_LIBDIR conditional. -- * Makefile.am (toolexecdir, toolexeclibdir): Don't override. -- * Makefile.in, configure: Rebuilt. -- --2003-01027 David Edelsohn -- -- * Makefile.am (TARGET_SRC_POWERPC_AIX): Fix typo. -- * Makefile.in: Regenerate. -- --2003-01-22 Andrew Haley -- -- * src/powerpc/darwin.S (_ffi_call_AIX): Add Augmentation size to -- unwind info. -- --2003-01-21 Andreas Tobler -- -- * src/powerpc/darwin.S: Add unwind info. -- * src/powerpc/darwin_closure.S: Likewise. -- --2003-01-14 Andrew Haley -- -- * src/x86/ffi64.c (ffi_prep_args): Check for void retval. -- (ffi_prep_cif_machdep): Likewise. -- * src/x86/unix64.S: Add unwind info. -- --2003-01-14 Andreas Jaeger -- -- * src/ffitest.c (main): Only use ffi_closures if those are -- supported. -- --2003-01-13 Andreas Tobler -- -- * libffi/src/ffitest.c -- add closure testcases -- --2003-01-13 Kevin B. Hendricks -- -- * libffi/src/powerpc/ffi.c -- fix alignment bug for float (4 byte aligned iso 8 byte) -- --2003-01-09 Geoffrey Keating -- -- * src/powerpc/ffi_darwin.c: Remove RCS version string. -- * src/powerpc/darwin.S: Remove RCS version string. -- --2003-01-03 Jeff Sturm -- -- * include/ffi.h.in: Add closure defines for SPARC, SPARC64. -- * src/ffitest.c (main): Use static storage for closure. -- * src/sparc/ffi.c (ffi_prep_closure, ffi_closure_sparc_inner): New. -- * src/sparc/v8.S (ffi_closure_v8): New. -- * src/sparc/v9.S (ffi_closure_v9): New. -- --2002-11-10 Ranjit Mathew -- -- * include/ffi.h.in: Added FFI_STDCALL ffi_type -- enumeration for X86_WIN32. -- * src/x86/win32.S: Added ffi_call_STDCALL function -- definition. -- * src/x86/ffi.c (ffi_call/ffi_raw_call): Added -- switch cases for recognising FFI_STDCALL and -- calling ffi_call_STDCALL if target is X86_WIN32. -- * src/ffitest.c (my_stdcall_strlen/stdcall_many): -- stdcall versions of the "my_strlen" and "many" -- test functions (for X86_WIN32). -- Added test cases to test stdcall invocation using -- these functions. -- --2002-12-02 Kaz Kojima -- -- * src/sh/sysv.S: Add DWARF2 unwind info. -- --2002-11-27 Ulrich Weigand -- -- * src/s390/sysv.S (.eh_frame section): Make section read-only. -- --2002-11-26 Jim Wilson -- -- * src/types.c (FFI_TYPE_POINTER): Has size 8 on IA64. -- --2002-11-23 H.J. Lu -- -- * acinclude.m4: Add dummy AM_PROG_LIBTOOL. -- Include ../config/accross.m4. -- * aclocal.m4; Rebuild. -- * configure: Likewise. -- --2002-11-15 Ulrich Weigand -- -- * src/s390/sysv.S (.eh_frame section): Adapt to pcrel FDE encoding. -- --2002-11-11 DJ Delorie -- -- * configure.in: Look for common files in the right place. -- --2002-10-08 Ulrich Weigand -- -- * src/java_raw_api.c (ffi_java_raw_to_ptrarray): Interpret -- raw data as _Jv_word values, not ffi_raw. -- (ffi_java_ptrarray_to_raw): Likewise. -- (ffi_java_rvalue_to_raw): New function. -- (ffi_java_raw_call): Call it. -- (ffi_java_raw_to_rvalue): New function. -- (ffi_java_translate_args): Call it. -- * src/ffitest.c (closure_test_fn): Interpret return value -- as ffi_arg, not int. -- * src/s390/ffi.c (ffi_prep_cif_machdep): Add missing -- FFI_TYPE_POINTER case. -- (ffi_closure_helper_SYSV): Likewise. Also, assume return -- values extended to word size. -- --2002-10-02 Andreas Jaeger -- -- * src/x86/ffi64.c (ffi_prep_cif_machdep): Remove debug output. -- --2002-10-01 Bo Thorsen -- -- * include/ffi.h.in: Fix i386 win32 compilation. -- --2002-09-30 Ulrich Weigand -- -- * configure.in: Add s390x-*-linux-* target. -- * configure: Regenerate. -- * include/ffi.h.in: Define S390X for s390x targets. -- (FFI_CLOSURES): Define for s390/s390x. -- (FFI_TRAMPOLINE_SIZE): Likewise. -- (FFI_NATIVE_RAW_API): Likewise. -- * src/prep_cif.c (ffi_prep_cif): Do not compute stack space for s390. -- * src/types.c (FFI_TYPE_POINTER): Use 8-byte pointers on s390x. -- * src/s390/ffi.c: Major rework of existing code. Add support for -- s390x targets. Add closure support. -- * src/s390/sysv.S: Likewise. -- --2002-09-29 Richard Earnshaw -- -- * src/arm/sysv.S: Fix typo. -- --2002-09-28 Richard Earnshaw -- -- * src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor -- has defined __USER_LABEL_PREFIX__, then use it in CNAME. -- (ffi_call_SYSV): Handle soft-float. -- --2002-09-27 Bo Thorsen -- -- * include/ffi.h.in: Fix multilib x86-64 support. -- --2002-09-22 Kaveh R. Ghazi -- -- * Makefile.am (all-multi): Fix multilib parallel build. -- --2002-07-19 Kaz Kojima -- -- * configure.in (sh[34]*-*-linux*): Add brackets. -- * configure: Regenerate. -- --2002-07-18 Kaz Kojima -- -- * Makefile.am: Add SH support. -- * Makefile.in: Regenerate. -- * configure.in (sh-*-linux*, sh[34]*-*-linux*): Add target. -- * configure: Regenerate. -- * include/ffi.h.in: Add SH support. -- * src/sh/ffi.c: New file. -- * src/sh/sysv.S: New file. -- * src/types.c: Add SH support. -- --2002-07-16 Bo Thorsen -- -- * src/x86/ffi64.c: New file that adds x86-64 support. -- * src/x86/unix64.S: New file that handles argument setup for -- x86-64. -- * src/x86/sysv.S: Don't use this on x86-64. -- * src/x86/ffi.c: Don't use this on x86-64. -- Remove unused vars. -- * src/prep_cif.c (ffi_prep_cif): Don't do stack size calculation -- for x86-64. -- * src/ffitest.c (struct6): New test that tests a special case in -- the x86-64 ABI. -- (struct7): Likewise. -- (struct8): Likewise. -- (struct9): Likewise. -- (closure_test_fn): Silence warning about this when it's not used. -- (main): Add the new tests. -- (main): Fix a couple of wrong casts and silence some compiler warnings. -- * include/ffi.h.in: Add x86-64 ABI definition. -- * fficonfig.h.in: Regenerate. -- * Makefile.am: Add x86-64 support. -- * configure.in: Likewise. -- * Makefile.in: Regenerate. -- * configure: Likewise. -- --2002-06-24 Bo Thorsen -- -- * src/types.c: Merge settings for similar architectures. -- Add x86-64 sizes and alignments. -- --2002-06-23 Bo Thorsen -- -- * src/arm/ffi.c (ffi_prep_args): Remove unused vars. -- * src/sparc/ffi.c (ffi_prep_args_v8): Likewise. -- * src/mips/ffi.c (ffi_prep_args): Likewise. -- * src/m68k/ffi.c (ffi_prep_args): Likewise. -- --2002-07-18 H.J. Lu (hjl@gnu.org) -- -- * Makefile.am (TARGET_SRC_MIPS_LINUX): New. -- (libffi_la_SOURCES): Support MIPS_LINUX. -- (libffi_convenience_la_SOURCES): Likewise. -- * Makefile.in: Regenerated. -- -- * configure.in (mips64*-*): Skip. -- (mips*-*-linux*): New. -- * configure: Regenerated. -- -- * src/mips/ffi.c: Include . -- --2002-06-06 Ulrich Weigand -- -- * src/s390/sysv.S: Save/restore %r6. Add DWARF-2 unwind info. -- --2002-05-27 Roger Sayle -- -- * src/x86/ffi.c (ffi_prep_args): Remove reference to avn. -- --2002-05-27 Bo Thorsen -- -- * src/x86/ffi.c (ffi_prep_args): Remove unused variable and -- fix formatting. -- --2002-05-13 Andreas Tobler -- -- * src/powerpc/ffi_darwin.c (ffi_prep_closure): Declare fd at -- beginning of function (for older apple cc). -- --2002-05-08 Alexandre Oliva -- -- * configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at -- script entry, and set LD to it when configuring multilibs. -- * configure: Rebuilt. -- --2002-05-05 Jason Thorpe -- -- * configure.in (sparc64-*-netbsd*): Add target. -- (sparc-*-netbsdelf*): Likewise. -- * configure: Regenerate. -- --2002-04-28 David S. Miller -- -- * configure.in, configure: Fix SPARC test in previous change. -- --2002-04-29 Gerhard Tonn -- -- * Makefile.am: Add Linux for S/390 support. -- * Makefile.in: Regenerate. -- * configure.in: Add Linux for S/390 support. -- * configure: Regenerate. -- * include/ffi.h.in: Add Linux for S/390 support. -- * src/s390/ffi.c: New file from libffi CVS tree. -- * src/s390/sysv.S: New file from libffi CVS tree. -- --2002-04-28 Jakub Jelinek -- -- * configure.in (HAVE_AS_SPARC_UA_PCREL): Check for working -- %r_disp32(). -- * src/sparc/v8.S: Use it. -- * src/sparc/v9.S: Likewise. -- * fficonfig.h.in: Rebuilt. -- * configure: Rebuilt. -- --2002-04-08 Hans Boehm -- -- * src/java_raw_api.c (ffi_java_raw_size): Handle FFI_TYPE_DOUBLE -- correctly. -- * src/ia64/unix.S: Add unwind information. Fix comments. -- Save sp in a way that's compatible with unwind info. -- (ffi_call_unix): Correctly restore sp in all cases. -- * src/ia64/ffi.c: Add, fix comments. -- --2002-04-08 Jakub Jelinek -- -- * src/sparc/v8.S: Make .eh_frame dependent on target word size. -- --2002-04-06 Jason Thorpe -- -- * configure.in (alpha*-*-netbsd*): Add target. -- * configure: Regenerate. -- --2002-04-04 Jeff Sturm -- -- * src/sparc/v8.S: Add unwind info. -- * src/sparc/v9.S: Likewise. -- --2002-03-30 Krister Walfridsson -- -- * configure.in: Enable i*86-*-netbsdelf*. -- * configure: Rebuilt. -- --2002-03-29 David Billinghurst -- -- PR other/2620 -- * src/mips/n32.s: Delete -- * src/mips/o32.s: Delete -- --2002-03-21 Loren J. Rittle -- -- * configure.in: Enable alpha*-*-freebsd*. -- * configure: Rebuilt. -- --2002-03-17 Bryce McKinlay -- -- * Makefile.am: libfficonvenience -> libffi_convenience. -- * Makefile.in: Rebuilt. -- -- * Makefile.am: Define ffitest_OBJECTS. -- * Makefile.in: Rebuilt. -- --2002-03-07 Andreas Tobler -- David Edelsohn -- -- * Makefile.am (EXTRA_DIST): Add Darwin and AIX closure files. -- (TARGET_SRC_POWERPC_AIX): Add aix_closure.S. -- (TARGET_SRC_POWERPC_DARWIN): Add darwin_closure.S. -- * Makefile.in: Regenerate. -- * include/ffi.h.in: Add AIX and Darwin closure definitions. -- * src/powerpc/ffi_darwin.c (ffi_prep_closure): New function. -- (flush_icache, flush_range): New functions. -- (ffi_closure_helper_DARWIN): New function. -- * src/powerpc/aix_closure.S: New file. -- * src/powerpc/darwin_closure.S: New file. -- --2002-02-24 Jeff Sturm -- -- * include/ffi.h.in: Add typedef for ffi_arg. -- * src/ffitest.c (main): Declare rint with ffi_arg. -- --2002-02-21 Andreas Tobler -- -- * src/powerpc/ffi_darwin.c (ffi_prep_args): Skip appropriate -- number of GPRs for floating-point arguments. -- --2002-01-31 Anthony Green -- -- * configure: Rebuilt. -- * configure.in: Replace CHECK_SIZEOF and endian tests with -- cross-compiler friendly macros. -- * aclocal.m4 (AC_COMPILE_CHECK_SIZEOF, AC_C_BIGENDIAN_CROSS): New -- macros. -- --2002-01-18 David Edelsohn -- -- * src/powerpc/darwin.S (_ffi_call_AIX): New. -- * src/powerpc/aix.S (ffi_call_DARWIN): New. -- --2002-01-17 David Edelsohn -- -- * Makefile.am (EXTRA_DIST): Add Darwin and AIX files. -- (TARGET_SRC_POWERPC_AIX): New. -- (POWERPC_AIX): New stanza. -- * Makefile.in: Regenerate. -- * configure.in: Add AIX case. -- * configure: Regenerate. -- * include/ffi.h.in (ffi_abi): Add FFI_AIX. -- * src/powerpc/ffi_darwin.c (ffi_status): Use "long" to scale frame -- size. Fix "long double" support. -- (ffi_call): Add FFI_AIX case. -- * src/powerpc/aix.S: New. -- --2001-10-09 John Hornkvist -- -- Implement Darwin PowerPC ABI. -- * configure.in: Handle powerpc-*-darwin*. -- * Makefile.am: Set source files for POWERPC_DARWIN. -- * configure: Rebuilt. -- * Makefile.in: Rebuilt. -- * include/ffi.h.in: Define FFI_DARWIN and FFI_DEFAULT_ABI for -- POWERPC_DARWIN. -- * src/powerpc/darwin.S: New file. -- * src/powerpc/ffi_darwin.c: New file. -- --2001-10-07 Joseph S. Myers -- -- * src/x86/ffi.c: Fix spelling error of "separate" as "seperate". -- --2001-07-16 Rainer Orth -- -- * src/x86/sysv.S: Avoid gas-only .balign directive. -- Use C style comments. -- --2001-07-16 Rainer Orth -- -- * src/alpha/ffi.c (ffi_prep_closure): Avoid gas-only mnemonic. -- Fixes PR bootstrap/3563. -- --2001-06-26 Rainer Orth -- -- * src/alpha/osf.S (ffi_closure_osf): Use .rdata for ECOFF. -- --2001-06-25 Rainer Orth -- -- * configure.in: Recognize sparc*-sun-* host. -- * configure: Regenerate. -- --2001-06-06 Andrew Haley -- -- * src/alpha/osf.S (__FRAME_BEGIN__): Conditionalize for ELF. -- --2001-06-03 Andrew Haley -- -- * src/alpha/osf.S: Add unwind info. -- * src/powerpc/sysv.S: Add unwind info. -- * src/powerpc/ppc_closure.S: Likewise. -- --2000-05-31 Jeff Sturm -- -- * configure.in: Fix AC_ARG_ENABLE usage. -- * configure: Rebuilt. -- --2001-05-06 Bryce McKinlay -- -- * configure.in: Remove warning about beta code. -- * configure: Rebuilt. -- --2001-04-25 Hans Boehm -- -- * src/ia64/unix.S: Restore stack pointer when returning from -- ffi_closure_UNIX. -- * src/ia64/ffi.c: Fix typo in comment. -- --2001-04-18 Jim Wilson -- -- * src/ia64/unix.S: Delete unnecessary increment and decrement of loc2 -- to eliminate RAW DV. -- --2001-04-12 Bryce McKinlay -- -- * Makefile.am: Make a libtool convenience library. -- * Makefile.in: Rebuilt. -- --2001-03-29 Bryce McKinlay -- -- * configure.in: Use different syntax for subdirectory creation. -- * configure: Rebuilt. -- --2001-03-27 Jon Beniston -- -- * configure.in: Added X86_WIN32 target (Win32, CygWin, MingW). -- * configure: Rebuilt. -- * Makefile.am: Added X86_WIN32 target support. -- * Makefile.in: Rebuilt. -- -- * include/ffi.h.in: Added X86_WIN32 target support. -- -- * src/ffitest.c: Doesn't run structure tests for X86_WIN32 targets. -- * src/types.c: Added X86_WIN32 target support. -- -- * src/x86/win32.S: New file. Based on sysv.S, but with EH -- stuff removed and made to work with CygWin's gas. -- --2001-03-26 Bryce McKinlay -- -- * configure.in: Make target subdirectory in build dir. -- * Makefile.am: Override suffix based rules to specify correct output -- subdirectory. -- * Makefile.in: Rebuilt. -- * configure: Rebuilt. -- --2001-03-23 Kevin B Hendricks -- -- * src/powerpc/ppc_closure.S: New file. -- * src/powerpc/ffi.c (ffi_prep_args): Fixed ABI compatibility bug -- involving long long and register pairs. -- (ffi_prep_closure): New function. -- (flush_icache): Likewise. -- (ffi_closure_helper_SYSV): Likewise. -- * include/ffi.h.in (FFI_CLOSURES): Define on PPC. -- (FFI_TRAMPOLINE_SIZE): Likewise. -- (FFI_NATIVE_RAW_API): Likewise. -- * Makefile.in: Rebuilt. -- * Makefile.am (EXTRA_DIST): Added src/powerpc/ppc_closure.S. -- (TARGET_SRC_POWERPC): Likewise. -- --2001-03-19 Tom Tromey -- -- * Makefile.in: Rebuilt. -- * Makefile.am (ffitest_LDFLAGS): New macro. -- --2001-03-02 Nick Clifton -- -- * include/ffi.h.in: Remove RCS ident string. -- * include/ffi_mips.h: Remove RCS ident string. -- * src/debug.c: Remove RCS ident string. -- * src/ffitest.c: Remove RCS ident string. -- * src/prep_cif.c: Remove RCS ident string. -- * src/types.c: Remove RCS ident string. -- * src/alpha/ffi.c: Remove RCS ident string. -- * src/alpha/osf.S: Remove RCS ident string. -- * src/arm/ffi.c: Remove RCS ident string. -- * src/arm/sysv.S: Remove RCS ident string. -- * src/mips/ffi.c: Remove RCS ident string. -- * src/mips/n32.S: Remove RCS ident string. -- * src/mips/o32.S: Remove RCS ident string. -- * src/sparc/ffi.c: Remove RCS ident string. -- * src/sparc/v8.S: Remove RCS ident string. -- * src/sparc/v9.S: Remove RCS ident string. -- * src/x86/ffi.c: Remove RCS ident string. -- * src/x86/sysv.S: Remove RCS ident string. -- --2001-02-08 Joseph S. Myers -- -- * include/ffi.h.in: Change sourceware.cygnus.com references to -- gcc.gnu.org. -- --2000-12-09 Richard Henderson -- -- * src/alpha/ffi.c (ffi_call): Simplify struct return test. -- (ffi_closure_osf_inner): Index rather than increment avalue -- and arg_types. Give ffi_closure_osf the raw return value type. -- * src/alpha/osf.S (ffi_closure_osf): Handle return value type -- promotion. -- --2000-12-07 Richard Henderson -- -- * src/raw_api.c (ffi_translate_args): Fix typo. -- (ffi_prep_closure): Likewise. -- -- * include/ffi.h.in [ALPHA]: Define FFI_CLOSURES and -- FFI_TRAMPOLINE_SIZE. -- * src/alpha/ffi.c (ffi_prep_cif_machdep): Adjust minimal -- cif->bytes for new ffi_call_osf implementation. -- (ffi_prep_args): Absorb into ... -- (ffi_call): ... here. Do all stack allocation here and -- avoid a callback function. -- (ffi_prep_closure, ffi_closure_osf_inner): New. -- * src/alpha/osf.S (ffi_call_osf): Reimplement with no callback. -- (ffi_closure_osf): New. -- --2000-09-10 Alexandre Oliva -- -- * config.guess, config.sub, install-sh: Removed. -- * ltconfig, ltmain.sh, missing, mkinstalldirs: Likewise. -- * Makefile.in: Rebuilt. -- -- * acinclude.m4: Include libtool macros from the top level. -- * aclocal.m4, configure: Rebuilt. -- --2000-08-22 Alexandre Oliva -- -- * configure.in [i*86-*-freebsd*] (TARGET, TARGETDIR): Set. -- * configure: Rebuilt. -- --2000-05-11 Scott Bambrough -- -- * libffi/src/arm/sysv.S (ffi_call_SYSV): Doubles are not saved to -- memory correctly. Use conditional instructions, not branches where -- possible. -- --2000-05-04 Tom Tromey -- -- * configure: Rebuilt. -- * configure.in: Match `arm*-*-linux-*'. -- From Chris Dornan . -- --2000-04-28 Jakub Jelinek -- -- * Makefile.am (SUBDIRS): Define. -- (AM_MAKEFLAGS): Likewise. -- (Multilib support.): Add section. -- * Makefile.in: Rebuilt. -- * ltconfig (extra_compiler_flags, extra_compiler_flags_value): -- New variables. Set for gcc using -print-multi-lib. Export them -- to libtool. -- (sparc64-*-linux-gnu*): Use libsuff 64 for search paths. -- * ltmain.sh (B|b|V): Don't throw away gcc's -B, -b and -V options -- for -shared links. -- (extra_compiler_flags_value, extra_compiler_flags): Check these -- for extra compiler options which need to be passed down in -- compiler_flags. -- --2000-04-16 Anthony Green -- -- * configure: Rebuilt. -- * configure.in: Change i*86-pc-linux* to i*86-*-linux*. -- --2000-04-14 Jakub Jelinek -- -- * include/ffi.h.in (SPARC64): Define for 64bit SPARC builds. -- Set SPARC FFI_DEFAULT_ABI based on SPARC64 define. -- * src/sparc/ffi.c (ffi_prep_args_v8): Renamed from ffi_prep_args. -- Replace all void * sizeofs with sizeof(int). -- Only compare type with FFI_TYPE_LONGDOUBLE if LONGDOUBLE is -- different than DOUBLE. -- Remove FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases (handled elsewhere). -- (ffi_prep_args_v9): New function. -- (ffi_prep_cif_machdep): Handle V9 ABI and long long on V8. -- (ffi_V9_return_struct): New function. -- (ffi_call): Handle FFI_V9 ABI from 64bit code and FFI_V8 ABI from -- 32bit code (not yet cross-arch calls). -- * src/sparc/v8.S: Add struct return delay nop. -- Handle long long. -- * src/sparc/v9.S: New file. -- * src/prep_cif.c (ffi_prep_cif): Return structure pointer -- is used on sparc64 only for structures larger than 32 bytes. -- Pass by reference for structures is done for structure arguments -- larger than 16 bytes. -- * src/ffitest.c (main): Use 64bit rint on sparc64. -- Run long long tests on sparc. -- * src/types.c (FFI_TYPE_POINTER): Pointer is 64bit on alpha and -- sparc64. -- (FFI_TYPE_LONGDOUBLE): long double is 128 bit aligned to 128 bits -- on sparc64. -- * configure.in (sparc-*-linux*): New supported target. -- (sparc64-*-linux*): Likewise. -- * configure: Rebuilt. -- * Makefile.am: Add v9.S to SPARC files. -- * Makefile.in: Likewise. -- (LINK): Surround $(CCLD) into double quotes, so that multilib -- compiles work correctly. -- --2000-04-04 Alexandre Petit-Bianco -- -- * configure: Rebuilt. -- * configure.in: (i*86-*-solaris*): New libffi target. Patch -- proposed by Bryce McKinlay. -- --2000-03-20 Tom Tromey -- -- * Makefile.in: Hand edit for java_raw_api.lo. -- --2000-03-08 Bryce McKinlay -- -- * config.guess, config.sub: Update from the gcc tree. -- Fix for PR libgcj/168. -- --2000-03-03 Tom Tromey -- -- * Makefile.in: Fixed ia64 by hand. -- -- * configure: Rebuilt. -- * configure.in (--enable-multilib): New option. -- (libffi_basedir): New subst. -- (AC_OUTPUT): Added multilib code. -- --2000-03-02 Tom Tromey -- -- * Makefile.in: Rebuilt. -- * Makefile.am (TARGET_SRC_IA64): Use `ia64', not `alpha', as -- directory name. -- --2000-02-25 Hans Boehm -- -- * src/ia64/ffi.c, src/ia64/ia64_flags.h, src/ia64/unix.S: New -- files. -- * src/raw_api.c (ffi_translate_args): Fixed typo in argument -- list. -- (ffi_prep_raw_closure): Use ffi_translate_args, not -- ffi_closure_translate. -- * src/java_raw_api.c: New file. -- * src/ffitest.c (closure_test_fn): New function. -- (main): Define `rint' as long long on IA64. Added new test when -- FFI_CLOSURES is defined. -- * include/ffi.h.in (ALIGN): Use size_t, not unsigned. -- (ffi_abi): Recognize IA64. -- (ffi_raw): Added `flt' field. -- Added "Java raw API" code. -- * configure.in: Recognize ia64. -- * Makefile.am (TARGET_SRC_IA64): New macro. -- (libffi_la_common_SOURCES): Added java_raw_api.c. -- (libffi_la_SOURCES): Define in IA64 case. -- --2000-01-04 Tom Tromey -- -- * Makefile.in: Rebuilt with newer automake. -- --1999-12-31 Tom Tromey -- -- * Makefile.am (INCLUDES): Added -I$(top_srcdir)/src. -- --1999-09-01 Tom Tromey -- -- * include/ffi.h.in: Removed PACKAGE and VERSION defines and -- undefs. -- * fficonfig.h.in: Rebuilt. -- * configure: Rebuilt. -- * configure.in: Pass 3rd argument to AM_INIT_AUTOMAKE. -- Use AM_PROG_LIBTOOL (automake 1.4 compatibility). -- * acconfig.h: Don't #undef PACKAGE or VERSION. -- --1999-08-09 Anthony Green -- -- * include/ffi.h.in: Try to work around messy header problem -- with PACKAGE and VERSION. -- -- * configure: Rebuilt. -- * configure.in: Change version to 2.00-beta. -- -- * fficonfig.h.in: Rebuilt. -- * acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define. -- -- * src/x86/ffi.c (ffi_raw_call): Rename. -- --1999-08-02 Kresten Krab Thorup -- -- * src/x86/ffi.c (ffi_closure_SYSV): New function. -- (ffi_prep_incoming_args_SYSV): Ditto. -- (ffi_prep_closure): Ditto. -- (ffi_closure_raw_SYSV): Ditto. -- (ffi_prep_raw_closure): More ditto. -- (ffi_call_raw): Final ditto. -- -- * include/ffi.h.in: Add definitions for closure and raw API. -- -- * src/x86/ffi.c (ffi_prep_cif_machdep): Added case for -- FFI_TYPE_UINT64. -- -- * Makefile.am (libffi_la_common_SOURCES): Added raw_api.c -- -- * src/raw_api.c: New file. -- -- * include/ffi.h.in (ffi_raw): New type. -- (UINT_ARG, SINT_ARG): New defines. -- (ffi_closure, ffi_raw_closure): New types. -- (ffi_prep_closure, ffi_prep_raw_closure): New declarations. -- -- * configure.in: Add check for endianness and sizeof void*. -- -- * src/x86/sysv.S (ffi_call_SYSV): Call fixup routine via argument, -- instead of directly. -- -- * configure: Rebuilt. -- --Thu Jul 8 14:28:42 1999 Anthony Green -- -- * configure.in: Add x86 and powerpc BeOS configurations. -- From Makoto Kato . -- --1999-05-09 Anthony Green -- -- * configure.in: Add warning about this being beta code. -- Remove src/Makefile.am from the picture. -- * configure: Rebuilt. -- -- * Makefile.am: Move logic from src/Makefile.am. Add changes -- to support libffi as a target library. -- * Makefile.in: Rebuilt. -- -- * aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh: -- Upgraded to new autoconf, automake, libtool. -- -- * README: Tweaks. -- -- * LICENSE: Update copyright date. -- -- * src/Makefile.am, src/Makefile.in: Removed. -- --1998-11-29 Anthony Green -- -- * include/ChangeLog: Removed. -- * src/ChangeLog: Removed. -- * src/mips/ChangeLog: Removed. -- * src/sparc/ChangeLog: Remboved. -- * src/x86/ChangeLog: Removed. -- -- * ChangeLog.v1: Created. -+commit c860a992fef5d7cd7bb0975b1632d17a9fafe007 -+Author: Anthony Green -+Date: Tue Mar 25 17:02:51 2014 -0400 -+ -+ Upgrade version to 3.1-rc1 -+ -+commit 9837073e6203048a162a226798c5d252600219ed -+Author: Anthony Green -+Date: Tue Mar 25 16:24:14 2014 -0400 -+ -+ Update copyright date and clean up README notes. -+ -+commit 18d3baa9f597b026675baa1b4e5a5eeef7577a08 -+Merge: afee537 f0c8a31 -+Author: Anthony Green -+Date: Tue Mar 25 16:12:53 2014 -0400 -+ -+ Merge pull request #108 from joshtriplett/freebsd -+ -+ [3.1 blocker] Fix FreeBSD support -+ -+commit afee53738a995e23bd2f89fd0f7b30b380566106 -+Merge: 7d24785 b2d610e -+Author: Anthony Green -+Date: Tue Mar 25 16:12:35 2014 -0400 -+ -+ Merge pull request #106 from joshtriplett/darwin-award -+ -+ [3.1 blocker] Update OS X build system to include win32.S on 32-bit -+ -+commit 7d2478568ed9f03cbf57627f449a2d2cf4d1571c -+Merge: beab5f3 56be47f -+Author: Anthony Green -+Date: Tue Mar 25 16:12:17 2014 -0400 -+ -+ Merge pull request #110 from joshtriplett/w64 -+ -+ Fix 64-bit Windows support -+ -+commit beab5f334d9ec5b8b91d1cc727d1029b40358e7e -+Merge: 28fb197 ef5890e -+Author: Anthony Green -+Date: Tue Mar 25 16:07:47 2014 -0400 -+ -+ Merge pull request #105 from joshtriplett/win32-relocations -+ -+ [3.1 blocker] win32.S needs to handle relocations/GOT -+ -+commit f0c8a31577172104049283f0a80c723084a5bd77 -+Author: Josh Triplett -+Date: Mon Mar 24 22:14:26 2014 -0700 -+ -+ Compile win32.S on FreeBSD -+ -+commit b2d610e028b5ce48d1ad7e5d0debc9c321d891b2 -+Author: Josh Triplett -+Date: Fri Mar 21 11:10:13 2014 -0700 -+ -+ Compile win32.S on 32-bit Darwin as well -+ -+commit be50b87a490e794362cb4a27ada2fbaab202adb8 -+Author: Josh Triplett -+Date: Mon Mar 24 21:44:13 2014 -0700 -+ -+ Always use configure to detect whether global symbols need underscores -+ -+ 64-bit Windows already used this check; make it universal, and use it in -+ place of an ifdef on X86_WIN32, to handle non-Windows platforms that use -+ the underscore, such as Darwin. -+ -+commit 56be47f87629e31afbcb0774aa65735f539ee972 -+Author: Josh Triplett -+Date: Mon Mar 24 21:24:53 2014 -0700 -+ -+ Fix a warning on 64-bit Windows -+ -+ When sizeof(size_t) != sizeof(unsigned), adding a size_t to cif->bytes -+ produces a "possible loss of data" warning. However, the size_t in -+ question refers to the size of a single parameter. Use a cast to avoid -+ the warning. -+ -+commit 48a8eda74aad8a21b6f26df5df08fe64c043d208 -+Author: Josh Triplett -+Date: Mon Mar 24 21:21:12 2014 -0700 -+ -+ Avoid referencing undefined ABIs on 64-bit Windows builds -+ -+ 64-bit Windows does not have FFI_STDCALL, FFI_THISCALL, or FFI_FASTCALL. -+ -+commit f0f4138f90345d7d67dfa6783a7e1c7cc30d3c6f -+Author: Josh Triplett -+Date: Sat Mar 22 10:00:53 2014 -0700 -+ -+ win32.S: Add handling for position-independent code on Darwin -+ -+ Newer versions of Darwin generate the necessary stub functions -+ automatically and just need a call instruction, but accomodating older -+ versions as well requires adding the stub. -+ -+commit ef5890ebafb7cd2fbf9acf161edb55fe1382871c -+Author: Josh Triplett -+Date: Fri Mar 21 11:01:39 2014 -0700 -+ -+ win32.S: Use shifting for multiplication rather than repeated addition -+ -+ The jump table code added a register to itself twice to multiply by 4; -+ shift the register left by 2 instead. -+ -+commit 4fca48901e7e4f53bf490ed22607b2d2d8f4bfcc -+Author: Josh Triplett -+Date: Fri Mar 21 11:00:41 2014 -0700 -+ -+ win32.S: Make the jump tables position-independent -+ -+ Now that non-Windows platforms include win32.S, it needs to support -+ building as position-independent code. This fixes build failures on -+ target platforms that do not allow text relocations. -+ -+commit 2087dcf736274286f76c69d3988fb6d7cc4fd0f5 -+Author: Josh Triplett -+Date: Fri Mar 21 10:57:06 2014 -0700 -+ -+ win32.S: Make calls to ffi_closure_SYSV_inner position-independent -+ -+ Now that non-Windows platforms include win32.S, it needs to support -+ building as position-independent code. This fixes one source of build -+ failures on target platforms that do not allow text relocations. -+ -+commit 28fb197079cf1d11da4eef7c8c243ab05590c528 -+Merge: c697472 c3dd0a1 -+Author: Anthony Green -+Date: Tue Mar 18 12:19:36 2014 -0400 -+ -+ Merge pull request #107 from rvandermeulen/msvcc -+ -+ Various compatibility fixes and improvements to msvcc.sh. -+ -+commit c3dd0a1a0245fc174361a70876e88ae24285f861 -+Author: Ryan VanderMeulen -+Date: Tue Mar 18 12:09:45 2014 -0400 -+ -+ Various compatibility fixes and improvements to msvcc.sh. -+ -+ * Don't try to mix incompatible optimization flags in debug builds. -+ * Workaround ax_cc_maxopt.m4 not supporting MSVC and change -O3 to -O2. -+ * Fix MSVC warning by properly passing linker flags to compiler. -+ * Make msvcc.sh return 1 if invalid command line options are used rather than silently eating them. -+ * Add more comments. -+ -+commit c697472fccfbb5b87b007c053cda9ef014b346b9 -+Merge: 83fd2bc e48918e -+Author: Anthony Green -+Date: Mon Mar 17 00:32:42 2014 -0400 -+ -+ Merge pull request #102 from joshtriplett/test-generic -+ -+ Add ABIs to the test matrix; unify many bits of the testsuite -+ -+commit e48918ecf876bc85d040fc50a232059c566553a8 -+Author: Josh Triplett -+Date: Sun Mar 16 20:29:27 2014 -0700 -+ -+ testsuite: Add ABIs to the test matrix; unify tests across ABIs -+ -+ This eliminates all the *_win32.c tests in favor of the tests they were -+ branched from, and expands test coverage to run many more tests on -+ stdcall, thiscall, and fastcall. -+ -+ This same mechanism also supports testing any other target that has -+ multiple ABIs. -+ -+commit 4d4d368e5a55d9443c4c53b1b70d58ab6d8c941c -+Author: Josh Triplett -+Date: Sun Mar 16 17:02:05 2014 -0700 -+ -+ testsuite: Replace ffitestcxx.h with ffitest.h -+ -+ ffitest.h contains a superset of the functionality of ffitestcxx.h; -+ make the C++ tests include ffitest.h instead, and remove ffitestcxx.h. -+ -+commit 3f97cf3413c46caf2a79f32ac9cda4620972c2d7 -+Author: Josh Triplett -+Date: Sun Mar 16 16:53:42 2014 -0700 -+ -+ testsuite: Unify the C and C++ testsuites -+ -+ These two testsuites differ only in the source file glob and a couple of -+ additional compiler options; unify the remaining bits. -+ -+commit 0d9cce8edb937bbe771a6cdd25f671edf06d2128 -+Author: Josh Triplett -+Date: Sun Mar 16 16:22:58 2014 -0700 -+ -+ testsuite: ffitest.h: Parenthesize the CHECK macro -+ -+commit 5695ec1444c5323e48fe4314f8c8f027625e67df -+Author: Josh Triplett -+Date: Sun Mar 16 16:04:58 2014 -0700 -+ -+ testsuite: Factor out a function to run a matrix of tests -+ -+ This commons up code from libffi.call/call.exp and -+ libffi.special/special.exp, unifies the optimization option matrix -+ between the two, and makes it easier to add more axes to the matrix -+ in the future. -+ -+commit dfdb02cc869855d3b68571e5f7aa77ae8c9d254a -+Author: Josh Triplett -+Date: Sun Mar 16 15:26:26 2014 -0700 -+ -+ testsuite: Introduce a __THISCALL__ compiler-specific macro -+ -+commit 83fd2bce0456224483435d4b764063f4513fd464 -+Merge: 3658a07 06ff924 -+Author: Anthony Green -+Date: Sun Mar 16 22:03:29 2014 -0400 -+ -+ Merge pull request #99 from joshtriplett/gitignore -+ -+ .gitignore: Ignore more generated files -+ -+commit 3658a0700a50d37a2fdba04fd9d79ad2f706d9f5 -+Merge: d948d0a 46c5d3c -+Author: Anthony Green -+Date: Sun Mar 16 21:37:42 2014 -0400 -+ -+ Merge pull request #100 from rvandermeulen/bug-756740 -+ -+ Change double quotes in Makefile.am to single quotes. -+ -+commit 46c5d3c30fdc2b43c076ad955078d7c5f1e75b37 -+Author: Ryan VanderMeulen -+Date: Sun Mar 16 21:16:08 2014 -0400 -+ -+ Change double quotes in Makefile.am to single quotes. -+ -+ This was originally done in PR #84, except the change was made to Makefile.in instead of Makefile.am and was therefore reverted the next time the files were regenerated. -+ -+commit 06ff924215a2f9739efa2c059dc595bc4ec1c851 -+Author: Josh Triplett -+Date: Sun Mar 16 16:19:46 2014 -0700 -+ -+ .gitignore: Ignore more generated files -+ -+ The build process generates doc/libffi.info and fficonfig.h.in, so add -+ them to .gitignore. -+ -+commit bad8948346e9b8813023a0cc78a3b6eb8d9c14c6 -+Author: Josh Triplett -+Date: Sun Mar 16 15:16:18 2014 -0700 -+ -+ testsuite: Introduce a __STDCALL__ compiler-specific macro -+ -+ Several tests want to use stdcall, which differs in syntax by compiler, -+ so introduce a macro for it in ffitest.h. -+ -+commit 98a793fa36a4ab3ba24d059cb80a2891cdb940e1 -+Author: Josh Triplett -+Date: Sun Mar 16 15:20:36 2014 -0700 -+ -+ testsuite: Common up the ifdef blocks for compiler-specific macros -+ -+commit d948d0a729c934b0224749338a3ba0a2c8f51c45 -+Merge: b61b472 a86bd31 -+Author: Anthony Green -+Date: Sun Mar 16 10:53:48 2014 -0400 -+ -+ Merge pull request #98 from joshtriplett/unconfigure.host -+ -+ Merge configure.host into configure.ac -+ -+commit a86bd318e2424d879d784ee7b29d6536d7a17c18 -+Author: Josh Triplett -+Date: Sun Mar 16 06:58:59 2014 -0700 -+ -+ Merge configure.host into configure.ac -+ -+ configure.host only has a single entry, and shows no signs of needing -+ more added. -+ -+commit b61b472bd0647006d6685238721002017f1d119c -+Author: Anthony Green -+Date: Sun Mar 16 09:45:55 2014 -0400 -+ -+ Update version to 3.1-rc0. Clean up README. -+ -+commit 7a64e7dbba54e6e9f69954adfb943be1856ff928 -+Merge: 11a5c5c eef2e02 -+Author: Anthony Green -+Date: Sun Mar 16 09:39:08 2014 -0400 -+ -+ Merge pull request #97 from joshtriplett/remove-more-generated-files -+ -+ Remove more generated files -+ -+commit 11a5c5c39f5861011f6c5ddf795da3a32b5f0082 -+Merge: 9a62a21 1c68c07 -+Author: Anthony Green -+Date: Sun Mar 16 09:38:47 2014 -0400 -+ -+ Merge pull request #96 from joshtriplett/sawing-changelogs -+ -+ Generate ChangeLog from git in make dist; remove it from version control -+ -+commit eef2e02a13d7d1c8145d47a64467f654406a3548 -+Author: Josh Triplett -+Date: Sun Mar 16 06:26:03 2014 -0700 -+ -+ doc: Remove autogenerated info file and stamp -+ -+commit 9fb403d3c5d9643e0f561cab6d4a07b1e54907ff -+Author: Josh Triplett -+Date: Sun Mar 16 06:25:52 2014 -0700 -+ -+ fficonfig.h.in: Remove, configure generates it -+ -+commit 1c68c07217fda78a779778c1480fedef7a58d5b4 -+Author: Josh Triplett -+Date: Sun Mar 16 06:11:58 2014 -0700 -+ -+ Generate ChangeLog from git in make dist -+ -+ Archive the existing ChangeLog to ChangeLog.libffi-3.1 -+ -+commit c65ed55e655711e008282edbdd82ce95d008b4f6 -+Author: Josh Triplett -+Date: Sun Mar 16 05:52:00 2014 -0700 -+ -+ ChangeLog.v1: Fix typo in explanatory header. -+ -+commit 9a62a21f5c3a8e1da463229f3170c8ab3031d920 -+Author: Anthony Green -+Date: Sun Mar 16 09:03:57 2014 -0400 -+ -+ Add missing ChangeLog entry. Clean up some entries. -+ -+commit 9bc704c58cb7a049d867837e3a11e2e31886ec66 -+Merge: 694447a e892e58 -+Author: Anthony Green -+Date: Sun Mar 16 08:41:00 2014 -0400 -+ -+ Merge pull request #95 from joshtriplett/news -+ -+ README: Update news for 3.0.14 -+ -+commit e892e581d1838a06c18c7ecd50ebd79915cff92b -+Author: Josh Triplett -+Date: Sun Mar 16 05:38:24 2014 -0700 -+ -+ README: Update news for 3.0.14 -+ -+commit 694447aa29deadd571efb4e9a26ee3f68ede1493 -+Merge: fdc87f3 45a6c21 -+Author: Anthony Green -+Date: Sun Mar 16 08:32:05 2014 -0400 -+ -+ Merge pull request #93 from joshtriplett/travis-dist -+ -+ Make Travis check "make dist" -+ -+commit 45a6c21efa944b520842e631dc54919b04884744 -+Author: Josh Triplett -+Date: Sun Mar 16 05:29:08 2014 -0700 -+ -+ .travis.yml: Test "make dist" too. -+ -+commit fdc87f3b2ea37b58a4a9ae6c35083f544909fe3c -+Merge: 7412b83 e1911f7 -+Author: Anthony Green -+Date: Sun Mar 16 08:05:51 2014 -0400 -+ -+ Merge pull request #85 from joshtriplett/stdcall -+ -+ stdcall support on Linux -+ -+commit e1911f78df113ca58738b66089a070d4cf747de7 -+Author: Josh Triplett -+Date: Sun Mar 16 03:25:53 2014 -0700 -+ -+ Add support for stdcall, thiscall, and fastcall on non-Windows x86-32 -+ -+ Linux supports the stdcall calling convention, either via functions -+ explicitly declared with the stdcall attribute, or via code compiled -+ with -mrtd which effectively makes stdcall the default. -+ -+ This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on -+ non-Windows x86-32 platforms, as non-default calling conventions. -+ -+commit 7412b838d543aae4fa925862bd5702d3dacbc29a -+Merge: c0cc5fd 9531d05 -+Author: Anthony Green -+Date: Sun Mar 16 07:58:16 2014 -0400 -+ -+ Merge pull request #90 from joshtriplett/win32-unifdef -+ -+ prep_cif.c: Remove unnecessary ifdef for X86_WIN32 -+ -+commit c0cc5fdaa237b67e86f22d2f6e13f3b42d9aae33 -+Merge: 98b5296 b3a5da0 -+Author: Anthony Green -+Date: Sun Mar 16 07:57:59 2014 -0400 -+ -+ Merge pull request #89 from joshtriplett/travis32 -+ -+ .travis.yml: Test on both 32-bit and 64-bit -+ -+commit 9531d05f64c2a674e0197158ffad68d69f177bd0 -+Author: Josh Triplett -+Date: Sun Mar 16 01:50:02 2014 -0700 -+ -+ prep_cif.c: Remove unnecessary ifdef for X86_WIN32 -+ -+ ffi_prep_cif_core had a special case for X86_WIN32, checking for -+ FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI range -+ before returning FFI_BAD_ABI. However, on X86_WIN32, FFI_THISCALL -+ already falls in that range, making the special case unnecessary. -+ Remove it. -+ -+commit b3a5da068abd2f2983d9e67adbf41b0e0f34e37f -+Author: Josh Triplett -+Date: Sat Mar 15 23:27:56 2014 -0700 -+ -+ .travis.yml: Test on both 32-bit and 64-bit -+ -+commit 98b52960485a261399f081915f36063de3854a5f -+Merge: 134ce4c f6dd184 -+Author: Anthony Green -+Date: Sun Mar 16 07:51:33 2014 -0400 -+ -+ Merge pull request #94 from joshtriplett/esp-extra-stackery-perception -+ -+ ChangeLog: Document testsuite changes to remove fragile stack pointer checks -+ -+commit f6dd1845434dd53e22129becdfa092c082df307c -+Author: Josh Triplett -+Date: Sun Mar 16 04:49:36 2014 -0700 -+ -+ ChangeLog: Document testsuite changes to remove fragile stack pointer checks -+ -+commit 134ce4c0266bf994f07518fc534de53f1d3c8de8 -+Merge: 2680e9e 9c27932 -+Author: Anthony Green -+Date: Sun Mar 16 07:47:17 2014 -0400 -+ -+ Merge pull request #91 from joshtriplett/esp-extra-stackery-perception -+ -+ testsuite: Remove fragile stack pointer checks -+ -+commit 9c279328ee12fc869adff63ca81f1230977bd42b -+Author: Josh Triplett -+Date: Sun Mar 16 02:31:19 2014 -0700 -+ -+ testsuite: Remove fragile stack pointer checks -+ -+ testsuite/libffi.call/closure_stdcall.c and -+ testsuite/libffi.call/closure_thiscall.c include inline assembly to save -+ the stack pointer before and after the call, and compare the values. -+ However, compilers can and do leave the stack in different states for -+ these two pieces of inline assembly, such as by saving a temporary value -+ on the stack across the call; observed with gcc -Os, and verified as -+ spurious through careful inspection of disassembly. -+ -+commit 2680e9ea9b4c87ea8042a61e551bd667493d4bd3 -+Merge: 071eab3 82f8cb2 -+Author: Anthony Green -+Date: Sun Mar 16 07:44:08 2014 -0400 -+ -+ Merge pull request #88 from joshtriplett/such-precision-many-fail-wow -+ -+ testsuite/libffi.call/many.c: Avoid spurious failure due to excess precision -+ -+commit 82f8cb24a1d976db35ae31a4b86cec8926da327d -+Author: Josh Triplett -+Date: Sun Mar 16 04:27:32 2014 -0700 -+ -+ ChangeLog: Document many.c and many_win32.c changes to avoid spurious failures -+ -+commit 88d562a8b5912e99306063fe3bc289bab6ca6ebe -+Author: Josh Triplett -+Date: Sat Mar 15 22:08:19 2014 -0700 -+ -+ testsuite/libffi.call/many_win32.c: Avoid spurious failure due to excess precision -+ -+ The test case testsuite/libffi.call/many_win32.c can spuriously fail due -+ to excess floating-point precision. Instrumenting it with some printf -+ calls shows differences well above FLT_EPSILON. (Note when -+ instrumenting it that multiple computations of the difference, such as -+ one in a print and another in the conditional, may produce different -+ results.) -+ -+ Rather than complicating the test suite with architecture-specific flags -+ to avoid excess precision, just simplify the floating-point computation -+ to avoid a dependency on potential excess precision. -+ -+commit c00a49ecd165b2d06c1c9b249d212dc843fa116f -+Author: Josh Triplett -+Date: Sat Mar 15 22:08:19 2014 -0700 -+ -+ testsuite/libffi.call/many.c: Avoid spurious failure due to excess precision -+ -+ The test case testsuite/libffi.call/many.c can spuriously fail due to -+ excess floating-point precision. Instrumenting it with some printf -+ calls shows differences well above FLT_EPSILON. (Note when -+ instrumenting it that multiple computations of the difference, such as -+ one in a print and another in the conditional, may produce different -+ results.) -+ -+ Rather than complicating the test suite with architecture-specific flags -+ to avoid excess precision, just simplify the floating-point computation -+ to avoid a dependency on potential excess precision. -+ -+commit 071eab32a7f9fbbef46c0d8f37d9985bc9cceb37 -+Merge: 2228c7a 2f44952 -+Author: Anthony Green -+Date: Sun Mar 16 07:36:52 2014 -0400 -+ -+ Merge pull request #92 from joshtriplett/autogen -+ -+ Re-add libtool-ldflags -+ -+commit 2f44952c95765c1486fad66f57235f8d459a9748 -+Author: Josh Triplett -+Date: Sun Mar 16 04:35:12 2014 -0700 -+ -+ Re-add libtool-ldflags -+ -+commit 2228c7ab190f3c529b9018495467b841fa21cba2 -+Merge: 76d19d0 35634db -+Author: Anthony Green -+Date: Sun Mar 16 07:25:18 2014 -0400 -+ -+ Merge pull request #87 from joshtriplett/autogen -+ -+ Remove autogenerated files from the repository -+ -+commit 35634dbceaac0a1544f7385addc01d21ef1ef6a8 -+Author: Josh Triplett -+Date: Sat Mar 15 18:11:16 2014 -0700 -+ -+ Remove autogenerated files from the repository -+ -+ Add an autogen.sh to regenerate them. -+ -+commit 76d19d004e36e99d261ee78261e2f52cea5e4ab1 -+Merge: c86d9b6 a1a6f71 -+Author: Anthony Green -+Date: Fri Mar 14 16:54:31 2014 -0400 -+ -+ Ensure the linker supports @unwind sections in libffi. -+ -+commit c86d9b6cc6e16ee262844a33b40441374400758c -+Merge: 4efb7db f8cdf11 -+Author: Anthony Green -+Date: Fri Mar 14 16:51:20 2014 -0400 -+ -+ Fix merge -+ -+commit 4efb7dbfd9427c478a948cd0d464210123db8de8 -+Merge: 634a475 18eb81d -+Author: Anthony Green -+Date: Fri Mar 14 16:47:57 2014 -0400 -+ -+ Merge pull request #81 from rvandermeulen/bug-756740 -+ -+ Allow building for mipsel with Android NDK r8. -+ -+commit a1a6f71bfe4199293043b2e4cfb4c8d3cb1112f9 -+Author: Ryan VanderMeulen -+Date: Mon Mar 10 15:12:47 2014 -0400 -+ -+ Remove stray hunk that shouldn't have been included in this patch. -+ -+commit f8cdf11467181f2a9a6b7e748167569aa58e3a81 -+Author: Ryan VanderMeulen -+Date: Mon Mar 10 15:04:58 2014 -0400 -+ -+ Replace double quotes with single quotes in Makefile.in to improve compatibility between some versions of MSYS and gmake. From Mozilla bug 943728. -+ https://bugzilla.mozilla.org/show_bug.cgi?id=943728 -+ -+commit dfa3738732e1bc3a7f4130395ae4bab55fcebb99 -+Author: Ryan VanderMeulen -+Date: Mon Mar 10 14:53:48 2014 -0400 -+ -+ Ensure the linker supports @unwind sections in libffi. From Mozilla bug 756740. -+ https://bugzilla.mozilla.org/show_bug.cgi?id=778414 -+ -+ Also tracked as issue #42. -+ https://github.com/atgreen/libffi/issues/42 -+ -+commit 18eb81d032f29d645d0498ba92bddfd651f009ae -+Author: Ryan VanderMeulen -+Date: Mon Mar 10 14:43:37 2014 -0400 -+ -+ Allow building for mipsel with Android NDK r8. From Mozilla bug 756740. -+ https://bugzilla.mozilla.org/show_bug.cgi?id=756740 -+ -+commit 634a475eaf1bee31c09f7d519e31c13b64cd24df -+Author: Anthony Green -+Date: Sat Mar 1 18:37:29 2014 -0500 -+ -+ Update Makefile for new darwin scripts -+ -+commit c7b67e874bb89859f9a07d1cf9606052b6c0dcc1 -+Author: Anthony Green -+Date: Sat Mar 1 18:34:18 2014 -0500 -+ -+ Add README note -+ -+commit a04e30ba3dc303133d459c1ac273ceefe4d49b32 -+Author: Anthony Green -+Date: Fri Feb 28 17:20:59 2014 -0500 -+ -+ Add missing -DFFI_DEBUG flag -+ -+commit 934dc1b5c8d6a9e727bedc72342831eb7d62c35f -+Merge: 11d7aa9 67fbef3 -+Author: Anthony Green -+Date: Fri Feb 28 01:10:17 2014 -0500 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+commit 11d7aa9d7a4bbe642944edc0f07cf96db9b270b6 -+Merge: b40aeda 3b44d41 -+Author: Anthony Green -+Date: Fri Feb 28 01:06:48 2014 -0500 -+ -+ Merge pull request #46 from makotokato/android-clang -+ -+ Fix build failure when using clang for Android -+ -+commit 67fbef3b56ff0ef88f9b1a7fe48cb77222fa6cec -+Merge: b40aeda 3b44d41 -+Author: Anthony Green -+Date: Fri Feb 28 01:06:48 2014 -0500 -+ -+ Merge pull request #46 from makotokato/android-clang -+ -+ Fix build failure when using clang for Android -+ -+commit b40aeda31a74d95a37c723b6243aabac466e67c4 -+Merge: 20698ab 53ceaf1 -+Author: Anthony Green -+Date: Fri Feb 28 01:01:29 2014 -0500 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+commit 53ceaf14c5eeb16ba09745f0ca87cca367d41a90 -+Merge: 860fe66 cc9b518 -+Author: Anthony Green -+Date: Fri Feb 28 01:01:02 2014 -0500 -+ -+ Merge pull request #40 from wojdyr/master -+ -+ Correct the -L flag in libffi.pc.in -+ -+commit 20698abc6a00092fd7fd3e434a3a29dc0f048f1e -+Merge: 64bd069 1a0b01e -+Author: Anthony Green -+Date: Fri Feb 28 00:56:27 2014 -0500 -+ -+ Merge pull request #66 from ppizarro/master -+ -+ BlackFin fixes - Fatal error when calling a function defined in a shared library from within the function called by FFI -+ -+commit 860fe6646f5ae603e99a8d1d722ddddba8b75769 -+Merge: 64bd069 1a0b01e -+Author: Anthony Green -+Date: Fri Feb 28 00:56:27 2014 -0500 -+ -+ Merge pull request #66 from ppizarro/master -+ -+ BlackFin fixes - Fatal error when calling a function defined in a shared library from within the function called by FFI -+ -+commit 64bd06990a7accf72271516a2110b86cdccd8df4 -+Author: Anthony Green -+Date: Fri Feb 28 00:52:56 2014 -0500 -+ -+ Add ChangeLog entry for Josh's change -+ -+commit edf29c5169b06fcfc241445e152e325bc3c50e0e -+Merge: 33c9954 3998d26 -+Author: Anthony Green -+Date: Fri Feb 28 00:50:25 2014 -0500 -+ -+ Merge pull request #75 from joshtriplett/longdouble -+ -+ Fix build error on x86 without distinct long double -+ -+commit 33c9954f2eec539011a0f93270aaf013318837ae -+Author: Anthony Green -+Date: Fri Feb 28 00:38:41 2014 -0500 -+ -+ Rebuilt with new libtool -+ -+commit 926b6989fbd08488b9105943293353d45ac527e0 -+Merge: 5a88c85 cc82051 -+Author: Anthony Green -+Date: Fri Feb 28 00:26:57 2014 -0500 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+ Conflicts: -+ ChangeLog -+ -+commit 5a88c85fde304052bed1581ed0b6452ac2c68838 -+Author: Anthony Green -+Date: Fri Feb 28 00:23:04 2014 -0500 -+ -+ Fix spelling errors -+ -+commit cc82051c7e80cea772c4b72da026eb7e68d598fc -+Author: Anthony Green -+Date: Fri Feb 28 00:23:04 2014 -0500 -+ -+ Fix spelling errors -+ -+commit 001aaf4b1b56349596bb6f6b5c1613dcbbd84ea8 -+Author: Anthony Green -+Date: Fri Feb 28 00:20:17 2014 -0500 -+ -+ When no VFP arguments are present the IP register is used -+ uninitialized. Initialize it to the value of FP. -+ -+ This fixes a number of testsuite failures when configured for -+ armv7l-unknown-linux-gnueabihf -+ -+commit 49f7729c3ce697c12408c42ccb29cdf4eb66bb85 -+Author: Anthony Green -+Date: Fri Feb 28 00:17:16 2014 -0500 -+ -+ aarch64 fix -+ -+commit 447483d51c6aa9df7116f346a73fc1cf795f4c2b -+Merge: 51377bd b4df9cf -+Author: Anthony Green -+Date: Thu Feb 27 15:42:41 2014 -0500 -+ -+ Fix ChangeLog merge -+ -+commit 3998d2604b5c0d45a098ff3119a9fd9710ef429d -+Author: Josh Triplett -+Date: Mon Feb 17 11:20:33 2014 -0800 -+ -+ Fix build error on x86 without distinct long double -+ -+ src/x86/ffi64.c: In function 'classify_argument': -+ src/x86/ffi64.c:205:5: error: duplicate case value -+ case FFI_TYPE_LONGDOUBLE: -+ ^ -+ src/x86/ffi64.c:202:5: error: previously used here -+ case FFI_TYPE_DOUBLE: -+ ^ -+ -+commit 51377bda9aed0b2c1309c818460cab9d9ab3d46e -+Merge: f08da54 40927bd -+Author: Anthony Green -+Date: Sat Feb 15 08:06:29 2014 -0500 -+ -+ Merge pull request #72 from heiher/devel -+ -+ MIPS N32: Fix call floating point va function -+ -+commit f08da5465463e60a28f5e921f23ebf2ba984c148 -+Merge: 3dc3f32 fa5f25c -+Author: Anthony Green -+Date: Sat Feb 15 08:06:11 2014 -0500 -+ -+ Merge pull request #68 from zeldin/master -+ -+ Linux/ppc64: Remove assumption on contents of r11 in closure -+ -+commit 40927bd3e1e7c6007025ba10854fd8a0664e47df -+Author: Heiher -+Date: Tue Jan 21 23:18:27 2014 +0800 -+ -+ Fix call floating point va function -+ -+ I'm not sure floating-point arguments in GPR or FPR before calling -+ variable number arguments function. so, load all arguments to GPR and -+ FPR. -+ -+commit b4df9cf9cc4a9a9401a53fd6bea1f3c2c283b97b -+Author: Zachary Waldowski -+Date: Wed Feb 5 14:22:52 2014 -0500 -+ -+ AArch64: Fix void fall-through case when assertions are enabled -+ -+commit f466aad0d91a117e42571d1d6fb434fa0433c930 -+Author: Zachary Waldowski -+Date: Tue Jan 21 16:38:31 2014 -0500 -+ -+ AArch64: Fix missing semicolons when assertions are enabled -+ -+commit 7ea677733bd98917241852b8901a6b7580728895 -+Author: Anthony Green -+Date: Sat Nov 30 20:58:31 2013 -0500 -+ -+ Remove build-ios from Makefile -+ -+ Conflicts: -+ ChangeLog -+ -+commit 6ae046cc59c12b2cd40158d6bcb96f4a59886159 -+Author: Anthony Green -+Date: Sat Nov 30 21:06:51 2013 -0500 -+ -+ Mention Aarch64 on iOS -+ -+commit bfc06b3fdb32abe90ce0749aedfec649df85a7ef -+Author: Zachary Waldowski -+Date: Mon Dec 30 17:36:39 2013 -0500 -+ -+ Update ChangeLog -+ -+commit 0a0f12ce1f7be81006b08a3c81a636926d283a9b -+Author: Zachary Waldowski -+Date: Thu Jan 9 13:50:17 2014 -0500 -+ -+ AArch64: Remove duplicitous element_count call. -+ -+ This inhibits an analyzer warning by Clang. -+ -+commit 4330fdcd92e67c816288d64ab230237065768206 -+Author: Zachary Waldowski -+Date: Thu Jan 9 13:53:30 2014 -0500 -+ -+ Darwin/aarch64: Respect iOS ABI re: stack argument alignment -+ -+commit 0a333d6c3973935d4fe02aae76b10e39d3c88e07 -+Author: Zachary Waldowski -+Date: Thu Jan 9 14:03:29 2014 -0500 -+ -+ Darwin/aarch64: Fix size_t assumptions -+ -+commit 2c18e3c76aad1b426617db05a4384e7c3a920176 -+Author: Zachary Waldowski -+Date: Mon Dec 30 16:14:02 2013 -0500 -+ -+ Darwin/aarch64: Fix "shadows declaration" warnings -+ -+commit 1b8a8e20e344f3c55495ab6eb46bd14e843d4b3e -+Author: Zachary Waldowski -+Date: Thu Jan 9 13:55:21 2014 -0500 -+ -+ Darwin/aarch64: Use Clang cache invalidation builtin -+ -+commit 6030cdcae776f8fb5876a53168f7d1e75d28a242 -+Author: Zachary Waldowski -+Date: Mon Dec 30 15:45:51 2013 -0500 -+ -+ Darwin/aarch64: Account for long double being equal to double -+ -+commit 5658b0892683d2e24e4d5842978c184a7ad33858 -+Author: Zachary Waldowski -+Date: Mon Dec 30 16:33:47 2013 -0500 -+ -+ Darwin/aarch64: Use CNAME, restrict .size like ARM -+ -+commit 07175780802acec5dc49fdedd6d20a62409a6707 -+Author: Zachary Waldowski -+Date: Mon Dec 30 17:48:22 2013 -0500 -+ -+ Darwin/aarch64: Fix invalid reference in assembly -+ -+commit 9da28b44277fea3aeb827c35dd63d609d2524a8b -+Author: Zachary Waldowski -+Date: Mon Dec 30 16:23:21 2013 -0500 -+ -+ Darwin/x86_64: Fix 64-bit type shortening warnings -+ -+commit 821d398f08bd1d540a5b235507812ffeee49b580 -+Author: Zachary Waldowski -+Date: Thu Jan 9 13:15:06 2014 -0500 -+ -+ Darwin: Merge build scripts, redo project, incl. arm64 -+ -+commit 6eff9ff9e72463b9783be2514f944b6f05692054 -+Author: Zachary Waldowski -+Date: Mon Dec 30 17:48:10 2013 -0500 -+ -+ Darwin/iOS: Improve unified syntax use for LLVM -+ -+commit ba0ea99c82aadd5957386a031e3122011bd36d52 -+Author: Zachary Waldowski -+Date: Mon Dec 30 15:27:44 2013 -0500 -+ -+ Fix dlmalloc warnings due to set_segment_flags, sizeof(size_t) -+ -+commit 994be3a5c1d0d17b19103396103e128517fd62f9 -+Author: Zachary Waldowski -+Date: Mon Dec 30 15:27:14 2013 -0500 -+ -+ Darwin/iOS: Fix mis-typing of vfp_reg_free -+ -+commit a8e0a835ab1f62d03ad6391760e3e8b7732d24f8 -+Author: Zachary Waldowski -+Date: Mon Dec 30 15:26:20 2013 -0500 -+ -+ Darwin/ARM: Assert on NULL dereference -+ -+ This inhibits an analyzer warning by Clang on all platforms. -+ -+commit 13675341581c489ed9df8ba390c8e08a732decb2 -+Author: Zachary Waldowski -+Date: Thu Jan 9 13:42:08 2014 -0500 -+ -+ Darwin/i386: Inhibit Clang previous prototype warnings -+ -+commit 66469c381e2e2cc96e7d409266dea0ffe177eeca -+Author: Zachary Waldowski -+Date: Thu Jan 9 13:41:45 2014 -0500 -+ -+ Darwin/ARM: Inhibit Clang previous prototype warnings -+ -+commit 5bfe62a00d2d659eec9f19b39802b6e69844fc27 -+Author: Zachary Waldowski -+Date: Thu Jan 9 13:41:27 2014 -0500 -+ -+ Darwin/AArch64: Inhibit Clang previous prototype warnings -+ -+commit fa5f25c20f76a6ef5e950a7ccbce826672c8a620 -+Author: Marcus Comstedt -+Date: Sat Jan 4 19:00:08 2014 +0100 -+ -+ Linux/ppc64: Remove assumption on contents of r11 in closure -+ -+commit 1a0b01e171e9c750437cef2f18917f5a6e32c498 -+Author: Paulo Pizarro -+Date: Thu Jan 2 16:17:59 2014 -0200 -+ -+ When the function called by the ffi called a function defined in a shared library generate a fatal error -+ The correction was to take into consideration the GOT. -+ -+commit 3dc3f32c35db5ab995a835225f6815369735ceb7 -+Author: Anthony Green -+Date: Thu Dec 5 16:23:25 2013 -0500 -+ -+ Undo iOS ARM64 changes. -+ -+commit 356b2cbc304bfe5bdc28b8d1c68d1ff084e9ec37 -+Merge: 484a758 07345a3 -+Author: Anthony Green -+Date: Sat Nov 30 22:38:13 2013 -0500 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+commit 484a7584260e2fbb399ce90083046834271bf9ff -+Author: Anthony Green -+Date: Sat Nov 30 21:06:51 2013 -0500 -+ -+ Mention Aarch64 on iOS -+ -+commit 07345a30ec0a2fa45a7c363d301f57723690cfa0 -+Author: Anthony Green -+Date: Sat Nov 30 21:06:51 2013 -0500 -+ -+ Mention Aarch64 on iOS -+ -+commit d4b931c1b872378c35f12ddbb9a6d55e7f17c65e -+Author: Anthony Green -+Date: Sat Nov 30 20:58:31 2013 -0500 -+ -+ Remove build-ios from Makefile -+ -+commit dfbf236d70fc1ec68e6ff193584a154353508e2f -+Merge: 852ac3b bb9740e -+Author: Anthony Green -+Date: Sat Nov 30 20:54:54 2013 -0500 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ Add ChangeLog entry. -+ -+commit bb9740e545205f93a525c77aa6d1cbf4ca9371f3 -+Merge: ac75368 4d701e0 -+Author: Anthony Green -+Date: Sat Nov 30 17:54:39 2013 -0800 -+ -+ Merge pull request #60 from zwaldowski/ios-redo -+ -+ Mac/iOS support, including aarch64 port -+ -+commit 4d701e03faa475a5eb3b54b90046114a1e27b813 -+Author: Zachary Waldowski -+Date: Sat Nov 30 13:25:27 2013 -0500 -+ -+ Darwin: Properly export headers from Xcode project -+ -+commit 022f12eb9ad2264e838fa5fb453733f5177888f4 -+Author: Zachary Waldowski -+Date: Sat Nov 30 12:21:38 2013 -0500 -+ -+ Darwin: Freshen gen scripts, remove old build-ios.sh -+ -+commit e820fe2025d7ad3df7584407946dfaad2af69599 -+Author: Zachary Waldowski -+Date: Sat Nov 30 12:03:51 2013 -0500 -+ -+ Darwin/iOS: Include x86_64+aarch64 pieces in library -+ -+commit 0278284e470ec91db7cdc15ac3dcd64683305848 -+Author: Zachary Waldowski -+Date: Sat Nov 30 03:03:37 2013 -0500 -+ -+ Darwin/aarch64: size_t assumptions -+ -+commit 9775446b6441c91cd9059215c106aa3bcf949767 -+Author: Zachary Waldowski -+Date: Sat Nov 30 02:39:34 2013 -0500 -+ -+ Darwin/aarch64: Fix “shadows declaration” warnings -+ -+commit 4260badc37705d3618e774dfe61184ac709881c1 -+Author: Zachary Waldowski -+Date: Sat Nov 30 02:08:14 2013 -0500 -+ -+ Darwin/aarch64: Use Clang cache invalidation builtin -+ -+commit 9fa7998d5f9250908cbf12a671479852ebadf9d1 -+Author: Zachary Waldowski -+Date: Sat Nov 30 02:07:48 2013 -0500 -+ -+ Darwin/aarch64: Inhibit Xcode warning -+ -+commit 0e832048a93830575b0976406444e134e649a4f7 -+Author: Zachary Waldowski -+Date: Sat Nov 30 02:07:34 2013 -0500 -+ -+ Darwin/aarch64: double == long double -+ -+commit 602dc22d76931092610234cf063f9f1b8dbc1a51 -+Author: Zachary Waldowski -+Date: Sat Nov 30 02:06:00 2013 -0500 -+ -+ Darwin/iOS prep script: try and compile for arm64 -+ -+commit b513dfe79de4725e8a717325a9e3b5b9f69f63dc -+Author: Zachary Waldowski -+Date: Sat Nov 30 02:05:22 2013 -0500 -+ -+ Darwin/aarch64: Restrict .size to ELF like arm32. -+ -+commit bc978099bf2812de755c076b67ef9c2547607572 -+Author: Zachary Waldowski -+Date: Sat Nov 30 02:04:57 2013 -0500 -+ -+ Darwin/aarch64: Potentially(?) fix compile error -+ -+commit d6bb9314467c6e0683156559d23ca341c43fa3c8 -+Author: Zachary Waldowski -+Date: Sat Nov 30 02:04:22 2013 -0500 -+ -+ Darwin/aarch64: Use CNAME refs -+ -+commit 33c46ce5680eea28d3437c8771ec1d137e226b45 -+Author: Zachary Waldowski -+Date: Sat Nov 30 04:13:42 2013 -0500 -+ -+ Darwin/Mac: Fix 64/32 shortening warnings -+ -+commit 0612081e6c161d9d820742f995975d35da2adbc2 -+Author: Zachary Waldowski -+Date: Sat Nov 30 03:03:00 2013 -0500 -+ -+ Darwin: Misc size_t warnings -+ -+commit 6a6247d179ec3859311c2d8775841b884f309f66 -+Author: Zachary Waldowski -+Date: Sat Nov 30 02:55:48 2013 -0500 -+ -+ Darwin: Fix dlmalloc warnings due to sizeof(size_t) -+ -+commit 4d60d9e1e32de6166ffd63bbe9ce54cf961c78fc -+Author: Zachary Waldowski -+Date: Sat Nov 30 04:09:30 2013 -0500 -+ -+ Darwin: Rebuild Xcode project -+ -+commit cb719a5c1c2eb391d6a5f5e02484ba4aa990a51b -+Author: Zachary Waldowski -+Date: Sat Nov 30 04:09:18 2013 -0500 -+ -+ Darwin/iOS: Fix LLVM 3.3 warning re: memcpy. -+ -+commit 21bde92c9abb378f9c456a9d95e6f9b99ef8c920 -+Author: Zachary Waldowski -+Date: Sat Nov 30 03:43:42 2013 -0500 -+ -+ Darwin: Clean up, modernize generator scripts -+ -+commit fd54eab74cef7891e4acaaafb71e783142ecb69e -+Author: Zachary Waldowski -+Date: Sat Nov 30 03:38:02 2013 -0500 -+ -+ Darwin/Mac: Also exclude OS X generated source -+ -+commit 953b6f14c655141f9e7d82550a312c3eeb961091 -+Author: Zachary Waldowski -+Date: Tue Apr 24 11:16:20 2012 -0400 -+ -+ Darwin/iOS: More unified syntax support w/ Clang. -+ -+ Signed-off-by: Zachary Waldowski -+ -+commit c713a55379481c339877f2e0003d97cb8d9ed80e -+Author: Zachary Waldowski -+Date: Tue Apr 24 10:25:29 2012 -0400 -+ -+ Darwin/iOS: Simplify RETLDM arguments for LLVM 3.1 -+ -+ Signed-off-by: Zachary Waldowski -+ -+commit 16ba1b80028db5cb71cf86e5f79f5e48317f83c8 -+Author: Zachary Waldowski -+Date: Wed Apr 11 23:26:04 2012 -0400 -+ -+ Darwin: Silence Clang warnings. -+ -+commit 852ac3bd302d6ed97b1ef65f4cbed69c258a48df -+Merge: ab79d6e ac75368 -+Author: Anthony Green -+Date: Thu Nov 21 21:25:44 2013 -0500 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+ Conflicts: -+ ChangeLog -+ -+commit ab79d6e21992dd86139ba07530ff888833b78a04 -+Author: Alan Modra -+Date: Thu Nov 21 06:12:35 2013 -0500 -+ -+ This separates the 32-bit sysv/linux/bsd code from the 64-bit linux -+ code, and makes it possible to link code compiled with different -+ options to those used to compile libffi. For example, a -+ -mlong-double-128 libffi can be used with -mlong-double-64 code. -+ -+ Using the return value area as a place to pass parameters wasn't such -+ a good idea, causing a failure of cls_ulonglong.c. I didn't see this -+ when running the mainline gcc libffi testsuite because that version of -+ the test is inferior to the upstreamm libffi test. -+ -+ Using NUM_FPR_ARG_REGISTERS rather than NUM_FPR_ARG_REGISTERS64 meant -+ that a parameter save area could be allocated before it was strictly -+ necessary. Wrong but harmless. Found when splitting apart ffi.c -+ into 32-bit and 64-bit support. -+ -+commit ac7536889334d4be50709006d7e23536364d7891 -+Author: Alan Modra -+Date: Thu Nov 21 06:12:35 2013 -0500 -+ -+ This separates the 32-bit sysv/linux/bsd code from the 64-bit linux -+ code, and makes it possible to link code compiled with different -+ options to those used to compile libffi. For example, a -+ -mlong-double-128 libffi can be used with -mlong-double-64 code. -+ -+ Using the return value area as a place to pass parameters wasn't such -+ a good idea, causing a failure of cls_ulonglong.c. I didn't see this -+ when running the mainline gcc libffi testsuite because that version of -+ the test is inferior to the upstreamm libffi test. -+ -+ Using NUM_FPR_ARG_REGISTERS rather than NUM_FPR_ARG_REGISTERS64 meant -+ that a parameter save area could be allocated before it was strictly -+ necessary. Wrong but harmless. Found when splitting apart ffi.c -+ into 32-bit and 64-bit support. -+ -+commit 69df91cfb4fa6bcb644350a80bff970f27478a6a -+Merge: 2f45082 aa1f62c -+Author: Anthony Green -+Date: Mon Nov 18 06:34:04 2013 -0800 -+ -+ Merge pull request #59 from iains/powerpc-darwin-unwind-fix -+ -+ Fix PowerPC Darwin FDE encodings to use pcrel correctly. Modernise the picbase labels. -+ -+commit aa1f62c0a093c30325dff1d4d2b6b4b22eb96929 -+Author: Iain Sandoe -+Date: Mon Nov 18 13:11:56 2013 +0000 -+ -+ Fix PowerPC Darwin FDE encodings to use pcrel correctly. Modernise the picbase labels. -+ -+commit 2f450822a8698ba88441c56d152c7dc8924b127f -+Author: Anthony Green -+Date: Mon Nov 18 06:52:29 2013 -0500 -+ -+ Clean up code to appease modern GCC compiler. -+ -+commit 16d56c51aded374730920a4acde76ff3d2860ae1 -+Author: Alan Modra -+Date: Mon Nov 18 06:36:03 2013 -0500 -+ -+ An #endif in the wrong place would cause compile failure on powerpcle. -+ Using bl instead of b doesn't cause runtime failures as you might think, -+ but does mess the processor branch prediction. -+ -+commit 34f878a5ef28663f6b1d7fd26fb099429ea1579e -+Merge: 83f65b6 1fd0457 -+Author: Anthony Green -+Date: Sat Nov 16 06:57:54 2013 -0500 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+ Conflicts: -+ ChangeLog -+ src/powerpc/ffi.c -+ -+commit 83f65b63d9764a9cc7688fc5cda5ee2bd23faf54 -+Author: Alan Modra -+Date: Sat Nov 16 06:53:50 2013 -0500 -+ -+ Finally, this adds _CALL_ELF == 2 support. ELFv1 objects can't be -+ linked with ELFv2 objects, so this is one case where preprocessor -+ tests in ffi.c are fine. Also, there is no need to define a new -+ FFI_ELFv2 or somesuch value in enum ffi_abi. FFI_LINUX64 will happily -+ serve both ABIs. -+ -+commit 1fd045784cac874b5d76b7fa931f67209a8280d3 -+Author: Alan Modra -+Date: Sat Nov 16 06:53:50 2013 -0500 -+ -+ Finally, this adds _CALL_ELF == 2 support. ELFv1 objects can't be -+ linked with ELFv2 objects, so this is one case where preprocessor -+ tests in ffi.c are fine. Also, there is no need to define a new -+ FFI_ELFv2 or somesuch value in enum ffi_abi. FFI_LINUX64 will happily -+ serve both ABIs. -+ -+commit 362851379a49ce07d3e36e82c4e5c7b6cc16a352 -+Author: Alan Modra -+Date: Sat Nov 16 06:52:43 2013 -0500 -+ -+ Andreas' 2013-02-08 change reverted some breakage for struct return -+ values from 2011-11-12, but in so doing reintroduced string -+ instructions to sysv.S that are not supported on all powerpc variants. -+ This patch properly copies the bounce buffer to destination in C code -+ rather than in asm. -+ -+ I have tested this on powerpc64-linux, powerpc-linux and -+ powerpc-freebsd. Well, the last on powerpc-linux by lying to -+ configure with -+ -+ CC="gcc -m32 -msvr4-struct-return -mlong-double-64" \ -+ CXX="g++ -m32 -msvr4-struct-return -mlong-double-64" \ -+ /src/libffi-current/configure --build=powerpc-freebsd -+ -+ and then -+ -+ make && make CC="gcc -m32" CXX="g++ -m32" \ -+ RUNTESTFLAGS=--target_board=unix/-m32/-msvr4-struct-return/-mlong-double-64\ -+ check -+ -+commit 1c06515d927d9de1582438d4eb5953890e79c5c7 -+Author: Alan Modra -+Date: Sat Nov 16 06:41:36 2013 -0500 -+ -+ The powerpc64 ABIs align structs passed by value, a fact ignored by -+ gcc for quite some time. Since gcc now does the correct alignment, -+ libffi needs to follow suit. This ought to be made selectable via -+ a new abi value, and the #ifdefs removed from ffi.c along with many -+ other #ifdefs present there and in assembly. I'll do that with a -+ followup patch sometime. -+ -+ This is a revised version of -+ https://sourceware.org/ml/libffi-discuss/2013/msg00162.html -+ -+commit a97cf1fae575d8bfd5259c5c422025ad43911326 -+Author: Alan Modra -+Date: Sat Nov 16 06:40:13 2013 -0500 -+ -+ This patch prepares for ELFv2, where sizes of these areas change. It -+ also makes some minor changes to improve code efficiency. -+ -+commit 164283f4ac5972ce2ab5e015cc2ab1014c23276c -+Author: Alan Modra -+Date: Sat Nov 16 06:38:55 2013 -0500 -+ -+ The powerpc64 support opted to pass floating point values both in the -+ fpr area and the parameter save area, necessary when the backend -+ doesn't know if a function argument corresponds to the ellipsis -+ arguments of a variadic function. This patch adds powerpc support for -+ variadic functions, and changes the code to only pass fp in the ABI -+ mandated area. ELFv2 needs this change since the parameter save area -+ may not exist there. -+ -+ This also fixes two faulty tests that used a non-variadic function -+ cast to call a variadic function, and spuriously reasoned that this is -+ somehow necessary for static functions.. -+ -+commit 31257b3189f81a199bc2902c22bc5f2d7c54ccde -+Author: Andrew Haley -+Date: Sat Nov 16 06:35:51 2013 -0500 -+ -+ Fix sample closure code -+ -+commit db0ace3a38496af73eae3df02ef353736d16909f -+Author: Andrew Haley -+Date: Sat Nov 16 06:29:25 2013 -0500 -+ -+ Fix broken test cases -+ -+commit de10f5039ed7a53382ddcc95c368d03e535edb98 -+Merge: 58c2577 f3657da -+Author: Anthony Green -+Date: Thu Nov 14 10:56:29 2013 -0500 -+ -+ Merge branch 'master' of https://github.com/bivab/libffi -+ -+ Conflicts: -+ ChangeLog -+ -+commit f3657da278dd63afcdd8762894a9bdaea8ef028a -+Author: David Schneider -+Date: Thu Nov 14 13:02:16 2013 +0100 -+ -+ update Changelog -+ -+commit 58c2577a3ff80e7416ef0434769e2af23365719c -+Author: Alan Modra -+Date: Wed Nov 13 16:55:36 2013 -0500 -+ -+ This enshrines the current testsuite practice of using ffi_arg for -+ returned values. It would be reasonable and logical to use the actual -+ return argument type as passed to ffi_prep_cif, but this would mean -+ changing a large number of tests that use ffi_arg and all backends -+ that write results to an ffi_arg. -+ -+commit 8af42f9944f7ed72c81ae360aac6a84dc11f89dc -+Author: Anthony Green -+Date: Wed Nov 13 16:40:28 2013 -0500 -+ -+ Respect HAVE_ALLOCA_H -+ -+commit cdf405d574f479b782454516366bd4f4b9b3415e -+Author: David Schneider -+Date: Wed Nov 13 15:50:21 2013 +0100 -+ -+ add a testcase for the double/float issue on ARMHF -+ -+commit 77f823e31ffb557a466b24f7fba845fbf7831798 -+Author: David Schneider -+Date: Wed Nov 13 14:26:57 2013 +0100 -+ -+ stop trying to assing vfp regs once we are done with the registers -+ -+commit 37067ec5036f2a6ed7a4799f83f8f53160460344 -+Author: David Schneider -+Date: Tue Nov 12 19:49:01 2013 +0100 -+ -+ mark all vfp registers as used when done. -+ -+ To avoid assigning registers the would fit, once arguments have been on -+ the stack, we mark all registers as used once we do not find a free -+ register for the first time. -+ -+commit 2f5b7ce545473a7f6e41193edc29407cbebe82d5 -+Author: Anthony Green -+Date: Sat Nov 9 06:16:32 2013 -0500 -+ -+ UltraSPARC IIi fix. Update README and build configury. -+ -+commit becd754434173032f426d22ffcbfe24f55b3c137 -+Author: Mark Kettenis -+Date: Wed Nov 6 06:43:49 2013 -0500 -+ -+ Align the stack pointer to 16-bytes. -+ -+commit 05c31093409f7b3e6d795fac21d2c954313d8162 -+Author: Konstantin Belousov -+Date: Wed Nov 6 06:40:58 2013 -0500 -+ -+ Mark executable as not requiring executable stack. -+ -+commit cf6bf9818e8394cfcdb07a40c6a5e2ee6b01d333 -+Author: Anthony Green -+Date: Sat Nov 2 17:23:59 2013 -0400 -+ -+ Fix up docs -+ -+commit 02177176854d16fc0f1a5958aa34da2f306630ee -+Merge: c242217 c265b4c -+Author: Anthony Green -+Date: Sat Nov 2 17:11:22 2013 -0400 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+commit c2422174b3edc0de0b148dfd6b67087bb881c4a6 -+Merge: f4b843f d918d47 -+Author: Anthony Green -+Date: Sat Nov 2 14:08:23 2013 -0700 -+ -+ Merge pull request #45 from foss-for-synopsys-dwc-arc-processors/arc_support -+ -+ arc: Fix build error -+ -+commit c265b4cacb9130f042699a85de9c7242b3f49cc3 -+Merge: f4b843f d918d47 -+Author: Anthony Green -+Date: Sat Nov 2 14:08:23 2013 -0700 -+ -+ Merge pull request #45 from foss-for-synopsys-dwc-arc-processors/arc_support -+ -+ arc: Fix build error -+ -+commit f4b843f83710ac378c48abd87fe66bb519d30d2e -+Author: Anthony Green -+Date: Sat Nov 2 17:01:15 2013 -0400 -+ -+ Don't align stack for win32 -+ -+commit f3cd39345713db8e414cf642b6cb65a4cfe6018c -+Merge: 666f3e7 6aa1590 -+Author: Anthony Green -+Date: Sat Nov 2 13:17:57 2013 -0700 -+ -+ Merge pull request #51 from vbudovski/for_upstream -+ -+ Don't use 16 byte aligned stack for WIN32 -+ -+commit 666f3e71b56d92c49fcd2d7f349b8f8ebca0f8a3 -+Author: Anthony Green -+Date: Sat Oct 26 09:12:42 2013 -0400 -+ -+ Add more credits to README. Tidy up. -+ -+commit 73ada14e756bad97fad0e6915a821a3c7e079f81 -+Author: Anthony Green -+Date: Sat Oct 26 09:09:45 2013 -0400 -+ -+ Update README -+ -+commit d3372c54ce7117e80d389ba875dc5b6b2213c71e -+Author: Mark H Weaver -+Date: Sat Oct 26 08:30:06 2013 -0400 -+ -+ Fix N32 ABI issue for MIPS. -+ -+commit d6716aba8118eb0513885cfe557bedebb7016e8b -+Author: Anthony Green -+Date: Tue Oct 15 15:42:49 2013 -0400 -+ -+ Update travis-ci build dependencies to include texinfo -+ -+commit 16b93a211bcfbe4bd0efdcf94de225a71aa0ee02 -+Author: Sandra Loosemore -+Date: Tue Oct 15 15:33:59 2013 -0400 -+ -+ Add nios2 port. -+ -+commit 2f5626ce02fce8267ab48ceb6d7d0ed7d672a75e -+Author: Sandra Loosemore -+Date: Tue Oct 15 15:32:16 2013 -0400 -+ -+ Fix testsuite bug -+ -+commit f64e4a865557e440774436b4c2b2fd7374290e97 -+Author: Marcus Shawcroft -+Date: Tue Oct 15 15:20:14 2013 -0400 -+ -+ Fix many.c testcase for Aarch64 -+ -+commit 128cd1d2f358f26d9fa75a27cf2b30356f5dd903 -+Author: Anthony Green -+Date: Tue Oct 8 06:45:51 2013 -0400 -+ -+ Fix spelling errors -+ -+commit ff06269d707cafbfef2a88afb07a79c9d1480c5f -+Author: Anthony Green -+Date: Tue Oct 8 06:32:18 2013 -0400 -+ -+ Update README for M88K and VAX -+ -+commit d2fcbcdfbea750d1f6a9f493e2e6c4d5ffa71b34 -+Author: Anthony Green -+Date: Tue Oct 8 06:27:46 2013 -0400 -+ -+ Add m88k and VAX support. Update some configury bits. -+ -+commit 6aa15900accc0a648cdebf11ec11d11697ebfffd -+Author: Vitaly Budovski -+Date: Thu Sep 5 12:05:06 2013 +1000 -+ -+ Don't use 16 byte aligned stack for WIN32 -+ -+ This fixes a crash when accessing __stdcall functions in Python ctypes. -+ -+commit 3b44d41156149af8da2a58825fefdfa23274ae7a -+Author: Makoto Kato -+Date: Wed Jul 10 15:34:53 2013 +0900 -+ -+ Fix build failure when using clang for Android -+ -+ clang for Android generates __gnu_linux__ define, but gcc for Android doesn't. So we should add check it for Android -+ -+commit d918d47809c174d62283306b282749f8db93661f -+Author: Mischa Jonker -+Date: Mon Jul 8 15:51:36 2013 +0200 -+ -+ arc: Fix build error -+ -+ One part of the patch for ARC support was missing in the upstreamed -+ version. -+ -+ Signed-off-by: Mischa Jonker -+ -+commit d3d099b40c122550279789200263346f120f6909 -+Author: Anthony Green -+Date: Tue Jul 2 16:11:38 2013 -0400 -+ -+ little-endian ppc64 support -+ -+commit 0f8690a84c874ec09a090c8c6adfb93c594acac6 -+Author: Anthony Green -+Date: Tue Jul 2 15:54:40 2013 -0400 -+ -+ Rebuild for ARC additions -+ -+commit f88118b345f27c46f5445d6e4832c498ff9a6d85 -+Author: Anthony Green -+Date: Tue Jul 2 15:51:27 2013 -0400 -+ -+ Revert "Merge pull request #36 from abergmeier/emscripten_fix" -+ -+ This reverts commit 6a4d901dde7b3f87984c563505717cde3113d16e, reversing -+ changes made to b50a13b9c07ec09af4b9697e482acdad571e6961. -+ -+commit 6a4d901dde7b3f87984c563505717cde3113d16e -+Merge: b50a13b 587002c -+Author: Anthony Green -+Date: Tue Jul 2 12:12:34 2013 -0700 -+ -+ Merge pull request #36 from abergmeier/emscripten_fix -+ -+ Fixes for building with Emscripten -+ -+commit b50a13b9c07ec09af4b9697e482acdad571e6961 -+Merge: 767f1f9 b082e15 -+Author: Anthony Green -+Date: Tue Jul 2 12:10:26 2013 -0700 -+ -+ Merge pull request #44 from foss-for-synopsys-dwc-arc-processors/arc_support -+ -+ Add ARC support -+ -+commit 767f1f96e5282da44d7340e6815e9820a3f78e39 -+Merge: c3c40e0 b8a91d8 -+Author: Anthony Green -+Date: Tue Jul 2 12:08:04 2013 -0700 -+ -+ Merge pull request #43 from JensTimmerman/__m128 -+ -+ added include for xmmintrin.h -+ -+commit b8a91d81be77d479327fdb6bdd9fdae6d18e6e63 -+Author: Jens Timmerman -+Date: Tue Jul 2 10:57:37 2013 +0200 -+ -+ added include for xmmintrin.h -+ -+commit b082e15091961373c03d10ed0251f619ebb6ed76 -+Author: Mischa Jonker -+Date: Mon Jun 10 16:19:33 2013 +0200 -+ -+ Add ARC support -+ -+ This adds support for the ARC architecture to libffi. DesignWare ARC -+ is a family of processors from Synopsys, Inc. -+ -+ This patch has been tested on a little-endian system and passes -+ the testsuite. -+ -+ Signed-off-by: Mischa Jonker -+ -+commit cc9b518687e46b0d1acafdd4bc3f3b281c25a3d9 -+Author: Marcin Wojdyr -+Date: Tue May 14 15:01:23 2013 +0200 -+ -+ Update libffi.pc.in -+ -+ use -L${toolexeclibdir} instead of -L${libdir} -+ to be consistent with Makefile.am -+ -+commit 587002c092cffe6e7a8d7028f246c241d03b738c -+Author: Andreas Bergmeier -+Date: Fri Apr 19 17:12:24 2013 +0200 -+ -+ Enable disabling of libtool on platforms where it does not work (e.g. LLVM). -+ Build libraries normally then. -+ -+commit c3c40e0290377d7cf948b072eedd8317c4bf215e -+Merge: ede96e4 4750e3c -+Author: Anthony Green -+Date: Sat Mar 30 05:24:14 2013 -0700 -+ -+ Merge pull request #34 from davidsch/armhf -+ -+ Fix ARM hard-float support for large numbers of VFP arguments -+ -+commit 4750e3c662fd9569cb3e2d28f539685fd1ca8caf -+Author: David Schneider -+Date: Thu Mar 28 16:56:36 2013 +0100 -+ -+ update changelog -+ -+commit 9708e7cf09f1bf815f4d6485eb1f180fabb35804 -+Author: David Schneider -+Date: Wed Mar 27 19:31:04 2013 +0100 -+ -+ folow the ARM hard-float ABI in ffi_prep_incoming_args_VFP -+ -+commit b41120981e5e49ca2da10b94b154775f50da5f36 -+Author: David Schneider -+Date: Wed Mar 27 16:38:35 2013 +0100 -+ -+ create separated versions of ffi_prep_incoming_args_* for SYSV and VFP ABIs. -+ -+ The different versions will be called depending on the value of cif->abi -+ -+commit dd26f1f39c54861c5b91931f0f37a72942c2a072 -+Author: David Schneider -+Date: Thu Mar 28 15:39:01 2013 +0100 -+ -+ add a failing test for closures on ARM hardfloat -+ -+commit 3c1608613ab3c2184222b98c5482cddedd6b559b -+Author: David Schneider -+Date: Tue Mar 26 19:24:47 2013 +0100 -+ -+ extend ffi_prepare_args for FFI_VFP (hard-float ABI), fixing an issue with passing VFP arguments in VFP registers and the stack, while at the same time not using all core registers. -+ -+commit 0f2ff2d4c92719be8936179f9ab674f4d1a3fd14 -+Author: David Schneider -+Date: Tue Mar 26 19:22:02 2013 +0100 -+ -+ separate ARM ffi_prepare_args in a version implementing the simple SYSV calling convention and one for the hard-float calling convention -+ -+commit 3a352b8a8252400a83de22c7c424bf1887b4a2ef -+Author: David Schneider -+Date: Tue Mar 26 14:24:04 2013 +0100 -+ -+ move the hardfloat specific argument copying code to the helper function -+ -+commit 5df6b7944a4225b6eb329f3886be64e04e966f29 -+Author: David Schneider -+Date: Tue Mar 26 14:02:21 2013 +0100 -+ -+ extract setting of arguments to be passed to a helper function -+ -+commit 7d1048c471bb4b1f9d67a9e9f8e95f9a1d2e6d45 -+Author: David Schneider -+Date: Tue Mar 26 11:33:33 2013 +0100 -+ -+ extract code to align the argument storage pointer to a helper function -+ -+commit b9f013788f0f384c423ad963475aaacb55598135 -+Author: David Schneider -+Date: Mon Mar 25 13:27:36 2013 +0100 -+ -+ add a testcase, that on ARM hardfloat needs more than the 8 VFP argument registers to pass arguments to a call -+ -+commit 2fbdb0f231cafdb77b025d3cd8afe90cda99b3ba -+Author: David Schneider -+Date: Mon Mar 25 13:26:02 2013 +0100 -+ -+ use the absolute value to check the test result against an epsilon -+ -+commit ede96e4eb660bbf3e0fe048135efa8106f48af5d -+Merge: f22ab3c 9e34992 -+Author: Anthony Green -+Date: Sun Mar 17 18:38:21 2013 -0400 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+commit f22ab3c6877cbdd07f058b68816b0086b1cb0e1e -+Merge: 12b1886 d08124b -+Author: Anthony Green -+Date: Sun Mar 17 18:34:54 2013 -0400 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+commit 9e34992a5ea2fda1dba5875bf96dc91a7230f51f -+Merge: 12b1886 d08124b -+Author: Anthony Green -+Date: Sun Mar 17 18:34:54 2013 -0400 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+commit 12b1886d7b1f8aa264b1d348bfa47a0e14712df4 -+Author: Anthony Green -+Date: Sun Mar 17 18:32:12 2013 -0400 -+ -+ cygwin fix & updates for 3.0.13 -+ -+commit d08124bedf2c6d61874fe215404783aeb9f6f1ac -+Author: Anthony Green -+Date: Sun Mar 17 18:32:12 2013 -0400 -+ -+ cygwin fix & updates for 3.0.13 -+ -+commit cb32c812d04d1dfa72002cc04924e7e4fef89e02 -+Author: Anthony Green -+Date: Sun Mar 17 09:27:55 2013 -0400 -+ -+ Fix lib install dir -+ -+commit efd7866a361a6f636bae8400d26c6811e56ca207 -+Author: Anthony Green -+Date: Sat Mar 16 08:35:57 2013 -0400 -+ -+ 2.0.13rc1 -+ -+commit ff647ad4dff2f07dd153f295a1f70b1d906cd6ca -+Merge: 4acf005 d9dd417 -+Author: Anthony Green -+Date: Sat Mar 16 08:20:40 2013 -0400 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+ Conflicts: -+ ChangeLog -+ -+commit 4acf0056f55c757490dae6c29a65b0321327ea8a -+Author: Anthony Green -+Date: Sat Mar 16 08:18:45 2013 -0400 -+ -+ Build fix for soft-float power targets -+ -+commit 675c9839224e4268187f1ec6f512127f9db555d0 -+Author: Anthony Green -+Date: Sat Mar 16 08:12:38 2013 -0400 -+ -+ Documentation fix -+ -+commit 8a286f570ccd41db81f74ea7f248da62241d898a -+Author: Anthony Green -+Date: Sat Mar 16 08:01:19 2013 -0400 -+ -+ Fix for m68000 systems -+ -+commit d9dd417b09566af55b7b3000bb53ccaf2e1d6c92 -+Author: Anthony Green -+Date: Sat Mar 16 08:01:19 2013 -0400 -+ -+ Fix for m68000 systems -+ -+commit 215763d012a944d95406b394d6013b80d220e870 -+Author: Anthony Green -+Date: Sat Mar 16 07:57:35 2013 -0400 -+ -+ Update configury. -+ -+commit 9180d8f39c9b6afe17b78277c2711a5d9948e824 -+Merge: 2fb527a 7e1b326 -+Author: Anthony Green -+Date: Sat Mar 16 07:46:55 2013 -0400 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+commit 2fb527a017a4943e176a489ff103231b86464b59 -+Author: Anthony Green -+Date: Sat Mar 16 07:46:38 2013 -0400 -+ -+ Add Meta processor support -+ -+commit 211a9ebf4d1a9801e15e103566aed2b8c42790be -+Merge: f308faf ee18766 -+Author: Anthony Green -+Date: Sat Mar 16 04:24:40 2013 -0700 -+ -+ Merge pull request #32 from alex/patch-1 -+ -+ Fix for a crasher due to misaligned stack on x86-32. -+ -+commit 7e1b32649efd24814e86172e196f390566f9e970 -+Merge: f308faf ee18766 -+Author: Anthony Green -+Date: Sat Mar 16 04:24:40 2013 -0700 -+ -+ Merge pull request #32 from alex/patch-1 -+ -+ Fix for a crasher due to misaligned stack on x86-32. -+ -+commit ee18766b169811426c14b011fbb46d81e344f926 -+Author: Alex Gaynor -+Date: Thu Mar 14 15:00:33 2013 -0700 -+ -+ Fix for a crasher due to misaligned stack on x86-32. -+ -+ Full information on reproduction (using Python's ctypes available here: http://bugs.python.org/issue17423) -+ -+commit f308faf1eabaf8dc24966ab17fbf94368f46b9c7 -+Author: Anthony Green -+Date: Mon Feb 11 14:25:13 2013 -0500 -+ -+ Add moxie support. Release 3.0.12. -+ -+commit 4ea22e54e3b143fe05c413f6dddd236af6bcbfb2 -+Author: Anthony Green -+Date: Sun Feb 10 08:48:38 2013 -0500 -+ -+ Update README -+ -+commit 10e77227b6ae85f46f28590bfb09ca3608554358 -+Author: Anthony Green -+Date: Sun Feb 10 08:47:26 2013 -0500 -+ -+ mend -+ -+commit a9521411a53d58f2bf88199242200ceb0d4dae3a -+Author: Anthony Green -+Date: Sat Feb 9 06:54:40 2013 -0500 -+ -+ sparc v8 and testsuite fixes -+ -+commit 70b11b47eea93bf43627588d494d0b3b0d062481 -+Author: Anthony Green -+Date: Fri Feb 8 16:12:19 2013 -0500 -+ -+ Fix small struct passing on ppc -+ -+commit 63ba1fa79f7c4ce42de848debe233aab31aecb51 -+Author: Anthony Green -+Date: Fri Feb 8 15:18:19 2013 -0500 -+ -+ Remove xfail for arm*-*-*. -+ -+commit 24fbca4c1d57d4ea628c0a8ba643684daf54a37e -+Author: Anthony Green -+Date: Fri Feb 8 14:19:56 2013 -0500 -+ -+ Fix typo -+ -+commit b0fa11cb0a94ce6baca058eab9b10e40475e71d6 -+Author: Anthony Green -+Date: Fri Feb 8 14:17:13 2013 -0500 -+ -+ More man page cleanup -+ -+commit 8bd15d139a58a6e46dc90a1cb2d89f59f32f06c7 -+Author: Anthony Green -+Date: Fri Feb 8 13:56:37 2013 -0500 -+ -+ Fix many.c testcase for ppc -+ -+commit 7aab825cf198be85490d3cd80e778d415d85ad9b -+Author: Anthony Green -+Date: Fri Feb 8 13:26:21 2013 -0500 -+ -+ Add missing files to dist -+ -+commit cb03ea8f4eb08024e44abe4392edc77b89fbfbad -+Author: Anthony Green -+Date: Fri Feb 8 12:25:18 2013 -0500 -+ -+ sparc v9 fixes for sun tools -+ -+commit 35ee8d44f31dd3d3b88083c837dc351593e13cc2 -+Author: Anthony Green -+Date: Fri Feb 8 07:12:41 2013 -0500 -+ -+ Fix microblaze big-endian struct issue -+ -+commit 9db7e1a958fc484ba149efe027008b9a170395fb -+Author: Anthony Green -+Date: Thu Feb 7 21:06:08 2013 -0500 -+ -+ Fix botched sparc patch. Update version. -+ -+commit ce0138e61455f268af326e26908b9680ec2c4bea -+Author: Anthony Green -+Date: Thu Feb 7 18:04:01 2013 -0500 -+ -+ Update bug report address. rc2. -+ -+commit fd07c9e40451e0ec1d0475cd54a83d45ccaea2c0 -+Author: Anthony Green -+Date: Thu Feb 7 18:00:36 2013 -0500 -+ -+ Add cache flushing routine for sun compiler on sparc solaris 2.8 -+ -+commit ed6ae9501b2bab45daf93b4935eb0c977635b763 -+Author: Anthony Green -+Date: Thu Feb 7 16:43:36 2013 -0500 -+ -+ Add libtool-ldflags. Define toolexeclibdir for non-GCC builds. -+ -+commit ffef2e046aaec853be356f0b8770a335185ea9cf -+Author: Anthony Green -+Date: Thu Feb 7 15:47:01 2013 -0500 -+ -+ x32 and libtool fixes -+ -+commit 95eecebb2858dc6f1495a61072ff36d0a8127144 -+Author: Anthony Green -+Date: Thu Feb 7 15:32:46 2013 -0500 -+ -+ Remove a.out cruft from dist -+ -+commit 176aa9d2e23d9cd57d6f250692d910b408f9a651 -+Author: Anthony Green -+Date: Thu Feb 7 15:29:22 2013 -0500 -+ -+ Fix GCC usage test and update README -+ -+commit f3a4f3fdde89b04d66983a42a25d09161c5d4d54 -+Author: Anthony Green -+Date: Thu Feb 7 09:57:20 2013 -0500 -+ -+ Fixes for AIX xlc compiler. -+ -+commit 522f8fef49848927482bc63c94afaea5b84e5ec1 -+Author: Anthony Green -+Date: Wed Feb 6 20:31:31 2013 -0500 -+ -+ Fix man page. Clean out junk. -+ -+commit c4dfa259eb4e8e6f4c397868d7fee80aa0bb6a12 -+Author: Anthony Green -+Date: Wed Feb 6 17:43:24 2013 -0500 -+ -+ Bump soversion -+ -+commit f62bd63fe6123cadedb8b2b2c72eb549c40fbce9 -+Author: Anthony Green -+Date: Wed Feb 6 17:38:32 2013 -0500 -+ -+ Release candidate 1 -+ -+commit f7cd61e9e68a4a51147df04d75bfe5b91b9d9286 -+Author: Anthony Green -+Date: Wed Feb 6 17:38:04 2013 -0500 -+ -+ Fix pkgconfig install bits -+ -+commit 6a790129427121f7db2d876e7218a3104e6d2741 -+Author: Anthony Green -+Date: Wed Feb 6 17:37:15 2013 -0500 -+ -+ Work around LLVM ABI problem on x86-64 -+ -+commit 370112938e705128fd5dd4017fc1a1210bd0271a -+Merge: bada2e3 bcc0c28 -+Author: Anthony Green -+Date: Sun Jan 27 05:09:04 2013 -0800 -+ -+ Merge pull request #28 from jralls/master -+ -+ Reorder x86_64 checks -+ -+commit bcc0c28001b6d427d5cd8037d2e3c892babc6b4c -+Author: John Ralls -+Date: Sat Jan 26 15:21:14 2013 -0800 -+ -+ Reorder x86_64 tests -+ -+ So that darwin and cygwin/mingw are tested before the generic check -- -+ which allows them to actually be set. -+ -+commit bada2e326d9a9acf3ae40cfa4f5d7a9ba97b2ea8 -+Author: Anthony Green -+Date: Mon Jan 21 08:02:07 2013 -0500 -+ -+ Update README -+ -+commit 655bb8f3690feba8e840a5f1854b1d78ed08f692 -+Merge: 1035ffb 840f975 -+Author: Anthony Green -+Date: Mon Jan 21 08:01:24 2013 -0500 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+commit 1035ffb2f468e1a1c401d58cff7e7abb69838e68 -+Merge: aeb8719 4086024 -+Author: Anthony Green -+Date: Mon Jan 21 07:55:53 2013 -0500 -+ -+ Update README -+ -+commit 840f975866052fdd91b2c224d56e01ae5900b60d -+Merge: aeb8719 4086024 -+Author: Anthony Green -+Date: Mon Jan 21 07:55:53 2013 -0500 -+ -+ Merge branch 'master' of github.com:/atgreen/libffi -+ -+commit aeb8719a34756969970603fca4568530d56708af -+Author: Anthony Green -+Date: Mon Jan 21 07:37:30 2013 -0500 -+ -+ New microblaze support -+ -+commit 40860245a4fd91a1b88adc9171ec993c549e45d5 -+Author: Anthony Green -+Date: Mon Jan 21 07:37:30 2013 -0500 -+ -+ New microblaze support -+ -+commit 20cae32b152b43679ae65a85db9a1c6bb8a143dd -+Author: Anthony Green -+Date: Mon Jan 21 07:07:38 2013 -0500 -+ -+ Xtensa support -+ -+commit 9742f91782faef4a15941508a22c408fb7d1d227 -+Author: Anthony Green -+Date: Mon Jan 21 07:03:41 2013 -0500 -+ -+ Mention IBM XL compiler support on AIX. -+ -+commit f03eab08248f122ce3b623a18df9e19fae1b6e98 -+Author: Anthony Green -+Date: Fri Jan 11 17:14:11 2013 -0500 -+ -+ Remove obsolete inline test functions -+ -+commit 05fbe1faedc7b2580d5f14010d00e9e3cee73951 -+Author: Anthony Green -+Date: Fri Jan 11 16:54:40 2013 -0500 -+ -+ xlc compiler support -+ -+commit 0b4986a7889ed1864674192228f1162c1b5770a8 -+Author: Anthony Green -+Date: Fri Jan 11 11:19:52 2013 -0500 -+ -+ [travis] install dejagnu with sudo -+ -+commit 3c337eef51ab9a4993fc875bfa26289dd6a08881 -+Author: Anthony Green -+Date: Fri Jan 11 11:18:14 2013 -0500 -+ -+ [travis] install dejagnu -+ -+commit 90720962ce1baf9fc35d1bde1738102bcd5bd5ed -+Author: Anthony Green -+Date: Fri Jan 11 10:57:30 2013 -0500 -+ -+ Add first travis config file -+ -+commit bff052d9cd5be41ba9e47c76114054af487d3c30 -+Author: Anthony Green -+Date: Fri Jan 11 10:24:32 2013 -0500 -+ -+ 32-bit x86 fix and more -+ -+commit cd41aeab6176f839167955c016ecc19f65f75df3 -+Author: Anthony Green -+Date: Thu Jan 10 17:25:45 2013 -0500 -+ -+ Add compiler column to table -+ -+commit 8bf987d4df7c4d21435b9211f6cc86abf5904b42 -+Author: Anthony Green -+Date: Thu Jan 10 17:24:51 2013 -0500 -+ -+ Fix for sunpro compiler on Solaris -+ -+commit 3ee74fd6dc8ccd32b608bbff73526838fc34f70b -+Author: Anthony Green -+Date: Thu Jan 10 17:15:03 2013 -0500 -+ -+ Update documentation version. -+ -+commit 13e2d7b92557a9511a0414df82bf2df3edc55cba -+Author: Anthony Green -+Date: Thu Jan 10 10:52:02 2013 -0500 -+ -+ Handle both 32 and 64-bit x86 builds regardless of target triple -+ -+commit 5141543000fc86a3d49a907a2313713ee79e504d -+Author: Anthony Green -+Date: Thu Jan 10 07:35:53 2013 -0500 -+ -+ Don't run EH tests with non-GNU compiler -+ -+commit 56ba8d86f47937a0afb81a2b9e77c9d235d9db45 -+Author: Anthony Green -+Date: Thu Jan 10 07:25:10 2013 -0500 -+ -+ Don't use warning checking macro with sun compiler -+ -+commit 6a028caec1b2c7904feb4c4f9cb7e1125e1d1b60 -+Author: Anthony Green -+Date: Thu Jan 10 01:19:43 2013 -0500 -+ -+ Don't use GCCisms to define types when -+ + building with the SUNPRO compiler. -+ -+commit 2d9b3939751b3ef9739049509d353ade10b32a8f -+Author: Anthony Green -+Date: Wed Jan 9 21:14:54 2013 -0500 -+ -+ Fix for closures with sunpro compiler -+ -+commit 8308984e479e3274a36e98e8272b5adbb6b774c2 -+Author: Anthony Green -+Date: Tue Jan 8 15:14:21 2013 -0500 -+ -+ Make sure we're running dejagnu tests with the right compiler. -+ -+commit f26c7ca67147450db2fe25ea932944e6cf145d5c -+Author: Anthony Green -+Date: Tue Jan 8 14:47:05 2013 -0500 -+ -+ Make compiler options in dejagnu runs compiler specific -+ -+commit 74c776e21907fc2e59257c021f23077f8b7966cb -+Author: Anthony Green -+Date: Tue Jan 8 12:25:54 2013 -0500 -+ -+ Switch x86 Solaris to X86 from X86_64 -+ -+commit 8962c8c8d06803e310bac0ffc8e84ea15daeff3f -+Author: Anthony Green -+Date: Tue Jan 8 12:22:24 2013 -0500 -+ -+ Fix read-only eh_frame test -+ -+commit 35ddb69c2b49746d940e919ca226ecc1be94f14a -+Author: Anthony Green -+Date: Tue Jan 8 07:53:37 2013 -0500 -+ -+ Only emit DWARF unwind info when building with GCC -+ -+commit f7879bc3f3a8d0bbfcc38771732c160a58ba9cd8 -+Author: Anthony Green -+Date: Tue Jan 8 07:30:28 2013 -0500 -+ -+ Testsuite fix for Solaris vendor compiler -+ -+commit 67cea90fc0897021466fd102671019d30db474cd -+Author: Anthony Green -+Date: Mon Jan 7 06:30:24 2013 -0500 -+ -+ mend -+ -+commit 0de3277b18cf54be3b81d509b9be9b47d9bc1e82 -+Author: Thorsten Glaser -+Date: Mon Dec 3 00:02:31 2012 +0000 -+ -+ Testsuite fixes (was Re: [PATCH] Fix libffi on m68k-linux-gnu, completely) -+ -+ Dixi quod… -+ -+ >although I believe some 3.0.11 checks to be broken: -+ -+ And indeed, with a few minor changes on top of git master, -+ I still get a full run of PASS plus one XPASS on amd64-linux! -+ -+ With the other patches (from this message’s parent) and -+ these applied, I get a full PASS on m68k-linux as well. -+ -+ So, please git am these three diffs ☺ -+ -+ bye, -+ //mirabilos -+ -- -+ FWIW, I'm quite impressed with mksh interactively. I thought it was much -+ *much* more bare bones. But it turns out it beats the living hell out of -+ ksh93 in that respect. I'd even consider it for my daily use if I hadn't -+ wasted half my life on my zsh setup. :-) -- Frank Terbeck in #!/bin/mksh -+ From 5cb15a3bad1f0fb360520dd48bfc938c821cdcca Mon Sep 17 00:00:00 2001 -+ From: Thorsten Glaser -+ Date: Sun, 2 Dec 2012 23:20:56 +0000 -+ Subject: [PATCH 1/2] Fix tests writing to a closure retval via pointer casts -+ -+ As explained in -+ all other tests that do the same cast to an ffi_arg pointer instead. -+ -+ PASS on amd64-linux (Xen domU) and m68k-linux (ARAnyM) -+ -+ Signed-off-by: Thorsten Glaser -+ -+commit 8f4772f383abd71cfa141c8a70ba11c1aa4ebe2c -+Author: Anthony Green -+Date: Mon Jan 7 06:14:53 2013 -0500 -+ -+ m68k fixes for signed 8 and 16-bit calls. -+ -+commit ea7f8440d58afbebb181e295ff564fdf3d6590a0 -+Author: Anthony Green -+Date: Fri Jan 4 09:09:32 2013 -0500 -+ -+ remove gcc-ism -+ -+commit f06c0f10377ac04eeba5e632dbe5c62c629df4e6 -+Author: Anthony Green -+Date: Wed Jan 2 09:39:17 2013 -0500 -+ -+ Add missing ChangeLog entry and generated files. -+ -+commit 1f8675d4c101d19d67ca0a55ff2ba973349558ad -+Merge: 335f419 f6b58d2 -+Author: Anthony Green -+Date: Wed Jan 2 06:34:38 2013 -0800 -+ -+ Merge pull request #26 from rofl0r/master -+ -+ fix build error on ppc when long double == double -+ -+commit 335f419a86090cda9f215d149572f9481c3ad034 -+Merge: 53236d5 6d6f711 -+Author: Anthony Green -+Date: Wed Jan 2 06:30:03 2013 -0800 -+ -+ Merge pull request #23 from rurban/master -+ -+ cygwin/mingw shared libs need libtool LDFLAGS = -no-undefined -+ -+commit 53236d5061034cc0a7f4647fc1bd05ba1aeb3d2a -+Author: Anthony Green -+Date: Wed Jan 2 09:24:55 2013 -0500 -+ -+ Regenerate files -+ -+commit 72222ca3fbe560e13c8dc89ca441b28b7cc74daf -+Author: Anthony Green -+Date: Wed Jan 2 09:06:38 2013 -0500 -+ -+ Update texinfo.tex -+ -+commit 1e326c95431fc9896422fa36659f3e833852579c -+Author: Anthony Green -+Date: Wed Jan 2 09:05:02 2013 -0500 -+ -+ Update config.guess and config.sub -+ -+commit cb6671f5b8a9596ff968c6b6c304f70adf71b368 -+Author: Anthony Green -+Date: Wed Jan 2 08:56:07 2013 -0500 -+ -+ Missing .gitignore changes for xcode support -+ -+commit ebbe77966855395a2a47ed2c09a38f93eb0481cf -+Author: Anthony Green -+Date: Wed Jan 2 08:54:05 2013 -0500 -+ -+ missed x32 libtool patch. -+ -+commit 4394096da0aca0dd422b479a043c18b4f05c5770 -+Author: Anthony Green -+Date: Wed Jan 2 08:51:35 2013 -0500 -+ -+ missed trampoline_table patch. Move to GCC. -+ -+commit ed7a59c3ff7c84bd95c374a5aff21599f705e6dc -+Author: Anthony Green -+Date: Wed Jan 2 08:48:01 2013 -0500 -+ -+ Windows symbol export fix. Move to GCC. -+ -+commit ccee09a4ff843b11c7d8b6819776f57d187305c7 -+Author: Anthony Green -+Date: Wed Jan 2 08:41:55 2013 -0500 -+ -+ +2012-03-21 Peter Rosin -+ + -+ + * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*] -+ + (set_ld_library_path_env_vars): Add the library search dir to PATH -+ + (and save PATH for later). -+ + (restore_ld_library_path_env_vars): Restore PATH. -+ -+commit 089dbce7cc0889eb26444d89ae062c73c69f26f0 -+Author: Anthony Green -+Date: Wed Jan 2 08:37:35 2013 -0500 -+ -+ med -+ -+commit 980a334c42b4b0eff32e55929ec6727d1326b05d -+Author: Anthony Green -+Date: Wed Jan 2 07:36:42 2013 -0500 -+ -+ Test GCC update -+ -+commit 8bad679ade5000e57cdc9cacde22e8b99840930f -+Author: Anthony Green -+Date: Wed Jan 2 08:28:35 2013 -0500 -+ -+ New stand-alone patch -+ -+commit 981c32ee115e9f0d6546a74592875e138222a9d1 -+Author: Anthony Green -+Date: Wed Jan 2 07:34:03 2013 -0500 -+ -+ Merge with GCC. Eliminate quilt bits. -+ -+commit 61a054929517fb80c437ba71c91f3e20cfff581a -+Author: Anthony Green -+Date: Wed Nov 28 06:07:41 2012 -0500 -+ -+ Refresh config.guess and config.sub -+ -+commit f6b58d2bdc0a24ce94dedce59802f091979df265 -+Author: rofl0r -+Date: Thu Nov 22 16:26:21 2012 +0100 -+ -+ fix build on ppc when long double == double -+ -+commit 69da33a0761aeac73f9e9646269da61c906d6020 -+Author: Anthony Green -+Date: Mon Nov 12 15:25:47 2012 -0500 -+ -+ Pull in config.sub for aarch64 support and more -+ -+commit f680b598b7bdde325ac9349e8c35151c228bf2df -+Author: Anthony Green -+Date: Tue Nov 6 16:00:40 2012 -0500 -+ -+ Add missing aarch64 configury bits -+ -+commit dfadfb19853c57c8623c436d0ef2bdafab24b433 -+Author: Anthony Green -+Date: Wed Oct 31 06:46:41 2012 -0400 -+ -+ Rebase for ppc64 fix -+ -+commit e944b8c7eb1e2eeb9c0f3b9742b4d7f476860ce1 -+Author: Anthony Green -+Date: Tue Oct 30 14:06:09 2012 -0400 -+ -+ Add PaX work-around -+ -+commit 9ccd51be1fdeb99f8b4f42f905166c2abbba8ac0 -+Merge: f342996 fa5d747 -+Author: Anthony Green -+Date: Tue Oct 30 13:37:37 2012 -0400 -+ -+ Fix commit conflicts -+ -+commit f342996cb50eb23b868afcff5ac0cdbb6b505d63 -+Author: Anthony Green -+Date: Tue Oct 30 07:42:27 2012 -0400 -+ -+ Darwin12 fix -+ -+commit 58e8b66f70cef2e3c9b0e5a707b45d634cbbf5d9 -+Author: Anthony Green -+Date: Tue Oct 30 07:07:19 2012 -0400 -+ -+ AArch64 port -+ -+commit fa5d747905472571fd472c07d4726017624f66b3 -+Author: Anthony Green -+Date: Tue Oct 30 07:07:19 2012 -0400 -+ -+ AArch64 port -+ -+commit 6993a6686f43f2313b18142c1e96189a27db2aa3 -+Author: Anthony Green -+Date: Tue Oct 30 06:59:32 2012 -0400 -+ -+ Fix autoconf macros -+ -+commit 70084e70ddb13b29dd05c751b1904de206bbe790 -+Author: Anthony Green -+Date: Fri Oct 12 23:55:06 2012 -0400 -+ -+ Update Tile* port info -+ -+commit 9c00a3f6742d61404b31268cc773e7130ff43331 -+Author: Anthony Green -+Date: Fri Oct 12 16:46:06 2012 -0400 -+ -+ TILE-Gx/TILEPro support -+ -+commit 048d2f41c3a6664b4b64bf21e804686662da4160 -+Author: Anthony Green -+Date: Thu Oct 11 10:55:25 2012 -0400 -+ -+ Rebase -+ -+commit 6d6f71108064f5069edd7bf771059d3b82640135 -+Author: Reini Urban -+Date: Sat Jul 7 12:42:00 2012 -0500 -+ -+ cygwin/mingw shared libs need libtool LDFLAGS = -no-undefined -+ -+ otherwise only static libs are created. -+ -+commit d330f19292da8f39a78a9e2b0ba08df8094e3bc5 -+Author: Nicolas Lelong -+Date: Sat May 5 09:37:02 2012 -0400 -+ -+ iOS build fixes. -+ -+commit 09b23cfc1d6d15361eee18818851fd3cacb26559 -+Author: Anthony Green -+Date: Fri Apr 27 08:29:48 2012 -0400 -+ -+ Update README with Blackfin/uClinux support -+ -+commit 213ed15c70e72d666154c08e2b41dae3f61f20d3 -+Author: Anthony Green -+Date: Fri Apr 27 01:34:15 2012 -0400 -+ -+ Add blackfin supprt from Alexandre Keunecke. -+ -+commit ff3d76fd427382ce7d2b2ed54acdd0bce470ca4f -+Author: Anthony Green -+Date: Wed Apr 11 23:16:48 2012 -0400 -+ -+ 3.0.11 -+ -+commit 7e0a412c4fd9cbe77b467a9bf86f56aea62632c3 -+Author: Anthony Green -+Date: Wed Apr 11 22:47:44 2012 -0400 -+ -+ Update files to ship -+ -+commit 39e6a5860416f7bad992149817e1da1ba7c460d4 -+Author: Zachary Waldowski -+Date: Wed Apr 11 22:39:46 2012 -0400 -+ -+ More mac/ios build improvements -+ -+commit 853cc722a16f8d1254573ef3bb73c7b8f3d8a110 -+Author: Anthony Green -+Date: Tue Apr 10 06:33:33 2012 -0400 -+ -+ Fix typo for darwin targets -+ -+commit 3f5023068cda07a3dd6dacbaa875a5b5fc96d4bb -+Author: Anthony Green -+Date: Fri Apr 6 20:34:51 2012 -0400 -+ -+ mend -+ -+commit ebb8e8945681ce0af7a5c47a980287e8ece84b84 -+Author: Mike Lewis -+Date: Fri Apr 6 20:02:08 2012 -0400 -+ -+ Build iOS library with xcode -+ -+commit a098b44f4c592c2192fcdef4fad6108eb3f4301c -+Author: Anthony Green -+Date: Fri Apr 6 17:04:35 2012 -0400 -+ -+ Reapply missing testsuite changes for arm -+ -+commit 10d1e51393f08c14045db85843208f44f9f1e9ba -+Author: Anthony Green -+Date: Fri Apr 6 11:57:14 2012 -0400 -+ -+ Update to rc4. Upgrade autoconf version. -+ -+commit 9bcc884276dc0a807b2605e510b11b1740dd9aa2 -+Author: Anthony Green -+Date: Fri Apr 6 11:53:07 2012 -0400 -+ -+ Fix Linux/x32 reference in README -+ -+commit a044a56b1cd2a0924f5ec0d6b5a5089d14fcd1a1 -+Author: Anthony Green -+Date: Fri Apr 6 10:39:10 2012 -0400 -+ -+ Linux/x32 libtool fix -+ -+commit 59bb61a36661b972e8443531d3b7bc736e131a4b -+Author: Anthony Green -+Date: Fri Apr 6 08:26:14 2012 -0400 -+ -+ Update libtool version, README, tests dists -+ -+commit f2981454cbe25cf9411b710f46c5f5552003a123 -+Author: Anthony Green -+Date: Thu Apr 5 15:45:19 2012 -0400 -+ -+ Revert debug code changes -+ -+commit 39dccddb606f6fdb8dcb177d416e884041da6e30 -+Author: Zachary Waldowski -+Date: Thu Apr 5 12:32:41 2012 -0400 -+ -+ Fix building with Clang for Darwin (OS X 10.6+ and iOS -+ 4.0+) -+ -+commit 3afaa9a34a81a305227ae8cf4f12b9d0484d055e -+Author: Peter Rosin -+Date: Tue Apr 3 07:40:31 2012 -0400 -+ -+ Fix return_uc.c test case on windows. -+ -+commit 65f40c35a2873d8328359ec4512bd0736dbe32c7 -+Author: Anthony Green -+Date: Tue Apr 3 07:35:59 2012 -0400 -+ -+ Repair ppc build regression. -+ -+commit 0a1ab12a8d15caa894116a82249551f23ef65612 -+Author: Peter Rosin -+Date: Fri Mar 30 08:14:08 2012 -0400 -+ -+ Various MSVC-related changes. -+ -+commit e1539266e6c6dde3c99832323586f33f977d1dc0 -+Author: Anthony Green -+Date: Fri Mar 30 00:40:18 2012 -0400 -+ -+ ARM VFP fix for old toolchains -+ -+commit 7c5e60b5f47d725036a72162f136272bc407e3a1 -+Author: Anthony Green -+Date: Thu Mar 29 08:48:22 2012 -0400 -+ -+ Rebase on fixed GCC sources -+ -+commit e72ed5eeaa9cfb0fdc86f6b3422734177b659f96 -+Author: Anthony Green -+Date: Wed Mar 21 09:52:28 2012 -0400 -+ -+ Fix vararg float test -+ -+commit bd78c9c3311244dd5f877c915b0dff91621dd253 -+Author: Anthony Green -+Date: Wed Mar 21 08:09:30 2012 -0400 -+ -+ More cygwin fixes -+ -+commit 84d3253f86dad6b4f261231935675d35fd964b05 -+Author: Anthony Green -+Date: Mon Mar 19 23:07:35 2012 -0400 -+ -+ Rebase post GCC merge -+ -+commit 964c5b93f80dcaacf73056b7d15a4d2b4b7a217c -+Author: Anthony Green -+Date: Sat Mar 3 14:46:20 2012 -0500 -+ -+ abi check fixes and Linux/x32 support -+ -+commit 6c194233a5f6f1d274669afc5924a9e1f69d4876 -+Author: Anthony Green -+Date: Sat Mar 3 14:17:54 2012 -0500 -+ -+ Add -no-undefined for both 32- and 64-bit x86 -+ windows-like hosts. -+ -+commit 8360bf1cd0aba8db5582266da70467de7e89a57a -+Author: Anthony Green -+Date: Thu Feb 23 07:01:13 2012 -0500 -+ -+ Ensure that users don't include ffitarget.h directly -+ -+commit d578b89619cf3d2baff027b203619dc307fc12e3 -+Author: Anthony Green -+Date: Wed Feb 15 00:18:18 2012 -0500 -+ -+ Fix ABI check regression -+ -+commit dee20f8e45c486f5018f31e09bb362992aa498c3 -+Author: Anthony Green -+Date: Fri Feb 10 13:06:46 2012 -0500 -+ -+ Rebased from gcc -+ -+commit 4130e1972d001143e5e9f3c6b65f2a6f9524169e -+Author: Anthony Green -+Date: Fri Feb 3 13:18:27 2012 -0600 -+ -+ Refresh autoconf-archive m4 scripts -+ -+commit 1ff9c604bb214b5a305064af1049577ef783730a -+Author: Anthony Green -+Date: Wed Feb 1 16:34:30 2012 -0600 -+ -+ Rebase from GCC -+ -+commit 211060eb8f714af0e935430efa6bb45e8e3ffc5d -+Author: Anthony Green -+Date: Mon Jan 23 14:24:01 2012 -0500 -+ -+ Alpha fix -+ -+commit 78d9c638ba0de6edfbc603fd65d19c6562663248 -+Author: Anthony Green -+Date: Mon Jan 23 14:17:24 2012 -0500 -+ -+ mend -+ -+commit afaf3381604bd81803d8a5f3bf4d462299f1aac3 -+Author: Anthony Green -+Date: Mon Jan 23 14:17:13 2012 -0500 -+ -+ mend -+ -+commit 9e9c4aeb77de5608d602109f22100c1c0c79faad -+Author: Anthony Green -+Date: Mon Jan 23 14:11:23 2012 -0500 -+ -+ Add Amiga support -+ -+commit 8efc0b1f4027d5a3cbf205e55d422d94e60f3226 -+Author: Anthony Green -+Date: Mon Jan 23 13:47:38 2012 -0500 -+ -+ Unlikely fixes -+ -+commit 1df51398ae183dc208ba4599ee867278b04d13d3 -+Author: Anthony Green -+Date: Mon Jan 23 13:43:59 2012 -0500 -+ -+ mend -+ -+commit cd2277cc796b96b149cd284ae85326529fe7fb9c -+Author: Anthony Green -+Date: Mon Jan 23 13:43:38 2012 -0500 -+ -+ mend -+ -+commit 164e6fe04b189746c8bd5810c6e3e919770bb9d4 -+Author: Anthony Green -+Date: Mon Jan 23 12:41:06 2012 -0500 -+ -+ m68k fixes -+ -+commit c365ee7577bef00cb3c2c0b5224147aea04138d8 -+Author: Anthony Green -+Date: Mon Jan 23 11:13:18 2012 -0500 -+ -+ Refresh -+ -+commit f22c38bbd93bcc0c04bf26c3e414556b3177c385 -+Author: Anthony Green -+Date: Fri Nov 18 15:13:41 2011 -0500 -+ -+ Update variadic patch -+ -+commit 03e9ee321a3c208f88d2432587ce40b2bb2430ba -+Author: Anthony Green -+Date: Fri Nov 18 15:13:00 2011 -0500 -+ -+ Fix cls_double_va.c and update docs -+ -+commit 95f31151ec792809cfb80d385350f9f56d95aa25 -+Author: Anthony Green -+Date: Sat Nov 12 23:46:05 2011 -0500 -+ -+ Rerun automake -+ -+commit 198ed1ef85cf18342627f8d44bc3f12c9975a49d -+Author: Anthony Green -+Date: Sat Nov 12 23:45:20 2011 -0500 -+ -+ Update version number -+ -+commit 4f17e1f142e805b13959ba2594ee735eae439f4e -+Author: Anthony Green -+Date: Sat Nov 12 17:22:24 2011 -0500 -+ -+ Fix last patch -+ -+commit ff9454da44859716a5bd4eaa344499288c79694f -+Author: Anthony Green -+Date: Sat Nov 12 17:18:51 2011 -0500 -+ -+ Add David Gilbert's variadic function call support -+ -+commit ea14ae85e8f54ff046b7fb8a9cfe349475272044 -+Author: Anthony Green -+Date: Sat Nov 12 16:36:59 2011 -0500 -+ -+ clean up -+ -+commit 52891f8a93f9b8de801cca4cf05639422dc9773e -+Author: Anthony Green -+Date: Sat Nov 12 16:35:55 2011 -0500 -+ -+ Add powerpc soft float support -+ -+commit c8f1bde8e2566c5a87474b4d08aa934d6d28ee75 -+Author: Anthony Green -+Date: Sat Nov 12 16:21:02 2011 -0500 -+ -+ Remove junk file -+ -+commit 6a6e7f862f3cc677e19131587caa619e7f9c7ffd -+Author: Anthony Green -+Date: Sat Nov 12 16:20:42 2011 -0500 -+ -+ Fix kfreebsd -+ -+commit d52fbed05ccbdee9ed8b9c911cbb4f85b0ff0f2a -+Author: Anthony Green -+Date: Sat Nov 12 16:13:41 2011 -0500 -+ -+ Add missing ChangeLog entry -+ -+commit 322052ce65c4fdac85bedc24726fd0e0094ba521 -+Author: Anthony Green -+Date: Sat Nov 12 16:11:49 2011 -0500 -+ -+ Fix arm wince alignment issue -+ -+commit af18df2bc2f52df81e7b5c619bd86db8489dc873 -+Author: Anthony Green -+Date: Sat Nov 12 15:52:08 2011 -0500 -+ -+ Remove use of ppc string instructions -+ -+commit 236c9391321f83ad40daf03f40c35c9ebc1da6b3 -+Author: Anthony Green -+Date: Sat Nov 12 07:37:40 2011 -0500 -+ -+ Fix darwin11 build problem -+ -+commit c411f140f305ebb00d33c92b7cb2742bcd241b6a -+Author: Anthony Green -+Date: Sat Nov 12 07:32:36 2011 -0500 -+ -+ Fix ax_enable_builddir macro on BSD systems -+ -+commit 3d56106b07735abef6ae9f032e94f560a0ed2f30 -+Author: Anthony Green -+Date: Sat Nov 12 07:20:24 2011 -0500 -+ -+ Rebase -+ -+commit 8c01954c50bf8ef2e00a3db166060a1b8f83a20d -+Author: Anthony Green -+Date: Tue Sep 6 14:26:32 2011 -0400 -+ -+ Build assembly files with debug info -+ -+commit fed646a2078969f4ce89c29107f1e72e03f4a977 -+Author: Anthony Green -+Date: Tue Sep 6 09:50:20 2011 -0400 -+ -+ Regenerate configury with missing m4 macros -+ -+commit d76441cf71216f8f1e62e7ec852a7f4e21371ec8 -+Author: Anthony Green -+Date: Wed Aug 24 10:14:23 2011 -0400 -+ -+ Update list of supported OpenBSD systems -+ -+commit ee6696fdf4768ba6dd037fb6dd99435afa13816e -+Author: Anthony Green -+Date: Tue Aug 23 12:30:29 2011 -0400 -+ -+ 3.0.11-rc1. soname bump. -+ -+commit c6265c36a91eab8175d0e72db84d8225418f2379 -+Author: Anthony Green -+Date: Tue Aug 23 10:31:33 2011 -0400 -+ -+ Version 3.0.10 -+ -+commit cc5e41bf32d18a14dbdd653d52eacdbdc934c392 -+Author: Anthony Green -+Date: Mon Aug 22 16:34:24 2011 -0400 -+ -+ Fix use of autoconf macros -+ -+commit 049d8386ff52399e69a530b55b9feedc8a2589d2 -+Author: Anthony Green -+Date: Mon Aug 22 14:50:10 2011 -0400 -+ -+ Many new patches -+ -+commit 3b7efa4e74f0dcebf70b447391987aedd3473306 -+Author: Anthony Green -+Date: Mon Aug 15 13:25:13 2011 -0400 -+ -+ Revert remove-debug-code patch temporarily (for ARM Fedora release) -+ -+commit d992ac54a2a9e7e064ffebcb91e05e7cb86185c7 -+Author: Anthony Green -+Date: Fri Jul 29 17:32:53 2011 -0400 -+ -+ Refresh from GCC -+ -+commit 2d3fb36420e09304220ee6c0652bae5eccdb965d -+Author: Anthony Green -+Date: Wed Mar 30 16:54:42 2011 -0400 -+ -+ Fix darwin EH -+ -+commit 30ff28e1d8cd9ed5319f1fbe9c7cccacc8161fb3 -+Author: Anthony Green -+Date: Mon Feb 28 15:36:23 2011 -0500 -+ -+ Fix permissions -+ -+commit 09f8f310f4f53a24289682d3d28f4399d7bafc3b -+Author: Anthony Green -+Date: Mon Feb 28 15:36:07 2011 -0500 -+ -+ More AIX fixes. rc9. -+ -+commit 53d7b165642c220aa5166ba350b490802f359b54 -+Merge: 18dd85d 3000dc2 -+Author: Anthony Green -+Date: Mon Feb 28 15:23:31 2011 -0500 -+ -+ Merge branch 'master' of https://github.com/landonf/libffi-ios -+ -+commit 18dd85d6cb9f3f3eea2a3b70eb4e150045905c55 -+Author: Anthony Green -+Date: Fri Feb 25 16:23:04 2011 -0500 -+ -+ rc8. fix last patch. -+ -+commit 74ee6ea8b42e60d44a3ae8938b1e42a38c1e66b4 -+Author: Anthony Green -+Date: Fri Feb 25 15:52:14 2011 -0500 -+ -+ rc7. More AIX fixes. -+ -+commit 2541679dbd3db0014890f42192dbf8008ab923fa -+Author: Anthony Green -+Date: Fri Feb 25 15:09:13 2011 -0500 -+ -+ Fix ppc32 bug -+ -+commit cbb062cc35c518004f1ab45c847f8ec4f66069ad -+Author: Anthony Green -+Date: Thu Feb 17 20:39:21 2011 -0500 -+ -+ Another non-GCC configury fix -+ -+commit 8cf8878425e9971866fa6b27a3e4914729ad3960 -+Author: Anthony Green -+Date: Tue Feb 15 15:19:49 2011 -0500 -+ -+ Fix ax_cc_maxopt.m4 -+ -+commit 24b72070c0937f9000744c77a636f07e04786b6a -+Author: Anthony Green -+Date: Mon Feb 14 15:30:57 2011 -0500 -+ -+ Fix warning and msvcc patches -+ -+commit d72c49e556a8c516e97f6722d1be2f1209c21207 -+Author: Anthony Green -+Date: Sun Feb 13 11:41:05 2011 -0500 -+ -+ Add missing msvcc.sh -+ -+commit 3000dc237f6017a7445d8404097a4f46b73fdd29 -+Merge: 55e4a5a 1fbf9dc -+Author: Landon Fuller -+Date: Sun Feb 13 08:55:53 2011 -0500 -+ -+ Merge remote branch 'upstream/master' -+ -+commit 1fbf9dc44feea564e84ad7406d17c5d5906ce0e0 -+Author: Anthony Green -+Date: Sun Feb 13 08:06:39 2011 -0500 -+ -+ Fix bad_abi test. rc5. -+ -+commit 90af15ef5c1614b76370c4d13954586fabf9e8e3 -+Author: Anthony Green -+Date: Sat Feb 12 12:29:36 2011 -0500 -+ -+ iOS fixes -+ -+commit 55e4a5aa1568558a04aa40f16fc022e459af53e3 -+Author: Landon Fuller -+Date: Sat Feb 12 12:13:46 2011 -0500 -+ -+ Add support for building a full armv6/armv7/i386 universal iOS library -+ -+commit a0c80f279b8733d001cb5e5c5a3289ecb7a6e56a -+Author: Landon Fuller -+Date: Sat Feb 12 11:43:49 2011 -0500 -+ -+ Update my e-mail address. -+ -+commit 8195e0e11df7a53fa474caa9375f73ca1136ed66 -+Author: Landon Fuller -+Date: Sat Feb 12 11:27:00 2011 -0500 -+ -+ Fix symbol prefixes on Darwin. -+ -+commit 56b3f8cef0f28cefaa0f40fe0cf7c524adef131d -+Author: Landon Fuller -+Date: Sat Feb 12 11:14:54 2011 -0500 -+ -+ Modify the ffi_closure structures to hold table/table entry pointers instead of a code buffer. -+ -+ This re-integrates commit da2773e02ab26cc11a7f. -+ -+commit 28a00f61ff3f64c4eb2269ce2aea3d493274469e -+Author: Landon Fuller -+Date: Sat Feb 12 11:01:48 2011 -0500 -+ -+ Apple assembler support; fixed most gas/ELF-isms. -+ -+commit 7f2ea33a80bfced5e48ed7292f3b8f057d54ff8f -+Author: Landon Fuller -+Date: Sat Feb 12 10:39:18 2011 -0500 -+ -+ Replace RETLDM macro. -+ -+ The macro is incompatible with Apple's assembler; switch to -+ a simple inline version. -+ -+commit 92ff23e77fa586455b427b71f49e1d9502470e6e -+Author: Landon Fuller -+Date: Sat Feb 12 10:24:49 2011 -0500 -+ -+ Switch to the current iOS 4.2 SDK. -+ -+commit 58fb8ca2dfb89ad70284bb9678d3d4dbb658c8a7 -+Merge: cc3fbd9 71c792f -+Author: Landon Fuller -+Date: Sat Feb 12 10:23:19 2011 -0500 -+ -+ Merge remote branch 'upstream/master' -+ -+commit cc3fbd975ce9366d4c40a6ff6c108f664867bd7c -+Merge: e449a43 f6ab3ed -+Author: Landon Fuller -+Date: Sat Feb 12 10:21:02 2011 -0500 -+ -+ Merge branch 'master' of github.com:landonf/libffi-ios -+ -+commit e449a43bbe12f8119399928db1ae26adc71dde14 -+Author: Landon Fuller -+Date: Sat Feb 12 10:20:42 2011 -0500 -+ -+ Allow specification of the minimum supported iOS version. -+ -+commit 71c792f51bcf3e2f334e5ea1fb1a8b667cb3aedb -+Author: Anthony Green -+Date: Sat Feb 12 09:33:11 2011 -0500 -+ -+ rc4 -+ -+commit 7c7c9f327299331022f6000603a35f2310dfe308 -+Author: Anthony Green -+Date: Sat Feb 12 09:29:29 2011 -0500 -+ -+ ungccify parts of the build -+ -+commit ed62e48b95a0fa60b685f647cb73c9e190eec35c -+Author: Anthony Green -+Date: Fri Feb 11 12:23:58 2011 -0500 -+ -+ Fix permissions -+ -+commit 17d9e9e68ddb1b915a0b9751713033861b598575 -+Author: Anthony Green -+Date: Fri Feb 11 12:23:20 2011 -0500 -+ -+ Use newer autotools. Only build debug.c when --enable-debug. -+ -+commit 6972a4ffda75761eaab7dfbe0fb1516b255e8e0c -+Author: Anthony Green -+Date: Fri Feb 11 07:32:51 2011 -0500 -+ -+ Fix xlc build on AIX -+ -+commit 1833aa0fb9831eb0725b63e35886c0f6d35df480 -+Author: Anthony Green -+Date: Fri Feb 11 07:11:04 2011 -0500 -+ -+ sparc ABI test fix. -+ -+commit f1fb139b4e283fffdcf205a903943d5e9d2bb2a2 -+Author: Anthony Green -+Date: Wed Feb 9 18:30:02 2011 -0500 -+ -+ Fix tests -+ -+commit 5cb470331d181c84d5d621e88868327a324a5898 -+Author: Anthony Green -+Date: Wed Feb 9 15:23:06 2011 -0500 -+ -+ Fix permissions -+ -+commit 269deef6dbbb426695919d3398357fada3bb288c -+Author: Anthony Green -+Date: Wed Feb 9 15:22:23 2011 -0500 -+ -+ rc3 -+ -+commit 42695e72504f647444b8e8e9b90bd24f1e3220e1 -+Author: Anthony Green -+Date: Wed Feb 9 15:12:35 2011 -0500 -+ -+ Fix IRIX support -+ -+commit a6e56b97f62a3feeb3301c24a2e4cae55e546021 -+Author: Anthony Green -+Date: Wed Feb 9 15:00:42 2011 -0500 -+ -+ Add powerpc64-*-darwin* support -+ -+commit 747d6c32d4abb07c10c3a1f93579c3929aaa2487 -+Author: Anthony Green -+Date: Wed Feb 9 14:56:23 2011 -0500 -+ -+ Add Interix support -+ -+commit eab6e41cde382aa07de6c011d514a14c0d62eb47 -+Author: Anthony Green -+Date: Wed Feb 9 10:15:02 2011 -0500 -+ -+ Remove README.markdown form libffi-ios -+ -+commit 69dbe845f4ee3e6ce8999f17a1e4f2179ef7da89 -+Author: Anthony Green -+Date: Wed Feb 9 07:38:43 2011 -0500 -+ -+ Fix xfails -+ -+commit f498318c07b95137fe259d86bdbe15347588b84a -+Author: Anthony Green -+Date: Wed Feb 9 06:26:46 2011 -0500 -+ -+ Update README for iOS again -+ -+commit 630b9c0ac43c7edcbfd892e23c09fb26724f4ac0 -+Author: Anthony Green -+Date: Wed Feb 9 06:24:23 2011 -0500 -+ -+ Update to rc2 -+ -+commit 0cad4386fa4c9ea5f8ca88b16247db4e5c8fea90 -+Author: Anthony Green -+Date: Wed Feb 9 06:11:46 2011 -0500 -+ -+ Add ChangeLog entry. Fix copyright headers. -+ -+commit 09cb76f2645bd2c151846e9249d8ea707ba01e8c -+Author: Anthony Green -+Date: Tue Feb 8 20:39:51 2011 -0500 -+ -+ Add missing change -+ -+commit 2e3a48ccdd54340983c46a29a0b41985e3e789ac -+Author: Anthony Green -+Date: Tue Feb 8 20:37:26 2011 -0500 -+ -+ Fix make dist -+ -+commit 5e4814d9928e236a2a4afe84d6e1d4fdaa473206 -+Author: Anthony Green -+Date: Tue Feb 8 19:46:28 2011 -0500 -+ -+ fix permissions -+ -+commit 5c0cc6f1536aa1738795a97303810a823c7fa2cb -+Author: Anthony Green -+Date: Tue Feb 8 19:45:59 2011 -0500 -+ -+ 3.0.10rc1 -+ -+commit 857fe3de46d2286afa2fe772920ecf4aefa1688f -+Author: Anthony Green -+Date: Tue Feb 8 19:39:20 2011 -0500 -+ -+ Clean ups -+ -+commit e2214f8adb5577c247452e2cc9f4cbe304d7ca9f -+Author: Anthony Green -+Date: Tue Feb 8 19:22:56 2011 -0500 -+ -+ Update README -+ -+commit 1106229a5721a659da5c231ec0e8211119615394 -+Merge: bc9d0be f6ab3ed -+Author: Anthony Green -+Date: Tue Feb 8 19:20:09 2011 -0500 -+ -+ Add iOS support -+ -+commit bc9d0be2958ce475757f34dd2c878948aa77a39f -+Author: Anthony Green -+Date: Tue Feb 8 17:04:26 2011 -0500 -+ -+ 3.0.10rc0 changes -+ -+commit 3b836249feae6d08d3e6887486e4b9961ddafa09 -+Author: Anthony Green -+Date: Tue Feb 8 14:28:59 2011 -0500 -+ -+ Rebase from GCC -+ -+commit a26e3940619faeba6de54824c9540c90b1aab513 -+Author: Anthony Green -+Date: Tue Feb 8 13:56:12 2011 -0500 -+ -+ copyright updates patch -+ -+commit b8099539f00e224107594101e9760b6dc081a056 -+Author: Anthony Green -+Date: Tue Feb 8 13:50:43 2011 -0500 -+ -+ Fix msvcc.sh botch -+ -+commit dc411e8f99113a34656bfd2d3ae51259972488cc -+Author: Anthony Green -+Date: Tue Feb 8 10:49:29 2011 -0500 -+ -+ Fix HP-UX build -+ -+commit 404585d1348e30ac58203bbd876d9131e5aed874 -+Author: Anthony Green -+Date: Tue Feb 8 10:44:36 2011 -0500 -+ -+ Fix sparc v8 aggregate type returns for sun's compiler -+ -+commit 19ce713188e193e4522740d24c20170411883d2d -+Author: Anthony Green -+Date: Tue Feb 8 10:34:23 2011 -0500 -+ -+ grammar fix -+ -+commit 89284fe55f1a8ad3bddbea796ee00d0e3ba411ce -+Author: Anthony Green -+Date: Tue Feb 8 10:19:19 2011 -0500 -+ -+ Fix AIX build with IBM XLC -+ -+commit ba022c338af97cb18d9f8ed5a607fd483a61c09c -+Author: Anthony Green -+Date: Tue Feb 8 10:12:48 2011 -0500 -+ -+ fix win64-underscore patch -+ -+commit 097e5f3924ee92a3ba6cd72f787da8a3eb14fea3 -+Author: Anthony Green -+Date: Tue Feb 8 10:11:00 2011 -0500 -+ -+ x86 pcrel test part 2 -+ -+commit ed2c518d960b91d444be74e5a55779a9c4602f3b -+Author: Anthony Green -+Date: Tue Feb 8 10:10:07 2011 -0500 -+ -+ x86 pcrel test -+ -+commit 0e5843995f46900ef212531281e08b224464f413 -+Author: Anthony Green -+Date: Tue Feb 8 07:52:40 2011 -0500 -+ -+ Refresh from GCC -+ -+commit 5b9cd52784339a42e417174a55e310e214d435f9 -+Author: Anthony Green -+Date: Mon Nov 22 15:19:57 2010 -0500 -+ -+ win64-underscore patch -+ -+commit 2db72615b50eb5c0f29725c02c740a2f0d7fc7d9 -+Author: Anthony Green -+Date: Sun Nov 21 10:50:56 2010 -0500 -+ -+ Rebase -+ -+commit f6ab3edc23dc8fc7c47a31c896044150c23f04b5 -+Author: Landon Fuller -+Date: Wed Oct 27 19:34:51 2010 -0400 -+ -+ Include the license header in the generated output. -+ -+commit cef619462887fa0f360e3ee702d1e04f112b5b38 -+Author: Landon Fuller -+Date: Wed Oct 27 13:59:30 2010 -0400 -+ -+ Add missing copyright/license header. -+ -+commit 53f387b203413c9aa6e31f49dbb70d37d816330b -+Author: Landon Fuller -+Date: Sun Sep 19 19:57:17 2010 -0700 -+ -+ Minor README fix. -+ -+commit 4fbcb5b5fbce11f4b168060e00639db33c85b75b -+Author: Landon Fuller -+Date: Sun Sep 19 19:50:37 2010 -0700 -+ -+ Minor README fix. -+ -+commit 8e7652ef6acab5db7a29f786686a54f05cdbdc7d -+Author: Landon Fuller -+Date: Sun Sep 19 19:49:39 2010 -0700 -+ -+ Add a libffi-ios-specific github README. -+ -+commit 83038cf24aa1a92b62b91ffee1dcc25d79243484 -+Author: Landon Fuller -+Date: Sun Sep 19 14:36:45 2010 -0700 -+ -+ Implement FFI_EXEC_TRAMPOLINE_TABLE allocator for iOS/ARM. -+ -+ This provides working closure support on iOS/ARM devices where -+ PROT_WRITE|PROT_EXEC is not permitted. The code passes basic -+ smoke tests, but requires further review. -+ -+commit b00ff3e98fdde622cef617030e14d5356dff988f -+Author: Landon Fuller -+Date: Sun Sep 19 14:22:26 2010 -0700 -+ -+ Rename the generated symbol -+ -+commit da2773e02ab26cc11a7fe87e985599f35cdf0649 -+Author: Landon Fuller -+Date: Sun Sep 19 14:21:37 2010 -0700 -+ -+ Modify the ffi_closure structures to hold table/table entry pointers instead of a code buffer. -+ -+commit 01d71b7bed41844f80cb9feef20dcc5ece5ba2d0 -+Author: Landon Fuller -+Date: Sun Sep 19 14:21:14 2010 -0700 -+ -+ Regenerated the autoconf script -+ -+commit 19afda0069c42e51c81dca7b10a5cf884b4cdce0 -+Author: Landon Fuller -+Date: Sun Sep 19 14:20:52 2010 -0700 -+ -+ Enable AC_SUBST for FFI_EXEC_TRAMPOLINE_TABLE -+ -+commit 9e1196444e78aef20028c18891f44ebe39a815fd -+Author: Landon Fuller -+Date: Sun Sep 19 10:43:06 2010 -0700 -+ -+ Add a hard-coded FFI_EXEC_TRAMPOLINE_TABLE arm implementation. -+ -+ This implements support for re-mapping a shared table of executable -+ trampolines directly in front of a writable configuration page, working -+ around PROT_WRITE restrictions for sandboxed applications on Apple's -+ iOS. -+ -+ This implementation is for testing purposes; a proper allocator is still -+ necessary, and ARM-specific code needs to be moved out of -+ src/closures.c. -+ -+commit f38364b399184e682fc3e785084bd497827bc5af -+Author: Landon Fuller -+Date: Sun Sep 19 10:42:36 2010 -0700 -+ -+ Fix symbol prefix for ffi_closure_SYSV_inner on Darwin. -+ -+commit 36849e7716b77aa25e4175d1f4be1b93dbf47aac -+Author: Landon Fuller -+Date: Sun Sep 19 09:35:04 2010 -0700 -+ -+ Whitespace/comment fixes. -+ -+commit b764162526854686e579a48b6ac5981f4eb886a3 -+Author: Landon Fuller -+Date: Sun Sep 19 09:04:34 2010 -0700 -+ -+ Fix the script name (build-iphone.sh -> build-ios.sh) -+ -+commit a3d9aa85013341451ea97766485b7a11852d32b2 -+Author: Landon Fuller -+Date: Sun Sep 19 09:03:52 2010 -0700 -+ -+ Update the autogenerated autoconf/automake files. -+ -+commit c71480eaf839f26bbdfcd8965f65ac4d8defddc0 -+Author: Landon Fuller -+Date: Sun Sep 19 09:02:05 2010 -0700 -+ -+ Update automake/autoconf to conditionally build src/arm/trampoline.S if FFI_EXEC_TRAMPOLINE_TABLE is enabled. -+ -+commit 9af9291b73bc5e27ecd949bec8157f20426d65b8 -+Author: Landon Fuller -+Date: Sun Sep 19 08:52:33 2010 -0700 -+ -+ Add the trampoline table generated by gentramp.sh -+ -+commit 68ce0c383ece84f69945d1c8c3fed03f7f9cb5d6 -+Author: Landon Fuller -+Date: Sun Sep 19 08:38:19 2010 -0700 -+ -+ Add a shell script that generates the ARM trampoline page. -+ -+ This generates a page of 340 trampolines, aligned within one page. The -+ trampolines use pc-relative addressing to reference config data -+ (context, jump address) from a page placed directly prior to the -+ trampoline page. This can be used on systems -- such as iOS -- that do not -+ support writable, executable memory by remapping the executable page -+ containing the trampolines directly above a newly allocated writable -+ config page. -+ -+commit 75af086be8830a8eafe9b1ebda199d788bcb0c62 -+Author: Landon Fuller -+Date: Sat Sep 18 18:12:19 2010 -0700 -+ -+ Update autoconf files -+ -+commit 1ac92cca9b02ef8d6a769f0de1adccd5c9630355 -+Author: Landon Fuller -+Date: Sat Sep 18 18:08:14 2010 -0700 -+ -+ Add autoconf check for W^X platforms that require a trampoline table. -+ -+ This adds the FFI_EXEC_TRAMPOLINE_TABLE. The flag is enabled for -+ arm-apple-darwin, where PROT_EXEC on writable (or formerly writable) pages is -+ not permitted for sandboxed binaries. -+ -+commit be72fbab29b7190c702d8e1ac3d149855e95879d -+Author: Landon Fuller -+Date: Sat Sep 18 18:02:25 2010 -0700 -+ -+ Use the correct host triple for arm/darwin -+ -+commit 70150bdf4509269965c72f2032bf74f285767afe -+Author: Landon Fuller -+Date: Sat Sep 18 16:38:03 2010 -0700 -+ -+ Add missing UNWIND entry; disables .pad on non-EABI targets. -+ -+commit 6b452bafaec498df975ba8ac4c99de174e5f74f7 -+Author: Landon Fuller -+Date: Sat Sep 18 16:21:32 2010 -0700 -+ -+ Apple assembler support; fixed most gas/ELF-isms. -+ -+commit 8ddac835b6f8b54ede764d0ea977dee4c82e2d67 -+Author: Landon Fuller -+Date: Sat Sep 18 15:38:06 2010 -0700 -+ -+ Fix placement of the __APPLE__ macro. -+ -+commit 69043d02936bb0579ac59b4ee1ed8dec38c38db7 -+Author: Landon Fuller -+Date: Sat Sep 18 15:32:08 2010 -0700 -+ -+ Work-around libffi's FP ABI detection. -+ -+ On iOS, we must use the AAPCS floating point return value calling -+ conventions. libffi's ARM implementation will only use these conventions -+ if __SOFTFP__ is defined, which is not the case when GCC's -+ -mfloat-abi defaults to 'softfp' instead of 'soft'. To work around this -+ we manually define __SOFTFP__ for Apple platforms in the ARM-specific -+ sysv.S. -+ -+ See also: -+ http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Introduction/Introduction.html -+ http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf -+ -+commit a82e6c354ea805114642a6e440abd0832cb1d23f -+Author: Landon Fuller -+Date: Sat Sep 18 14:44:24 2010 -0700 -+ -+ Add a stub iOS build script to drive autoconf -+ -+commit 84e8de6e9fc19388f6f1102c013b7d0d52940ecc -+Author: Anthony Green -+Date: Fri Aug 6 01:35:12 2010 -0400 -+ -+ Restore execute permissions -+ -+commit 3aeecc9eb1a6feba6549849cdd335c926415a4fc -+Author: Anthony Green -+Date: Thu Aug 5 15:19:00 2010 -0400 -+ -+ Fix win64-struct-args patch -+ -+commit 00d0b59cd13f89ab8b44bd894eb7f0a131fcb472 -+Author: Anthony Green -+Date: Thu Aug 5 14:56:53 2010 -0400 -+ -+ Fix debug build for windows -+ -+commit bda487e87064f27965155459a62dc52a744778d0 -+Author: Anthony Green -+Date: Thu Aug 5 09:02:41 2010 -0400 -+ -+ Don't use -safeseh with ml64 -+ -+commit c1d28ba8d5029795af313ffeb81c97efc6d4c847 -+Author: Anthony Green -+Date: Thu Aug 5 08:48:16 2010 -0400 -+ -+ stdcall-x86-closure-fix -+ -+commit 5feacad4a56c85b3f23a267a30b2cf424cd59548 -+Author: Anthony Green -+Date: Thu Aug 5 08:30:04 2010 -0400 -+ -+ define generic symbols carefully -+ -+commit 10ea848900bc3018ac213cef52b44cacbe5cbebc -+Author: Anthony Green -+Date: Thu Aug 5 08:24:27 2010 -0400 -+ -+ don't copy win64 struct args -+ -+commit d14178be4c49c3ada44a9fe9efe11d444372ddab -+Author: Anthony Green -+Date: Fri Jul 23 09:14:00 2010 -0400 -+ -+ FFI_LAST_ABI fix -+ -+commit 3f5b1375ab1e2b8e3d593e21b27097a4a50f9b83 -+Author: Anthony Green -+Date: Mon Jul 12 14:39:18 2010 -0400 -+ -+ rebase -+ -+commit eaf444eabc4c78703c0f98ac0197b1619c1b1bef -+Author: Anthony Green -+Date: Sat Jul 10 08:59:09 2010 -0400 -+ -+ Fix selinux test -+ -+commit 630974152247f100ece4d44f10c3721bb4599fbf -+Author: Anthony Green -+Date: Wed May 5 20:14:56 2010 -0400 -+ -+ Micharl Kohler's spelling fixes -+ -+commit 9dc9a293f3d4589fcaf02dd4288c8cebaefa508e -+Author: Anthony Green -+Date: Tue Apr 13 10:33:52 2010 -0400 -+ -+ Rebase to latest GCC sources -+ -+commit f2c2a4fce9b3eca9f39b4f3545118bc256da4a73 -+Author: Anthony Green -+Date: Tue Apr 13 10:19:28 2010 -0400 -+ -+ Remove warnings and add OS/2 support -+ -+commit c0b69e57d529e33d18b658cc5572a21e3663247c -+Author: Anthony Green -+Date: Tue Mar 30 08:30:22 2010 -0400 -+ -+ Dan Witte's windows build fixes. -+ -+commit 59a259f4d348f593b45f452309f4d020a28051c4 -+Author: Anthony Green -+Date: Mon Mar 15 05:57:51 2010 -0400 -+ -+ Remove junk file -+ -+commit 3de1eb36d37a66829e606421939874d0d60d816d -+Author: Anthony Green -+Date: Mon Mar 15 05:57:24 2010 -0400 -+ -+ fix-comments patch -+ -+commit c3813b6d7f8a777700f4c5862190c0db148d4de8 -+Author: Anthony Green -+Date: Tue Jan 26 16:48:56 2010 -0500 -+ -+ Rebuild Makefiles with automake 1.11.1 for CVE-2009-4029. -+ -+commit 8d27f68baa365bf883b6053c5f6bc819646d5434 -+Author: Anthony Green -+Date: Fri Jan 15 11:35:37 2010 -0500 -+ -+ Mention recent changes in README -+ -+commit ff3cd68b8cf2d9a28cad7aa9beff46236eacec8c -+Author: Anthony Green -+Date: Fri Jan 15 11:27:24 2010 -0500 -+ -+ Add msvc.sh wrapper -+ -+commit cadeba6cb53414a1253582f1719c286665de7b6c -+Author: Anthony Green -+Date: Fri Jan 15 10:46:51 2010 -0500 -+ -+ Microsoft Visual C port -+ -+commit 0739e7dc00db766eb64f502ec4137b817638c9a1 -+Author: Anthony Green -+Date: Fri Jan 15 09:48:33 2010 -0500 -+ -+ Add x86 Sun Studio compiler support -+ -+commit edfdfd2e85b8d01d2455934f1d7f4d7eb2f3cf1c -+Author: Anthony Green -+Date: Wed Jan 13 02:56:19 2010 -0500 -+ -+ Add closure example doc -+ -+commit 7b7a42f221cf171e8d09df34cac6dc1fd8458cc3 -+Author: Anthony Green -+Date: Tue Jan 12 09:14:14 2010 -0500 -+ -+ Rebase from GCC -+ -+commit 4b18d1f73dc7733137869e4ab5725cb90c1c8fde -+Author: Anthony Green -+Date: Fri Jan 1 10:24:27 2010 -0500 -+ -+ Add x86-64 MingW to README -+ -+commit c3042afaf3f84abbbe9c91bf9bc9896b0d9eb003 -+Author: Anthony Green -+Date: Fri Jan 1 08:08:02 2010 -0500 -+ -+ Reset quilt patches post 3.0.9 merge with GCC -+ -+commit b0304e9679bdfec6ac45a57b5c96542697249418 -+Author: Anthony Green -+Date: Thu Dec 31 11:32:40 2009 -0500 -+ -+ Update version -+ -+commit 2e7e03d014d9c9bf40e97ce75cba089ad052fa6b -+Author: Anthony Green -+Date: Thu Dec 31 07:43:22 2009 -0500 -+ -+ Final updates before 3.0.9 -+ -+commit aea706c52825c8eee677ffa7fdbdd3aed1725492 -+Author: Anthony Green -+Date: Tue Dec 29 10:09:31 2009 -0500 -+ -+ really 3.0.9rc12 -+ -+commit 0cfe60e9d13f132b88995cfee41f2156344f6fa2 -+Author: Anthony Green -+Date: Tue Dec 29 10:06:04 2009 -0500 -+ -+ 3.0.9rc12 -+ -+commit 14e2e92e8645804b6940b3e96c98e9f7f384a6b2 -+Author: Anthony Green -+Date: Sun Dec 27 21:03:33 2009 -0500 -+ -+ 3.0.9rc11 -+ -+commit 884402787bf8eaf7ec207085037cf8ace2f660ec -+Author: Anthony Green -+Date: Sat Dec 26 12:57:23 2009 -0500 -+ -+ HPUX support and avr32 test fixes. -+ -+commit 01c78756aff22efb1f122f8e93e068d7bf2185c7 -+Author: Anthony Green -+Date: Sat Dec 26 10:05:18 2009 -0500 -+ -+ 3.0.9rc9 -+ -+commit 70868464651320268d79c6894db5a50fdc11032a -+Author: Anthony Green -+Date: Sat Dec 26 09:58:03 2009 -0500 -+ -+ Remove xfails for mips and arm -+ -+commit 838d4ad920ec85cf5ca3b511221d67f6d9a99024 -+Author: Anthony Green -+Date: Sat Dec 26 09:57:27 2009 -0500 -+ -+ Remove a bunch of xfails. -+ -+commit 7e37eaaf772f48906e69618c773b0a36c3927de9 -+Author: Anthony Green -+Date: Sat Dec 26 07:46:50 2009 -0500 -+ -+ Fix huge_struct for solaris -+ -+commit 07cc7a37194bc34064ebed7f2724333a798411c8 -+Author: Anthony Green -+Date: Sat Dec 26 07:23:04 2009 -0500 -+ -+ 3.0.9rc8 -+ -+commit 2b9be16ffabc81326128bc1bbdddff8ddc5d13d3 -+Author: Anthony Green -+Date: Sat Dec 26 07:04:45 2009 -0500 -+ -+ 3.0.9rc8 -+ -+commit 9458d88f676e9a21ab8993a54e16754b11687419 -+Author: Anthony Green -+Date: Sat Dec 26 07:02:27 2009 -0500 -+ -+ Rebase from GCC -+ -+commit 6a3412417593f068a04dc6163f4269cb295ad5ca -+Author: Anthony Green -+Date: Sat Dec 26 06:51:33 2009 -0500 -+ -+ Add Andreas Schwab's powerpc fix -+ -+commit 39c8792ece1043f41f4c395a2ce71f4cf0ff4674 -+Author: Anthony Green -+Date: Fri Dec 25 21:52:28 2009 -0500 -+ -+ 3.0.9rc7 -+ -+commit 1d04af52e3e24db69f742064694c22f8df5cc70e -+Author: Anthony Green -+Date: Fri Dec 25 09:50:36 2009 -0500 -+ -+ Updated some mips XFAILs -+ -+commit 26e9509c9b7929bc4fcf697071699051a652b1fd -+Author: Anthony Green -+Date: Fri Dec 25 02:19:23 2009 -0500 -+ -+ Clean up ChangeLog.libffi for older patches. -+ -+commit 9c157d3215e4393777f83eb6fa801df6528f40d7 -+Author: Anthony Green -+Date: Fri Dec 25 02:15:40 2009 -0500 -+ -+ Clean up undefine_AC_ARG_VAR_PRECIOUS patch. -+ -+commit d22de05b0bfc480766bc1240615ce2830eee71b8 -+Author: Anthony Green -+Date: Fri Dec 25 02:04:23 2009 -0500 -+ -+ Fix patches -+ -+commit 1fe3dc7c20dc4dbd8fed0d19c8618027d44ed971 -+Author: Anthony Green -+Date: Fri Dec 25 01:39:00 2009 -0500 -+ -+ Add windows support patch. -+ -+commit f7c0bc613a88f7dbc2d18b345c10fa438833c170 -+Author: Anthony Green -+Date: Fri Dec 25 01:22:11 2009 -0500 -+ -+ 3.0.9rc6 -+ -+commit c7fa2da8260258c11ab1dc7ac06fb611a2c1b50f -+Author: Anthony Green -+Date: Thu Dec 24 07:22:44 2009 -0500 -+ -+ 3.0.9rc6 -+ -+commit da11bece0fde66fc0268db3a01207dda857e25d2 -+Author: Anthony Green -+Date: Thu Dec 24 05:34:46 2009 -0500 -+ -+ Release 3.0.9rc5 -+ -+commit e3399b11edeab546b066bfc18574f3edb905d0dc -+Author: Anthony Green -+Date: Thu Dec 24 01:09:32 2009 -0500 -+ -+ Update README -+ -+commit 115ab36fceee69740a01ce49bc27e1908cc237b1 -+Author: Anthony Green -+Date: Thu Dec 24 00:22:00 2009 -0500 -+ -+ Update missing changes for 3.0.9r4. -+ -+commit f8c7a245bf5a80bd7e730ec03fcad17c8dcfcb07 -+Author: Anthony Green -+Date: Wed Dec 23 23:46:22 2009 -0500 -+ -+ Switch to quilt. Rebase to latest GCC. -+ -+commit ce806772f02387b9a74f6496a263a368bccd5d59 -+Merge: cd98813 dcc1f6b -+Author: Anthony Green -+Date: Mon Oct 5 00:41:35 2009 -0400 -+ -+ Merge branch 'master' of git@github.com:atgreen/libffi -+ -+commit dcc1f6b4f1ffd2713bf68b791a13f85d455c8b1b -+Author: Anthony Green -+Date: Mon Oct 5 00:29:33 2009 -0400 -+ -+ More clean up. -+ -+commit 2829f5941a223b9d851d8ab6318318e6197d7e01 -+Author: Anthony Green -+Date: Mon Oct 5 00:28:03 2009 -0400 -+ -+ Clean up -+ -+commit cd98813de517ea64041637e3e78d27a001d6d3b4 -+Author: Anthony Green -+Date: Mon Oct 5 00:25:29 2009 -0400 -+ -+ From Jens Rehsack. Fix for 64-bit AIX. -+ -+commit e4a91de766acc47f6c50f13cc11719a65e23ecba -+Author: Anthony Green -+Date: Mon Oct 5 00:16:17 2009 -0400 -+ -+ From Abdulaziz Ghuloum. Adds special case for Snow Leopard. -+ -+commit 3425a763bcdaadb8b430226f427ec833afdcc96a -+Author: Anthony Green -+Date: Sun Oct 4 23:57:29 2009 -0400 -+ -+ Fix detection of free/openbsd. From Alexis Ballier. -+ -+commit 2340e7a777902de61499d47823ad8d5e0eeb6203 -+Author: Anthony Green -+Date: Sun Oct 4 23:53:17 2009 -0400 -+ -+ AVR support -+ -+commit 5cbe2058c128e848446ae79fe15ee54260a90559 -+Author: Anthony Green -+Date: Sun Oct 4 23:53:11 2009 -0400 -+ -+ Initial stand-alone patch. -+ -+commit c6dddbd02bad9654ed58cdb0feb360934d105dec -+Author: Anthony Green -+Date: Sun Oct 4 08:11:33 2009 -0400 -+ -+ Initial commit -+ -+commit 5ffc0c37486fb1538bccc0ca7acc807d4f1af932 -+Author: Anthony Green -+Date: Sun Oct 4 07:58:22 2009 -0400 -+ -+ Update version to 3.0.9rc1. Add more useful things to .gitignore. -+ -+commit bd29f83ee9f6fa6b65adee9d3f57834f364d9887 -+Author: Anthony Green -+Date: Tue Sep 29 12:07:26 2009 -0400 -+ -+ Add .gitignore -+ -+commit 9474f853f83e3f0167c1b306177321bfcc93e56d -+Author: Anthony Green -+Date: Tue Sep 29 11:13:02 2009 -0400 -+ -+ Remove old CVSROOT files. -+ -+commit 0c25275ec24bfe2c2c25a000465f0950ef9dd51b -+Author: twall -+Date: Wed Aug 19 12:57:34 2009 +0000 -+ -+ Apply Dave Korn's cygwin/GCC changes -+ -+commit 39228c27ed3f677a95b46380a8d31602b5777e1a -+Author: aph -+Date: Tue Jun 16 18:00:47 2009 +0000 -+ -+ 2009-06-16 Wim Lewis -+ -+ * src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are -+ supposed to be callee-saved. -+ * src/powerpc/sysv.S (small_struct_return_value): Fix overrun of -+ return buffer for odd-size structs. -+ -+commit 5e93cc704d127c2c8ae7f5d2cef621145d43e777 -+Author: aph -+Date: Tue Jun 16 17:41:47 2009 +0000 -+ -+ 2009-06-16 Andreas Tobler -+ -+ PR libffi/40444 -+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): Add -+ allow_stack_execute for Darwin. -+ -+commit b509af8959dc371b92392c623522ea6f4946a71d -+Author: aph -+Date: Tue Jun 16 16:17:52 2009 +0000 -+ -+ 2009-06-16 Andrew Haley -+ -+ * configure.ac (TARGETDIR): Add missing blank lines. -+ * configure: Regenerate. -+ -+commit d57e96dc56ee76fbbb9b59d73aeaa92354db5ecb -+Author: aph -+Date: Tue Jun 16 09:59:02 2009 +0000 -+ -+ 2009-06-16 Andrew Haley -+ -+ * testsuite/libffi.call/cls_align_sint64.c, -+ testsuite/libffi.call/cls_align_uint64.c, -+ testsuite/libffi.call/cls_longdouble_va.c, -+ testsuite/libffi.call/cls_ulonglong.c, -+ testsuite/libffi.call/return_ll1.c, -+ testsuite/libffi.call/stret_medium2.c: Fix printf format -+ specifiers. -+ * testsuite/libffi.call/huge_struct.c: Ad x86 XFAILs. -+ * testsuite/libffi.call/float2.c: Fix dg-excess-errors. -+ * testsuite/libffi.call/ffitest.h, -+ testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define. -+ -+commit b01d6d1982c9e020507029bfd5a58a8c60d111fa -+Author: aph -+Date: Tue Jun 16 09:44:54 2009 +0000 -+ -+ 2009-06-16 Andrew Haley -+ -+ * testsuite/libffi.call/err_bad_typedef.c: xfail everywhere. -+ * testsuite/libffi.call/err_bad_abi.c: Likewise. -+ -+commit 35b6ded138591900a88055a8a8ac1fadc29a76d6 -+Author: aph -+Date: Fri Jun 12 15:29:20 2009 +0000 -+ -+ 2009-06-11 Kaz Kojima -+ -+ * testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*. -+ * testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*. -+ * testsuite/libffi.call/err_bad_typedef.c: Likewise. -+ -+commit acc46605f2d95d67d69398e7644610f10a157ce3 -+Author: aph -+Date: Fri Jun 12 14:21:28 2009 +0000 -+ -+ 2009-06-12 Andrew Haley -+ -+ * ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c, -+ testsuite/libffi.call/cls_align_uint64.c, -+ testsuite/libffi.call/cls_ulonglong.c, -+ testsuite/libffi.call/return_ll1.c, -+ testsuite/libffi.call/stret_medium2.c: Fix printf format -+ specifiers. -+ testsuite/libffi.special/unwindtest.cc: include stdint.h. -+ -+commit 16d1996ed0797bd7c11aca2b0fe7e7748751aaf6 -+Author: twall -+Date: Thu Jun 11 14:27:42 2009 +0000 -+ -+ update changelog -+ -+commit 92a515c33efe91be3cb0258f01c63aff208489c7 -+Author: twall -+Date: Thu Jun 11 14:27:28 2009 +0000 -+ -+ use ffi_closure_alloc instead of stack-based closure -+ -+commit e4363160ba9e50167f9ca0a7399d537a1d2cd0ce -+Author: twall -+Date: Thu Jun 11 14:26:23 2009 +0000 -+ -+ remove unused extern -+ -+commit 1dc2781d2ba38f5f000ff70069d617fb21e1d2af -+Author: twall -+Date: Thu Jun 11 11:36:16 2009 +0000 -+ -+ remove not-yet-applied changelog entries -+ -+commit bb27735fe689dac97ec0dc847ed8d3d519620109 -+Author: twall -+Date: Wed Jun 10 10:42:36 2009 +0000 -+ -+ add win64 support -+ -+commit b2a54c100c74854a409820817d54617fdda39eb8 -+Author: aph -+Date: Mon Jun 8 16:50:49 2009 +0000 -+ -+ 2009-06-08 Andrew Haley -+ -+ * testsuite/libffi.call/err_bad_abi.c: Add xfails. -+ * testsuite/libffi.call/cls_longdouble_va.c: Add xfails. -+ * testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*. -+ * testsuite/libffi.call/err_bad_typedef.c: Add xfails. -+ -+ * testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args. -+ * testsuite/libffi.call/stret_medium.c: Likewise. -+ * testsuite/libffi.call/stret_large2.c: Likewise. -+ * testsuite/libffi.call/stret_large.c: Likewise. -+ -+commit 25723e7141f73d3736d7244b980c89d97db852b6 -+Author: aph -+Date: Fri Jun 5 13:03:40 2009 +0000 -+ -+ 2009-06-05 Andrew Haley -+ -+ * src/x86/win32.S (_ffi_closure_STDCALL): Import from gcc. -+ -+commit 70758199c7cd41f411987360ccb302b497a56dc9 -+Author: aph -+Date: Thu Jun 4 16:29:58 2009 +0000 -+ -+ 2009-06-04 Andrew Haley -+ -+ * src/powerpc/ffitarget.h: Fix misapplied merge from gcc. -+ -+commit e8bb12563f9aa23ddf36fa6a5b92b16b5c3e1a7f -+Author: aph -+Date: Thu Jun 4 14:59:18 2009 +0000 -+ -+ 2009-06-04 Andrew Haley -+ -+ * src/mips/o32.S, -+ src/mips/n32.S: Fix licence formatting. -+ -+commit d66a8e32c3671479e3ce0f6819673e5932ba6b7f -+Author: aph -+Date: Thu Jun 4 14:43:40 2009 +0000 -+ -+ 2009-06-04 Andrew Haley -+ -+ * src/x86/darwin.S: Fix licence formatting. -+ src/x86/win32.S: Likewise. -+ src/sh64/sysv.S: Likewise. -+ src/sh/sysv.S: Likewise. -+ -+commit 7c3b7fd6b5db746b5b09a718f3044f811372f941 -+Author: aph -+Date: Thu Jun 4 14:39:20 2009 +0000 -+ -+ 2009-06-04 Andrew Haley -+ -+ * src/sh64/ffi.c: Remove lint directives. Was missing from merge -+ of Andreas Tobler's patch from 2006-04-22. -+ -+commit 1a2f93a8b362db13638afd9fcb3f2650180bfa17 -+Author: aph -+Date: Thu Jun 4 10:45:51 2009 +0000 -+ -+ 2009-06-04 Andrew Haley -+ -+ * src/sh/ffi.c: Apply missing hunk from Alexandre Oliva's patch of -+ 2007-03-07. -+ -+commit 944c95cf7aaaaf7c5fa368cda4673dd38f45020e -+Author: aph -+Date: Wed Jun 3 17:42:56 2009 +0000 -+ -+ 2009-05-22 Dave Korn -+ -+ * src/x86/win32.S (_ffi_closure_STDCALL): New function. -+ (.eh_frame): Add FDE for it. -+ -+ 2009-05-22 Dave Korn -+ -+ * configure.ac: Also check if assembler supports pc-relative -+ relocs on X86_WIN32 targets. -+ * configure: Regenerate. -+ * src/x86/win32.S (ffi_prep_args): Declare extern, not global. -+ (_ffi_call_SYSV): Add missing function type symbol .def and -+ add EH markup labels. -+ (_ffi_call_STDCALL): Likewise. -+ (_ffi_closure_SYSV): Likewise. -+ (_ffi_closure_raw_SYSV): Likewise. -+ (.eh_frame): Add hand-crafted EH data. -+ -+ 2008-11-21 Eric Botcazou -+ -+ * src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for -+ signed/unsigned int8/16 return values. -+ * src/sparc/v8.S (ffi_call_v8): Likewise. -+ (ffi_closure_v8): Likewise. -+ -+ 2008-03-26 Kaz Kojima -+ -+ * src/sh/sysv.S: Add .note.GNU-stack on Linux. -+ * src/sh64/sysv.S: Likewise. -+ -+ 2008-03-26 Daniel Jacobowitz -+ -+ * src/arm/sysv.S: Fix ARM comment marker. -+ -+commit 00fa972430bb1535a4b34bf029ebcad500027b0c -+Author: twall -+Date: Sat Dec 27 16:59:05 2008 +0000 -+ -+ properly glob-match -+ -+commit f5179e6794ac35af26fe86e468b8508a7a570c55 -+Author: twall -+Date: Fri Dec 26 19:06:28 2008 +0000 -+ -+ Mark XFAIL on longdouble tests for x86_64/mingw -+ -+commit 80e2b5a749208c8a18f994ec5bee84594d051cc8 -+Author: twall -+Date: Mon Dec 22 15:21:15 2008 +0000 -+ -+ clean up tests for win64 use -+ -+commit 7063d9996f742576095c7b0eb5016c0f9a670aec -+Author: green -+Date: Fri Dec 19 16:13:46 2008 +0000 -+ -+ Version 3.0.8 with x86-solaris support -+ -+commit bdfeb13f0df0a63b19d62597517237b54d92228b -+Author: green -+Date: Fri Dec 19 15:47:44 2008 +0000 -+ -+ Bump to 3.0.7 -+ -+commit 69205de17d6ac4c11d4ba92d6a5b40a0c5f246b2 -+Author: green -+Date: Thu Jul 24 18:03:48 2008 +0000 -+ -+ Many test fixes (failures due to excessive compiler warnings). -+ -+commit 260d513fea00b3613fe957a44a157fe72c4ca29e -+Author: green -+Date: Thu Jul 17 13:13:52 2008 +0000 -+ -+ Version 3.0.6. sh/sh64 fixes. -+ -+commit 3704031875feabb74e3655ed03cff4c2b3c76ac6 -+Author: green -+Date: Thu Apr 3 18:57:57 2008 +0000 -+ -+ Rev 3.0.5. -+ -+commit 8406f5f48f7f58a1c982a93a95d521cf82b3241f -+Author: green -+Date: Thu Apr 3 18:57:34 2008 +0000 -+ -+ 3.0.5 -+ -+commit 23a9e73212b62f9684cedb0ce70e92c59cfdaffa -+Author: green -+Date: Wed Mar 5 00:07:02 2008 +0000 -+ -+ 2008-03-04 Anthony Green -+ Blake Chaffin -+ hos@tamanegi.org -+ -+ * testsuite/libffi.call/cls_align_longdouble_split2.c -+ testsuite/libffi.call/cls_align_longdouble_split.c -+ testsuite/libffi.call/cls_dbls_struct.c -+ testsuite/libffi.call/cls_double_va.c -+ testsuite/libffi.call/cls_longdouble.c -+ testsuite/libffi.call/cls_longdouble_va.c -+ testsuite/libffi.call/cls_pointer.c -+ testsuite/libffi.call/cls_pointer_stack.c -+ testsuite/libffi.call/err_bad_abi.c -+ testsuite/libffi.call/err_bad_typedef.c -+ testsuite/libffi.call/huge_struct.c -+ testsuite/libffi.call/stret_large2.c -+ testsuite/libffi.call/stret_large.c -+ testsuite/libffi.call/stret_medium2.c -+ testsuite/libffi.call/stret_medium.c: New tests from Apple. -+ -+commit 429e37d3ad653e52e75bf725c883ab79e859f89a -+Author: green -+Date: Thu Feb 28 04:50:19 2008 +0000 -+ -+ clicky -+ -+commit 51e79c428348c033314f54bcb30f7e388c59e347 -+Author: green -+Date: Thu Feb 28 04:47:35 2008 +0000 -+ -+ getclicky -+ -+commit affcab04e280efeace45a72c4dc6152c0e4f1b7f -+Author: green -+Date: Tue Feb 26 19:01:53 2008 +0000 -+ -+ 2008-02-26 Jakub Jelinek -+ Anthony Green -+ -+ * src/alpha/osf.S: Add .note.GNU-stack on Linux. -+ * src/s390/sysv.S: Likewise. -+ * src/powerpc/linux64.S: Likewise. -+ * src/powerpc/linux64_closure.S: Likewise. -+ * src/powerpc/ppc_closure.S: Likewise. -+ * src/powerpc/sysv.S: Likewise. -+ * src/x86/unix64.S: Likewise. -+ * src/x86/sysv.S: Likewise. -+ * src/sparc/v8.S: Likewise. -+ * src/sparc/v9.S: Likewise. -+ * src/m68k/sysv.S: Likewise. -+ * src/ia64/unix.S: Likewise. -+ * src/arm/sysv.S: Likewise. -+ -+commit 59689d5522c159a3ac967adb6b891cf5f22c890f -+Author: green -+Date: Tue Feb 26 17:40:51 2008 +0000 -+ -+ 2008-02-26 Anthony Green -+ Thomas Heller -+ -+ * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C -+ comment. -+ -+commit b13c84cf4668828ff8429ba4a2f94cd1eb574ae0 -+Author: green -+Date: Tue Feb 26 17:38:15 2008 +0000 -+ -+ 2008-02-26 Anthony Green -+ Thomas Heller -+ -+ * include/ffi.h.in: Change void (*)() to void (*)(void). -+ -+commit 265289f679ffd24a88ae1aa2cef0e4aa14703cd8 -+Author: green -+Date: Tue Feb 26 17:34:36 2008 +0000 -+ -+ 2008-02-26 Anthony Green -+ -+ * src/alpha/ffi.c: Change void (*)() to void (*)(void). -+ src/alpha/osf.S, src/arm/ffi.c, src/frv/ffi.c, src/ia64/ffi.c, -+ src/ia64/unix.S, src/java_raw_api.c, src/m32r/ffi.c, -+ src/mips/ffi.c, src/pa/ffi.c, src/pa/hpux32.S, src/pa/linux.S, -+ src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/raw_api.c, -+ src/s390/ffi.c, src/sh/ffi.c, src/sh64/ffi.c, src/sparc/ffi.c, -+ src/x86/ffi.c, src/x86/unix64.S, src/x86/darwin64.S,> src/x86/ffi64.c: Ditto. -+ -+commit fb5036cd6d0f909918e90f7d2d9fd80d46682d5d -+Author: green -+Date: Sun Feb 24 17:25:25 2008 +0000 -+ -+ fix date -+ -+commit 40bec108e7d0181e6c9928aa7a33187bcc0f3d6f -+Author: green -+Date: Sun Feb 24 17:25:02 2008 +0000 -+ -+ New release -+ -+commit b922048fa82ea109a4af269ee47bbc2a586bbac2 -+Author: green -+Date: Sun Feb 24 17:24:00 2008 +0000 -+ -+ 2008-02-24 Anthony Green -+ -+ * configure.ac: Accept openbsd*, not just openbsd. -+ Bump version to 3.0.4. -+ * configure, doc/stamp-vti, doc/version.texi: Rebuilt. -+ * libtool-version: Increment revision. -+ * README: Update for new release. -+ -+commit affca4b92d06e5554784c7e9b233029ef83f7d8a -+Author: green -+Date: Fri Feb 22 21:53:29 2008 +0000 -+ -+ sync readme with web page. -+ -+commit 3e53d8752ea74859b4c64fbbf935e62a937c4d78 -+Author: green -+Date: Fri Feb 22 21:52:38 2008 +0000 -+ -+ New release -+ -+commit 4d92f6c8e78fe084be65f3e8b58b859901ba796d -+Author: green -+Date: Fri Feb 22 21:49:46 2008 +0000 -+ -+ 2008-02-22 Anthony Green -+ -+ * configure.ac: Bump version to 3.0.3. -+ * configure, doc/stamp-vti, doc/version.texi: Rebuilt. -+ * libtool-version: Increment revision. -+ * README: Update for new release. Clean up test docs. -+ -+commit 0e185fa11a01f816824ba2687ed3715ab6219bef -+Author: green -+Date: Fri Feb 22 21:43:18 2008 +0000 -+ -+ Update configure script. -+ -+commit f73986bd211cfbbaa593d1309504d0dc68626191 -+Author: green -+Date: Fri Feb 22 21:40:53 2008 +0000 -+ -+ 2008-02-22 Bjoern Koenig -+ Andreas Tobler -+ -+ * configure.ac: Add amd64-*-freebsd* target. -+ * configure: Regenerate. -+ -+commit 0208f68fe5de30c33e7f70ebc281635917013f5a -+Author: green -+Date: Fri Feb 22 21:15:44 2008 +0000 -+ -+ 2008-02-22 Thomas Heller -+ -+ * configure.ac: Add x86 OpenBSD support. -+ * configure: Rebuilt. -+ -+commit 01adb0e638a86cf0d5e668ed8e08be9b0cd2505f -+Author: green -+Date: Thu Feb 21 16:17:26 2008 +0000 -+ -+ Fix README. -+ -+commit 1edd4563225981a14f7d4fb9919b1ed88e38082f -+Author: green -+Date: Thu Feb 21 13:39:01 2008 +0000 -+ -+ 3.0.2 -+ -+commit c9b542800864e2204db6e83f3843a17813ba6165 -+Author: green -+Date: Thu Feb 21 13:36:43 2008 +0000 -+ -+ add missing file -+ -+commit d5fa5633d5c8d3c212a2267cfa38fba4091baa2c -+Author: green -+Date: Thu Feb 21 13:36:19 2008 +0000 -+ -+ 2008-02-21 Anthony Green -+ -+ * configure.ac: Bump version to 3.0.2. -+ * configure, doc/stamp-vti, doc/version.texi: Rebuilt. -+ * libtool-version: Increment revision. -+ * README: Update for new release. -+ -+ 2008-02-21 Björn König -+ -+ * src/x86/freebsd.S: New file. -+ * configure.ac: Add x86 FreeBSD support. -+ * Makefile.am: Ditto. -+ -+commit ac35bfc6fcadd8880c1efce36724820f9074b318 -+Author: green -+Date: Sat Feb 16 01:03:56 2008 +0000 -+ -+ Updated -+ -+commit f7942975fee7b0162647dd79e2652615b737e98e -+Author: green -+Date: Sat Feb 16 01:02:00 2008 +0000 -+ -+ 2008-02-15 Anthony Green -+ -+ * configure.ac: Bump version to 3.0.1. -+ * configure, doc/stamp-vti, doc/version.texi: Rebuilt. -+ * libtool-version: Increment revision. -+ * README: Update for new release. -+ -+ 2008-02-15 David Daney -+ -+ * src/mips/ffi.c: Remove extra '>' from include directive. -+ (ffi_prep_closure_loc): Use clear_location instead of tramp. -+ -+commit 59aa6bb1bfc86a610ac1a8b123443efd75854dd1 -+Author: green -+Date: Fri Feb 15 20:52:26 2008 +0000 -+ -+ Add more platforms. -+ -+commit 45a45ab99074448be0ae1a8d2ade50d28b60f8de -+Author: green -+Date: Fri Feb 15 19:16:36 2008 +0000 -+ -+ 3.0 notes -+ -+commit 4db74cbea888c9f1251b85baf00d99b83d3b994d -+Author: green -+Date: Fri Feb 15 19:10:26 2008 +0000 -+ -+ Update -+ -+commit c3e1101ffabf44d8a2ee46e03ba9ab582050a825 -+Author: green -+Date: Fri Feb 15 18:43:40 2008 +0000 -+ -+ 2008-02-15 Anthony Green -+ -+ * configure.ac: Bump version to 3.0.0, -+ * configure, doc/stamp-vti, doc/version.texi: Rebuilt. -+ -+ 2008-02-15 David Daney -+ -+ * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE): -+ Define (conditionally), and use it to include cachectl.h. -+ (ffi_prep_closure_loc): Fix cache flushing. -+ * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define. -+ -+commit 7e0cc12e9233ad285db41ce8dbdda61ed2a7fb06 -+Author: green -+Date: Fri Feb 15 15:51:03 2008 +0000 -+ -+ New release -+ -+commit 2d7dc885ec40d53866f29984d595511942c8b686 -+Author: green -+Date: Fri Feb 15 15:30:26 2008 +0000 -+ -+ * man/ffi_call.3, man/ffi_prep_cif.3, man/ffi.3: -+ Update dates and remove all references to ffi_prep_closure. -+ * configure.ac: Bump version to 2.99.9. -+ * configure, doc/stamp-vti, doc/version.texi: Rebuilt. -+ -+commit a0525f03eeaaed33b1eac80e0c016455cee3615d -+Author: green -+Date: Fri Feb 15 15:14:30 2008 +0000 -+ -+ New release. -+ -+commit 2b30dfb3146ee26ad956d00ee05eb835ca1a95b4 -+Author: green -+Date: Fri Feb 15 15:12:43 2008 +0000 -+ -+ * man/ffi_prep_closure.3: Delete. -+ * man/Makefile.am (EXTRA_DIST): Remove ffi_prep_closure.3. -+ (man_MANS): Ditto. -+ * man/Makefile.in: Rebuilt. -+ * configure.ac: Bump version to 2.99.8. -+ * configure, doc/stamp-vti, doc/version.texi: Rebuilt. -+ -+commit bf41e64840ebcb6cc31a6f028253c1fde82705d8 -+Author: green -+Date: Fri Feb 15 01:56:50 2008 +0000 -+ -+ Update. -+ -+commit 4d39ddee677bbb61d621893b91e11eac5e7c4af7 -+Author: green -+Date: Fri Feb 15 01:24:06 2008 +0000 -+ -+ * configure.ac: Bump version to 2.99.7. -+ * configure, doc/stamp-vti, doc/version.texi: Rebuilt. -+ * include/ffi.h.in LICENSE src/debug.c src/closures.c -+ src/ffitest.c src/s390/sysv.S src/s390/ffitarget.h -+ src/types.c src/m68k/ffitarget.h src/raw_api.c src/frv/ffi.c -+ src/frv/ffitarget.h src/sh/ffi.c src/sh/sysv.S -+ src/sh/ffitarget.h src/powerpc/ffitarget.h src/pa/ffi.c -+ src/pa/ffitarget.h src/pa/linux.S src/java_raw_api.c -+ src/cris/ffitarget.h src/x86/ffi.c src/x86/sysv.S -+ src/x86/unix64.S src/x86/win32.S src/x86/ffitarget.h -+ src/x86/ffi64.c src/x86/darwin.S src/ia64/ffi.c -+ src/ia64/ffitarget.h src/ia64/ia64_flags.h src/ia64/unix.S -+ src/sparc/ffi.c src/sparc/v9.S src/sparc/ffitarget.h -+ src/sparc/v8.S src/alpha/ffi.c src/alpha/ffitarget.h -+ src/alpha/osf.S src/sh64/ffi.c src/sh64/sysv.S -+ src/sh64/ffitarget.h src/mips/ffi.c src/mips/ffitarget.h -+ src/mips/n32.S src/mips/o32.S src/arm/ffi.c src/arm/sysv.S -+ src/arm/ffitarget.h src/prep_cif.c: Update license text. -+ -+commit d58b032b41a12bd3d72148da6822ab59dd698ff9 -+Author: green -+Date: Fri Feb 15 00:59:25 2008 +0000 -+ -+ New release -+ -+commit 91e5478df6d5ac63efbb10f025807b4606afab56 -+Author: green -+Date: Fri Feb 15 00:50:30 2008 +0000 -+ -+ Update supported platforms. Bump version. -+ -+commit bd0768f877c8f7fd0d36af2191b203d4d057b1ce -+Author: green -+Date: Fri Feb 15 00:45:33 2008 +0000 -+ -+ * configure.ac: Bump version to 2.99.5. -+ * configure: Rebuilt. -+ * Makefile.am (EXTRA_DIST): Add darwin64.S -+ * Makefile.in: Rebuilt. -+ * testsuite/lib/libffi-dg.exp: Remove libstdc++ bits from GCC tree. -+ * LICENSE: Update WARRANTY. -+ -+commit 49d345f767bd2cfee951bceaab6a1a07986cf293 -+Author: green -+Date: Thu Feb 14 23:43:27 2008 +0000 -+ -+ update license reference -+ -+commit 12ac48fc79b515db7c9accd9fcaa87b0dcefccdb -+Author: green -+Date: Thu Feb 14 23:42:08 2008 +0000 -+ -+ Update WARRANTY -+ -+commit 6b91c41da87e78552f2990dfc504a0a3349f340b -+Author: green -+Date: Thu Feb 14 23:38:27 2008 +0000 -+ -+ fix tarball reference -+ -+commit 2b59579e3533334bee4788e076b4e520c2ab518c -+Author: green -+Date: Thu Feb 14 23:35:58 2008 +0000 -+ -+ First update in 5 years! -+ -+commit 6cbdf3f3a3777a93382a2d508ddef1c353ff0955 -+Author: green -+Date: Thu Feb 14 22:44:06 2008 +0000 -+ -+ Fix .pc file bug and bump version -+ -+commit 1d1dc81104b209df3cfef0840735c59efae2f655 -+Author: green -+Date: Thu Feb 14 22:03:37 2008 +0000 -+ -+ Add man files and info file. Update README. Tag as 2.99.3. -+ -+commit f045a2367f793fa8b01534cf2e25bcc46afc8fa1 -+Author: tromey -+Date: Thu Feb 14 20:46:57 2008 +0000 -+ -+ Move entry from ChangeLog to ChangeLog.libffi -+ -+commit 6257f07d1a9efd27fa83639cfba281f5d3188731 -+Author: tromey -+Date: Thu Feb 14 20:33:17 2008 +0000 -+ -+ * aclocal.m4, Makefile.in, configure, fficonfig.h.in: Rebuilt. -+ * mdate-sh, texinfo.tex: New files. -+ * Makefile.am (info_TEXINFOS): New variable. -+ * doc/libffi.texi: New file. -+ * doc/version.texi: Likewise. -+ -+commit 4232af563c5509c3760a33e3684a2b958be755e1 -+Author: green -+Date: Thu Feb 14 16:19:21 2008 +0000 -+ -+ * Makefile.am (AM_CFLAGS): Don't compile with -D. -+ (lib_LTLIBRARIES): Define. -+ (toolexeclib_LIBRARIES): Undefine. -+ * Makefile.in: Rebuilt. -+ * configure.ac: Reset version to 2.99.1. -+ * configure.in: Rebuilt. -+ -+commit 961543615c31f092b578a4b4cda914db64f9d0fa -+Author: green -+Date: Thu Feb 14 15:57:40 2008 +0000 -+ -+ Fix typo. -+ -+commit aeb0abab87222f637fbf352d4effd3b76b52ed26 -+Author: green -+Date: Thu Feb 14 15:54:27 2008 +0000 -+ -+ * libffi.pc.in: Usse @PACKAGE_NAME@ and @PACKAGE_VERSION@. -+ * configure.ac: Reset version to 2.99.1. -+ * configure.in: Rebuilt. -+ * Makefile.am (EXTRA_DIST): Add ChangeLog.libffi. -+ * Makefile.in: Rebuilt. -+ * LICENSE: Update copyright notice. -+ -+commit 77fe243556433eae119d8bd7469bfccdd5bd8a1a -+Author: green -+Date: Thu Feb 14 15:37:00 2008 +0000 -+ -+ Fix make dist again -+ -+commit d4970cf4529459bf0f0e43c602cac396786c6802 -+Author: green -+Date: Thu Feb 14 15:18:56 2008 +0000 -+ -+ Fix make dist -+ -+commit f0b1462f2d3024922ad71421bd5c4311fcb16da5 -+Author: green -+Date: Thu Feb 14 15:01:41 2008 +0000 -+ -+ Use pkgconfig. Increment libtool CURRENT version. -+ -+commit 27e52f33baa069012a5adb2a3807f9ca1f2165ab -+Author: green -+Date: Sun Feb 3 13:59:48 2008 +0000 -+ -+ Fix header installs when using DESTDIR. -+ -+commit fadab28eb6e33fb6dcdd7b9323e147142216d548 -+Author: twall -+Date: Sun Feb 3 12:32:22 2008 +0000 -+ -+ update changelog -+ -+commit b5e44c8dfa92c87b99762c303cf5574a16db8f27 -+Author: twall -+Date: Sun Feb 3 01:12:32 2008 +0000 -+ -+ offset from code base address, not data base address -+ -+commit f359848d1a995c0e44566d815f218729dc996e22 -+Author: green -+Date: Fri Feb 1 21:29:43 2008 +0000 -+ -+ Fix header installs. -+ -+commit c30df49e157c7bfc8e19e3f8a72b9464fe225e54 -+Author: green -+Date: Fri Feb 1 21:13:55 2008 +0000 -+ -+ Revert my broken changes to twall's patch. -+ -+commit 675561bb9aa0732c76698df10dd3007b5d0ec759 -+Author: green -+Date: Thu Jan 31 13:44:25 2008 +0000 -+ -+ Fix make dist . -+ -+commit abc0bbf3813dc43e23d4c23e6fe794dbf287639b -+Author: green -+Date: Thu Jan 31 11:58:57 2008 +0000 -+ -+ Add Tim Wall's x86 windows patch. -+ -+commit e332366d15a31198735b593ec8f7fc0558d783b8 -+Author: green -+Date: Wed Jan 30 13:21:02 2008 +0000 -+ -+ Add HJ's -fomit-frame-pointer struct return fix -+ -+commit d4204240392af5b7750a08671b08e9c22dff5e93 -+Author: green -+Date: Wed Jan 30 12:42:34 2008 +0000 -+ -+ Clean up for new automake. -+ -+commit f4932dd020df574637c9fb3fc1bb18e5a8f304cc -+Author: green -+Date: Wed Jan 30 12:40:25 2008 +0000 -+ -+ Fixes to run testsuite -+ -+commit 085520ddc8db6a916bfc416b871fcb2d00074d40 -+Author: green -+Date: Tue Jan 29 15:16:43 2008 +0000 -+ -+ New files from gcc tree. -+ -+commit 77175b3f7234e4875a4ef554ed1fe9fdc4133794 -+Author: green -+Date: Tue Jan 29 15:15:20 2008 +0000 -+ -+ Latest gcc svn sources -+ -+commit 2544e45a0b2b634053df02da3a2ed9680eeed2a1 -+Author: green -+Date: Tue Jan 29 14:28:13 2008 +0000 -+ -+ Install ffitarget.h in $prefix/include. -+ -+commit 6002211b1cc4daeb587d054b4f83968bda2c981e -+Author: green -+Date: Tue Jan 29 12:30:10 2008 +0000 -+ -+ Add new files. -+ -+commit ccabd2b16be883cd03e5f0cd88ccfdd6ca39239d -+Author: green -+Date: Tue Jan 29 12:28:15 2008 +0000 -+ -+ Merge from gcc -+ -+commit e680ecfbfca1da8d1823e48bc89b8375e66e128b -+Author: tromey -+Date: Sun Dec 24 23:12:15 2006 +0000 -+ -+ Pulled in libffi from gcc trunk. -+ Fixed build and install for standalone use. -+ -+commit e7ba08965942ce872fdbc69f70f9848cc3d0bad6 -+Author: root -+Date: Sun Jun 4 23:22:24 2006 +0000 -+ -+ sourcware.org -+ -+commit 0cd4aa24e21aaa964dfbdebc25ec5c8188049375 -+Author: root -+Date: Sun May 30 01:51:57 2004 +0000 -+ -+ Add LockDir -+ -+commit 5826120fbd940d26cca76ed2522187505581e1ed -+Author: green -+Date: Tue Nov 4 06:09:08 2003 +0000 -+ -+ Add link to Gianni's web site. -+ -+commit 220aa4b27db42d7ffaac5056000d5179f00d5ea3 -+Author: jsm -+Date: Tue Jan 21 08:07:42 2003 +0000 -+ -+ Newer, better, increased from before! (list of acceptable anon usernames) -+ -+commit 1c3adc892cc1403dc4d3d7003a2385899836612e -+Author: green -+Date: Fri Dec 6 01:28:03 2002 +0000 -+ -+ Fixed Cygnus references. -+ -+commit 4af66bb62fab9a8e318af3bf01e5486596a0c8d4 -+Author: green -+Date: Sun Oct 21 19:18:42 2001 +0000 -+ -+ Testsuite fixes. -+ -+commit 5435965f9015ce40584c98d3816c3d05e7de1d21 -+Author: green -+Date: Mon Apr 23 00:32:03 2001 +0000 -+ -+ * include/ffi_common.h: Delete, after moving contents to... -+ * include/ffi_private.h: Subsume contents of ffi_common.h. -+ * include/Makefile.am (noinst_HEADERS): Remove ffi_common.h. -+ * include/Makefile.in: Rebuilt. -+ * arm/ffi.c, m68k/ffi.c, mips/ffi.c, powerpc/ffi.c, s390/ffi.c, -+ ia64/ffi.c: Include ffi_private.h, not ffi_common.h. -+ * alpha/ffi.c, sparc/ffi.c, x86/ffi.c: Don't include ffi_common.h. -+ * types.c, raw_api.c, java_raw_api.c, prep_cif.c: Don't include -+ ffi_common.h. -+ * debug.c: Include ffi_private.h instead of ffi_common.h. -+ -+ * mips/ffi.c (calc_n32_struct_flags): Make static. -+ (FIX_ARGP): Remove call to debugging routine ffi_stop_here. -+ -+ * mips/n32.S: Include ffi_private.h. -+ * mips/o32.S: Include ffi_private.h. -+ -+commit 6fdb7de0fe3b7385e1fd78812ae69d9b3069d994 -+Author: green -+Date: Sun Apr 22 19:38:34 2001 +0000 -+ -+ * README: Update some comments. -+ -+ * Makefile.am (SUBDIRS): Add include so ffi.h gets installed. -+ * Makefile.in: Rebuilt. -+ -+ * include/ffi.h: Change ALPHA to __alpha__ and SPARC to __sparc__. -+ * types.c: Ditto. -+ * prep_cif.c (ffi_prep_cif): Ditto. -+ -+ * alpha/ffi.c, alpha/osf.S, sparc/ffi.c, sparc/v8.S, sparc/v9.S: -+ Include ffi_private.h. -+ -+ * include/ffi_private.h (FFI_TYPE_LAST): Define. -+ -+commit bc7144b01b9707ef35f1a2e3e6996e005e82953a -+Author: green -+Date: Sun Apr 22 18:28:36 2001 +0000 -+ -+ Moved files from old home -+ -+commit e57279831e20368c1aa1d2b35462b8629be73959 -+Author: green -+Date: Sun Apr 22 18:23:47 2001 +0000 -+ -+ These are dead. -+ -+commit 7247436b5fe71767b29dc02b4da0fe18b08082e6 -+Author: green -+Date: Sun Apr 22 18:22:43 2001 +0000 -+ -+ All these files live somewhere else now. -+ -+commit a8b0d40ff908e275028f676870c31d0d70274a98 -+Author: green -+Date: Sun Apr 22 18:17:14 2001 +0000 -+ -+ Many changes. Not quite there yet. -+ -+commit f893d2273355710a290a26faebf5f12c3a34d0e3 -+Author: green -+Date: Sun Apr 22 18:13:22 2001 +0000 -+ -+ Moved m68k files -+ -+commit 688ddfeced89cbb9d37b53005e1f7f2b9c78a8d7 -+Author: green -+Date: Sun Apr 22 18:12:33 2001 +0000 -+ -+ New, target indepentent, header -+ -+commit f9e40776d488d5ecf43b3ae21444a1a2f6eca528 -+Author: green -+Date: Sun Apr 22 18:11:57 2001 +0000 -+ -+ Many changes. -+ -+commit 8c1d2eb47f6bc314c431b75c85c107e8e43c4a76 -+Author: green -+Date: Sun Apr 22 18:10:47 2001 +0000 -+ -+ Many changes -+ -+commit 1359dfc6582680a158b3caa3efb7a368da4aa12d -+Author: green -+Date: Sun Apr 22 18:10:20 2001 +0000 -+ -+ Moved ia64 files -+ -+commit 6e2de5eee316a4579869aff50c7c5f6f478582d8 -+Author: green -+Date: Sun Apr 22 18:08:11 2001 +0000 -+ -+ Moved arm files -+ -+commit 8807355af34cba8ffe87aee51152dfccec2771fa -+Author: green -+Date: Mon Apr 9 00:58:38 2001 +0000 -+ -+ Many many updates. Merge from gcc and then some. -+ -+commit f7e9f91adec4ff1c2e7a13b3de81d2c5a3f55e7e -+Author: green -+Date: Mon Apr 17 03:32:37 2000 +0000 -+ -+ Mnay fixes. -+ -+commit c4860de618f4956283f5c8230a2544e403dfe390 -+Author: green -+Date: Mon Apr 17 03:18:46 2000 +0000 -+ -+ Merge from libgcj. Merged patches from net. See ChangeLog for details. -+ -+commit c578b58314990c3853429297c38ba14015fec5fa -+Author: jsm -+Date: Sat Oct 9 20:18:16 1999 +0000 -+ -+ 1999-10-09 Jason Molenda (jsm@bugshack.cygnus.com) -+ -+ * CVSROOT/auto_checkout, CVSROOT/commit_prep, CVSROOT/log_accum: -+ Deleted; generic versions now used for all repositories. -+ -+ * CVSROOT/commitinfo, CVSROOT/loginfo: Change pathnames to -+ generic versions. -+ -+ * CVSROOT/checkoutlist: Don't try to check out the removed -+ files any longer. -+ -+commit acdb20051207fed7652dd9f122f65de5458c474c -+Author: jsm -+Date: Sat Oct 9 20:18:15 1999 +0000 -+ -+ 1999-10-09 Jason Molenda (jsm@bugshack.cygnus.com) -+ -+ * CVSROOT/auto_checkout, CVSROOT/commit_prep, CVSROOT/log_accum: -+ Deleted; generic versions now used for all repositories. -+ -+ * CVSROOT/commitinfo, CVSROOT/loginfo: Change pathnames to -+ generic versions. -+ -+ * CVSROOT/checkoutlist: Don't try to check out the removed -+ files any longer. -+ -+commit e75be655ceedf7ab24c4e99d75eec9efeb979bc7 -+Author: green -+Date: Sun Aug 8 13:16:41 1999 +0000 -+ -+ New configury -+ -+commit d6669a0dd5b266005325bbf6d5a8ff34574d809e -+Author: green -+Date: Sun Aug 8 13:05:12 1999 +0000 -+ -+ * include/ffi.h.in: Try to work around messy header problem -+ with PACKAGE and VERSION. -+ -+ * configure: Rebuilt. -+ * configure.in: Change version to 2.00-beta. -+ -+ * fficonfig.h.in: Rebuilt. -+ * acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define. -+ -+ * src/x86/ffi.c (ffi_raw_call): Rename. -+ -+commit 4819d52b007934a40d6d29a75ee30e857c4a93ae -+Author: green -+Date: Wed Aug 4 18:02:34 1999 +0000 -+ -+ New file for Kresten's closure work -+ -+commit 2dbf801eb427cbf5021a9e1e512b5fc523524700 -+Author: green -+Date: Wed Aug 4 18:00:05 1999 +0000 -+ -+ Kresten's closure work. Initial checkin. -+ -+commit d170961701b0f2bf7e824d7caba2ebe10002ed84 -+Author: green -+Date: Thu Jul 8 14:36:52 1999 +0000 -+ -+ * configure.in: Add x86 and powerpc BeOS configurations. -+ From Makoto Kato . -+ -+commit c7747d976924ec6f2229cbcfbbdb98d364e10de9 -+Author: jsm -+Date: Wed May 12 23:32:16 1999 +0000 -+ -+ 1999-05-12 Jason Molenda (jsm@bugshack.cygnus.com) -+ * index.html: Add links to libffi* mail list archives. -+ -+commit dd2aa9a8de22e26df3bbc85d068358641f6202f7 -+Author: green -+Date: Thu May 6 05:34:36 1999 +0000 -+ -+ * configure.in: Add warning about this being beta code. -+ Remove src/Makefile.am from the picture. -+ * configure: Rebuilt. -+ * Makefile.am: Move logic from src/Makefile.am. Add changes -+ to support libffi as a target library. -+ * Makefile.in: Rebuilt. -+ * aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh: -+ Upgraded to new autoconf, automake, libtool. -+ * README: Tweaks. -+ * LICENSE: Update copyright date. -+ * src/Makefile.am, src/Makefile.in: Removed. -+ -+commit 4e9452abed58a3058ccdb446f96a29d50dda1f34 -+Author: green -+Date: Wed May 5 22:06:13 1999 +0000 -+ -+ Updated to new automake, libtool, autoconf - nothing works :-) -+ -+commit 6d3b2bddaf4967fba8b8656c01bfc77ec0f2800c -+Author: jsm -+Date: Mon Apr 26 15:55:28 1999 +0000 -+ -+ 1999-04-26 Jason Molenda (jsm@bugshack.cygnus.com) -+ * index.html: Missed a reference to libffi-discuss@cygnus.com. Fixed. -+ -+commit ebc6a9c28af831d3d187af8ff17319f0f309bd98 -+Author: jsm -+Date: Mon Apr 26 15:53:29 1999 +0000 -+ -+ 1999-04-26 Jason Molenda (jsm@bugshack.cygnus.com) -+ * index.html: Change links to ftp directory to point to sourceware -+ directory. -+ Change mailing list subscription forms to point to sourceware lists. -+ -+commit 78ffc52a8b257061348c576ccb6fbbf8b48b0fff -+Author: jsm -+Date: Sun Apr 18 01:33:21 1999 +0000 -+ -+ Standard sourceware setup. -+ -+commit b4d77e827d7ebef7e57ebcd71e71c15c62f1e0a8 -+Author: jsm -+Date: Mon Nov 30 11:11:25 1998 +0000 -+ -+ Small typeo. (I wouldn't bother except that it made the sentence hard -+ for me to parse on a casual read.) -+ -+commit bfb73f08fdc987e37070c5fb0b196fbd28872888 -+Author: jsm -+Date: Mon Nov 30 10:44:55 1998 +0000 -+ -+ A few cleanups. Most notably, point to the correct subscribe cgi-bin -+ script. -+ -+commit af8b7f037ccee3b7939ee226a1a2bbc2f057b35c -+Author: green -+Date: Mon Nov 30 06:20:05 1998 +0000 -+ -+ * index.html: Reformatted and updated to reflect hosting on -+ sourceware.cygnus.com (new mailing lists, etc). -+ -+commit 334f0b060942aff8d26badaf7dde7830450dc5da -+Author: green -+Date: Sun Nov 29 16:56:12 1998 +0000 -+ -+ initial snapshot of documentation -+ -+commit 3ab5cb4a1dcc7ecd7e773c97582b0099976c4753 -+Author: green -+Date: Sun Nov 29 16:56:10 1998 +0000 -+ -+ Initial revision -+ -+commit d2a9eb5a8b7cbc8b769809cad59c82b975c178e2 -+Merge: d3782ec bc75c54 -+Author: green -+Date: Sun Nov 29 16:48:16 1998 +0000 -+ -+ This commit was generated by cvs2svn to compensate for changes in r7, which -+ included commits to RCS files with non-trunk default branches. -+ -+commit bc75c54bd311658005b065f1bf201b204c81cbca -+Author: green -+Date: Sun Nov 29 16:48:16 1998 +0000 -+ -+ Import of v1 code. -+ -+commit d3782ec8160c644421dcea17b605fec6e328f14e -+Author: jsm -+Date: Fri Nov 20 20:18:00 1998 +0000 -+ -+ Send commit messages to mailing lists. -+ -+commit 8d8d3843c484c2bb70d8375b2b799f75eb03f709 -+Author: jsm -+Date: Thu Oct 1 22:08:36 1998 +0000 -+ -+ initial checkin -+ -+commit 49634f3bf221cc1939abafc788f7e4e31293fe73 -+Author: jsm -+Date: Thu Oct 1 22:08:35 1998 +0000 -+ -+ Add standard setup. -+ -+commit c64a84c7693f8cd400fb94bba3c9bcfd9ad1fc36 -+Author: jsm -+Date: Thu Oct 1 22:08:34 1998 +0000 -+ -+ Add readers and standard modules file. -+ -+commit 9813273b07fd082da573b3b6bfb8d23809b59eea -+Author: jsm -+Date: Thu Oct 1 22:08:33 1998 +0000 -+ -+ initial checkin -diff --git a/js/src/ctypes/libffi/ChangeLog.libffi b/js/src/ctypes/libffi/ChangeLog.libffi ---- a/js/src/ctypes/libffi/ChangeLog.libffi -+++ b/js/src/ctypes/libffi/ChangeLog.libffi -@@ -1,40 +1,11 @@ --2010-01-15 Anthony Green -+2011-02-08 Andreas Tobler - -- * README: Add notes on building with Microsoft Visual C++. -- --2010-01-15 Daniel Witte -- -- * msvcc.sh: New file. -- -- * src/x86/win32.S: Port assembly routines to MSVC and #ifdef. -- * src/x86/ffi.c: Tweak function declaration and remove excess -- parens. -- * include/ffi.h.in: Add __declspec(align(8)) to typedef struct -- ffi_closure. -- -- * src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new -- function ffi_call_win32 on X86_WIN32. -- * src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32. -- (ffi_call_STDCALL): Remove. -- -- * src/prep_cif.c (ffi_prep_cif): Move stack space allocation code -- to ffi_prep_cif_machdep for x86. -- * src/x86/ffi.c (ffi_prep_cif_machdep): To here. -- --2010-01-15 Oliver Kiddle -- -- * src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for -- Sun Studio compiler compatibility. -- --2010-01-12 Conrad Irwin -- -- * doc/libffi.texi: Add closure example. -- * doc/libffi.info: Rebuilt. -+ * testsuite/lib/libffi.exp: Tweak for stand-alone mode. - - 2009-12-25 Samuli Suominen - - * configure.ac: Undefine _AC_ARG_VAR_PRECIOUS for autoconf 2.64. - * configure: Rebuilt. - * fficonfig.h.in: Rebuilt. - - 2009-06-16 Andrew Haley -@@ -598,16 +569,16 @@ 2008-01-30 H.J. Lu - - * Makefile.am, include/Makefile.am: Move headers to - libffi_la_SOURCES for new automake. - * Makefile.in, include/Makefile.in: Rebuilt. -- -- * testsuite/lib/wrapper.exp: Copied from gcc tree to allow for -+ -+ * testsuite/lib/wrapper.exp: Copied from gcc tree to allow for - execution outside of gcc tree. - * testsuite/lib/target-libpath.exp: Ditto. - - * testsuite/lib/libffi-dg.exp: Many changes to allow for execution - outside of gcc tree. - -diff --git a/js/src/ctypes/libffi/ChangeLog.libffi-3.1 b/js/src/ctypes/libffi/ChangeLog.libffi-3.1 -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/ChangeLog.libffi-3.1 -@@ -0,0 +1,6000 @@ -+2014-03-16 Josh Triplett -+ -+ * ChangeLog: Archive to ChangeLog.libffi-3.1 and delete. Future -+ changelogs will come from git, with autogenerated snapshots shipped in -+ distributed tarballs. -+ -+2014-03-16 Josh Triplett -+ -+ Add support for stdcall, thiscall, and fastcall on non-Windows -+ x86-32. -+ -+ Linux supports the stdcall calling convention, either via -+ functions explicitly declared with the stdcall attribute, or via -+ code compiled with -mrtd which effectively makes stdcall the -+ default. -+ -+ This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on -+ non-Windows x86-32 platforms, as non-default calling conventions. -+ -+ * Makefile.am: Compile in src/x86/win32.S on non-Windows x86-32. -+ * src/x86/ffitarget.h: Add FFI_STDCALL, FFI_THISCALL, and -+ FFI_FASTCALL on non-Windows x86-32. Increase trampoline size to -+ accomodate these calling conventions, and unify some ifdeffery. -+ * src/x86/ffi.c: Add support for FFI_STDCALL, FFI_THISCALL, and -+ FFI_FASTCALL on non-Windows x86-32 platforms; update ifdeffery. -+ * src/x86/win32.S: Support compiling on non-Windows x86-32 -+ platforms. On those platforms, avoid redefining the SYSV symbols -+ already provided by src/x86/sysv.S. -+ * testsuite/libffi.call/closure_stdcall.c: Run on non-Windows. -+ #define __stdcall if needed. -+ * testsuite/libffi.call/closure_thiscall.c: Run on non-Windows. -+ #define __fastcall if needed. -+ * testsuite/libffi.call/fastthis1_win32.c: Run on non-Windows. -+ * testsuite/libffi.call/fastthis2_win32.c: Ditto. -+ * testsuite/libffi.call/fastthis3_win32.c: Ditto. -+ * testsuite/libffi.call/many2_win32.c: Ditto. -+ * testsuite/libffi.call/many_win32.c: Ditto. -+ * testsuite/libffi.call/strlen2_win32.c: Ditto. -+ * testsuite/libffi.call/strlen_win32.c: Ditto. -+ * testsuite/libffi.call/struct1_win32.c: Ditto. -+ * testsuite/libffi.call/struct2_win32.c: Ditto. -+ -+2014-03-16 Josh Triplett -+ -+ * prep_cif.c: Remove unnecessary ifdef for X86_WIN32. -+ ffi_prep_cif_core had a special case for X86_WIN32, checking for -+ FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI -+ range before returning FFI_BAD_ABI. However, on X86_WIN32, -+ FFI_THISCALL already falls in that range, making the special case -+ unnecessary. Remove it. -+ -+2014-03-16 Josh Triplett -+ -+ * testsuite/libffi.call/closure_stdcall.c, -+ testsuite/libffi.call/closure_thiscall.c: Remove fragile stack -+ pointer checks. These files included inline assembly to save the -+ stack pointer before and after the call, and compare the values. -+ However, compilers can and do leave the stack in different states -+ for these two pieces of inline assembly, such as by saving a -+ temporary value on the stack across the call; observed with gcc -+ -Os, and verified as spurious through careful inspection of -+ disassembly. -+ -+2014-03-16 Josh Triplett -+ -+ * testsuite/libffi.call/many.c: Avoid spurious failure due to -+ excess floating-point precision. -+ * testsuite/libffi.call/many_win32.c: Ditto. -+ -+2014-03-16 Josh Triplett -+ -+ * libtool-ldflags: Re-add. -+ -+2014-03-16 Josh Triplett -+ -+ * Makefile.in, aclocal.m4, compile, config.guess, config.sub, -+ configure, depcomp, include/Makefile.in, install-sh, -+ libtool-ldflags, ltmain.sh, m4/libtool.m4, m4/ltoptions.m4, -+ m4/ltsugar.m4, m4/ltversion.m4, m4/lt~obsolete.m4, -+ man/Makefile.in, mdate-sh, missing, testsuite/Makefile.in: Delete -+ autogenerated files from version control. -+ * .gitignore: Add autogenerated files. -+ * autogen.sh: New script to generate the autogenerated files. -+ * README: Document requirement to run autogen.sh when building -+ directly from version control. -+ * .travis.yml: Run autogen.sh -+ -+2014-03-14 Anthony Green -+ -+ * configure, Makefile.in: Rebuilt. -+ -+2014-03-10 Mike Hommey -+ -+ * configure.ac: Allow building for mipsel with Android NDK r8. -+ * Makefile.am (AM_MAKEFLAGS): Replace double quotes with single -+ quotes. -+ -+2014-03-10 Landry Breuil -+ -+ * configure.ac: Ensure the linker supports @unwind sections in libffi. -+ -+2014-03-01 Anthony Green -+ -+ * Makefile.am (EXTRA_DIST): Replace old scripts with -+ generate-darwin-source-and-headers.py. -+ * Makefile.in: Rebuilt. -+ -+2014-02-28 Anthony Green -+ -+ * Makefile.am (AM_CFLAGS): Reintroduce missing -DFFI_DEBUG for -+ --enable-debug builds. -+ * Makefile.in: Rebuilt. -+ -+2014-02-28 Makoto Kato -+ -+ * src/closures.c: Fix build failure when using clang for Android. -+ -+2014-02-28 Marcin Wojdyr -+ -+ * libffi.pc.in (toolexeclibdir): use -L${toolexeclibdir} instead -+ of -L${libdir}. -+ -+2014-02-28 Paulo Pizarro -+ -+ * src/bfin/sysv.S: Calling functions in shared libraries requires -+ considering the GOT. -+ -+2014-02-28 Josh Triplett -+ -+ * src/x86/ffi64.c (classify_argument): Handle case where -+ FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE. -+ -+2014-02-28 Anthony Green -+ -+ * ltmain.sh: Generate with libtool-2.4.2.418. -+ * m4/libtool.m4, m4/ltoptions.m4, m4/ltversion.m4: Ditto. -+ * configure: Rebuilt. -+ -+2014-02-28 Dominik Vogt -+ -+ * configure.ac (AC_ARG_ENABLE struct): Fix typo in help -+ message. -+ (AC_ARG_ENABLE raw_api): Ditto. -+ * configure, fficonfig.h.in: Rebuilt. -+ -+2014-02-28 Will Newton -+ -+ * src/arm/sysv.S: Initialize IP register with FP. -+ -+2014-02-28 Yufeng Zhang -+ -+ * src/aarch64/sysv.S (ffi_closure_SYSV): Use x29 as the -+ main CFA reg; update cfi_rel_offset. -+ -+2014-02-15 Marcus Comstedt -+ -+ * src/powerpc/ffi_linux64.c, src/powerpc/linux64_closure.S: Remove -+ assumption on contents of r11 in closure. -+ -+2014-02-09 Heiher -+ -+ * src/mips/n32.S: Fix call floating point va function. -+ -+2014-01-21 Zachary Waldowski -+ -+ * src/aarch64/ffi.c: Fix missing semicolons on assertions under -+ debug mode. -+ -+2013-12-30 Zachary Waldowski -+ -+ * .gitignore: Exclude darwin_* generated source and build_* trees. -+ * src/aarch64/ffi.c, src/arm/ffi.c, src/x86/ffi.c: Inhibit Clang -+ previous prototype warnings. -+ * src/arm/ffi.c: Prevent NULL dereference, fix short type warning -+ * src/dlmalloc.c: Fix warnings from set_segment_flags return type, -+ and the native use of size_t for malloc on platforms -+ * src/arm/sysv.S: Use unified syntax. Clang clean-ups for -+ ARM_FUNC_START. -+ * generate-osx-source-and-headers.py: Remove. -+ * build-ios.sh: Remove. -+ * libffi.xcodeproj/project.pbxproj: Rebuild targets. Include -+ x86_64+aarch64 pieces in library. Export headers properly. -+ * src/x86/ffi64.c: More Clang warning clean-ups. -+ * src/closures.c (open_temp_exec_file_dir): Use size_t. -+ * src/prep_cif.c (ffi_prep_cif_core): Cast ALIGN result. -+ * src/aarch64/sysv.S: Use CNAME for global symbols. Only use -+ .size for ELF targets. -+ * src/aarch64/ffi.c: Clean up for double == long double. Clean up -+ from Clang warnings. Use Clang cache invalidation builtin. Use -+ size_t in place of unsigned in many places. Accommodate for -+ differences in Apple AArch64 ABI. -+ -+2013-12-02 Daniel Rodríguez Troitiño -+ -+ * generate-darwin-source-and-headers.py: Clean up, modernize, -+ merged version of previous scripts. -+ -+2013-11-21 Anthony Green -+ -+ * configure, Makefile.in, include/Makefile.in, include/ffi.h.in, -+ man/Makefile.in, testsuite/Makefile.in, fficonfig.h.in: Rebuilt. -+ -+2013-11-21 Alan Modra -+ -+ * Makefile.am (EXTRA_DIST): Add new src/powerpc files. -+ (nodist_libffi_la_SOURCES ): Likewise. -+ * configure.ac (HAVE_LONG_DOUBLE_VARIANT): Define for powerpc. -+ * include/ffi.h.in (ffi_prep_types): Declare. -+ * src/prep_cif.c (ffi_prep_cif_core): Call ffi_prep_types. -+ * src/types.c (FFI_NONCONST_TYPEDEF): Define and use for -+ HAVE_LONG_DOUBLE_VARIANT. -+ * src/powerpc/ffi_powerpc.h: New file. -+ * src/powerpc/ffi.c: Split into.. -+ * src/powerpc/ffi_sysv.c: ..new file, and.. -+ * src/powerpc/ffi_linux64.c: ..new file, rewriting parts. -+ * src/powerpc/ffitarget.h (enum ffi_abi): Rewrite powerpc ABI -+ selection as bits controlling features. -+ * src/powerpc/linux64.S: For consistency, use POWERPC64 rather -+ than __powerpc64__. -+ * src/powerpc/linux64_closure.S: Likewise. -+ * src/powerpc/ppc_closure.S: Likewise. Move .note.FNU-stack -+ inside guard. -+ * src/powerpc/sysv.S: Likewise. -+ * configure: Regenerate. -+ * fficonfig.h.in: Regenerate. -+ * Makefile.in: Regenerate. -+ -+2013-11-20 Alan Modra -+ -+ * src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use -+ NUM_FPR_ARG_REGISTERS64 and NUM_GPR_ARG_REGISTERS64 not their -+ 32-bit versions for 64-bit code. -+ * src/powerpc/linux64_closure.S: Don't use the return value area -+ as a parameter save area on ELFv2. -+ -+2013-11-18 Iain Sandoe -+ -+ * src/powerpc/darwin.S (EH): Correct use of pcrel FDE encoding. -+ * src/powerpc/darwin_closure.S (EH): Likewise. Modernise picbase -+ labels. -+ -+2013-11-18 Anthony Green -+ -+ * src/arm/ffi.c (ffi_call): Hoist declaration of temp to top of -+ function. -+ * src/arm/ffi.c (ffi_closure_inner): Moderize function declaration -+ to appease compiler. -+ Thanks for Gregory P. Smith . -+ -+2013-11-18 Anthony Green -+ -+ * README (tested): Mention PowerPC ELFv2. -+ -+2013-11-16 Alan Modra -+ -+ * src/powerpc/ppc_closure.S: Move errant #endif to where it belongs. -+ Don't bl .Luint128. -+ -+2013-11-16 Alan Modra -+ -+ * src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use #if _CALL_ELF -+ test to select parameter save sizing for ELFv2 vs. ELFv1. -+ * src/powerpc/ffitarget.h (FFI_V2_TYPE_FLOAT_HOMOG, -+ FFI_V2_TYPE_DOUBLE_HOMOG, FFI_V2_TYPE_SMALL_STRUCT): Define. -+ (FFI_TRAMPOLINE_SIZE): Define variant for ELFv2. -+ * src/powerpc/ffi.c (FLAG_ARG_NEEDS_PSAVE): Define. -+ (discover_homogeneous_aggregate): New function. -+ (ffi_prep_args64): Adjust start of param save area for ELFv2. -+ Handle homogenous floating point struct parms. -+ (ffi_prep_cif_machdep_core): Adjust space calculation for ELFv2. -+ Handle ELFv2 return values. Set FLAG_ARG_NEEDS_PSAVE. Handle -+ homogenous floating point structs. -+ (ffi_call): Increase size of smst_buffer for ELFv2. Handle ELFv2. -+ (flush_icache): Compile for ELFv2. -+ (ffi_prep_closure_loc): Set up ELFv2 trampoline. -+ (ffi_closure_helper_LINUX64): Don't return all structs directly -+ to caller. Handle homogenous floating point structs. Handle -+ ELFv2 struct return values. -+ * src/powerpc/linux64.S (ffi_call_LINUX64): Set up r2 for -+ ELFv2. Adjust toc save location. Call function pointer using -+ r12. Handle FLAG_RETURNS_SMST. Don't predict branches. -+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Set up r2 -+ for ELFv2. Define ELFv2 versions of STACKFRAME, PARMSAVE, and -+ RETVAL. Handle possibly missing parameter save area. Handle -+ ELFv2 return values. -+ (.note.GNU-stack): Move inside outer #ifdef. -+ -+2013-11-16 Alan Modra -+ -+ * src/powerpc/ffi.c (ffi_prep_cif_machdep): Revert 2013-02-08 -+ change. Do not consume an int arg when returning a small struct -+ for FFI_SYSV ABI. -+ (ffi_call): Only use bounce buffer when FLAG_RETURNS_SMST. -+ Properly copy bounce buffer to destination. -+ * src/powerpc/sysv.S: Revert 2013-02-08 change. -+ * src/powerpc/ppc_closure.S: Remove stray '+'. -+ -+2013-11-16 Alan Modra -+ -+ * src/powerpc/ffi.c (ffi_prep_args64): Align struct parameters -+ according to __STRUCT_PARM_ALIGN__. -+ (ffi_prep_cif_machdep_core): Likewise. -+ (ffi_closure_helper_LINUX64): Likewise. -+ -+2013-11-16 Alan Modra -+ -+ * src/powerpc/linux64.S (ffi_call_LINUX64): Tweak restore of r28. -+ (.note.GNU-stack): Move inside outer #ifdef. -+ * src/powerpc/linux64_closure.S (STACKFRAME, PARMSAVE, -+ RETVAL): Define and use throughout. -+ (ffi_closure_LINUX64): Save fprs before buying stack. -+ (.note.GNU-stack): Move inside outer #ifdef. -+ -+2013-11-16 Alan Modra -+ -+ * src/powerpc/ffitarget.h (FFI_TARGET_SPECIFIC_VARIADIC): Define. -+ (FFI_EXTRA_CIF_FIELDS): Define. -+ * src/powerpc/ffi.c (ffi_prep_args64): Save fprs as per the -+ ABI, not to both fpr and param save area. -+ (ffi_prep_cif_machdep_core): Renamed from ffi_prep_cif_machdep. -+ Keep initial flags. Formatting. Remove dead FFI_LINUX_SOFT_FLOAT -+ code. -+ (ffi_prep_cif_machdep, ffi_prep_cif_machdep_var): New functions. -+ (ffi_closure_helper_LINUX64): Pass floating point as per ABI, -+ not to both fpr and parameter save areas. -+ -+ * libffi/testsuite/libffi.call/cls_double_va.c (main): Correct -+ function cast and don't call ffi_prep_cif. -+ * libffi/testsuite/libffi.call/cls_longdouble_va.c (main): Likewise. -+ -+2013-11-15 Andrew Haley -+ -+ * doc/libffi.texi (Closure Example): Fix the sample code. -+ * doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt. -+ -+2013-11-15 Andrew Haley -+ -+ * testsuite/libffi.call/va_struct1.c (main): Fix broken test. -+ * testsuite/libffi.call/cls_uint_va.c (cls_ret_T_fn): Likewise -+ * testsuite/libffi.call/cls_struct_va1.c (test_fn): Likewise. -+ * testsuite/libffi.call/va_1.c (main): Likewise. -+ -+2013-11-14 David Schneider -+ -+ * src/arm/ffi.c: Fix register allocation for mixed float and -+ doubles. -+ * testsuite/libffi.call/cls_many_mixed_float_double.c: Testcase -+ for many mixed float and double arguments. -+ -+2013-11-13 Alan Modra -+ -+ * doc/libffi.texi (Simple Example): Correct example code. -+ * doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt. -+ -+2013-11-13 Anthony Green -+ -+ * include/ffi_common.h: Respect HAVE_ALLOCA_H for GNU compiler -+ based build. (Thanks to tmr111116 on github) -+ -+2013-11-09 Anthony Green -+ -+ * m4/libtool.m4: Refresh. -+ * configure, Makefile.in: Rebuilt. -+ * README: Add more notes about next release. -+ -+2013-11-09 Shigeharu TAKENO -+ -+ * m4/ax_gcc_archflag.m4 (ax_gcc_arch): Don't recognize -+ UltraSPARC-IIi as ultrasparc3. -+ -+2013-11-06 Mark Kettenis -+ -+ * src/x86/freebsd.S (ffi_call_SYSV): Align the stack pointer to -+ 16-bytes. -+ -+2013-11-06 Konstantin Belousov -+ -+ * src/x86/freebsd.S (ffi_closure_raw_SYSV): Mark the assembler -+ source as not requiring executable stack. -+ -+2013-11-02 Anthony Green -+ -+ * doc/libffi.texi (The Basics): Clarify return value buffer size -+ requirements. Also, NULL result buffer pointers are no longer -+ supported. -+ * doc/libffi.info: Rebuilt. -+ -+2013-11-02 Mischa Jonker -+ -+ * Makefile.am (nodist_libffi_la_SOURCES): Fix build error. -+ * Makefile.in: Rebuilt. -+ -+2013-11-02 David Schneider -+ -+ * src/arm/ffi.c: more robust argument handling for closures on arm hardfloat -+ * testsuite/libffi.call/many_mixed.c: New file. -+ * testsuite/libffi.call/cls_many_mixed_args.c: More tests. -+ -+2013-11-02 Vitaly Budovski -+ -+ * src/x86/ffi.c (ffi_prep_cif_machdep): Don't align stack for win32. -+ -+2013-10-23 Mark H Weaver -+ -+ * src/mips/ffi.c: Fix handling of uint32_t arguments on the -+ MIPS N32 ABI. -+ -+2013-10-13 Sandra Loosemore -+ -+ * README: Add Nios II to table of supported platforms. -+ * Makefile.am (EXTRA_DIST): Add nios2 files. -+ (nodist_libffi_la_SOURCES): Likewise. -+ * Makefile.in: Regenerated. -+ * configure.ac (nios2*-linux*): New host. -+ (NIOS2): Add AM_CONDITIONAL. -+ * configure: Regenerated. -+ * src/nios2/ffi.c: New. -+ * src/nios2/ffitarget.h: New. -+ * src/nios2/sysv.S: New. -+ * src/prep_cif.c (initialize_aggregate): Handle extra structure -+ alignment via FFI_AGGREGATE_ALIGNMENT. -+ (ffi_prep_cif_core): Conditionalize structure return for NIOS2. -+ -+2013-10-10 Sandra Loosemore -+ -+ * testsuite/libffi.call/cls_many_mixed_args.c (cls_ret_double_fn): -+ Fix uninitialized variable. -+ -+2013-10-11 Marcus Shawcroft -+ -+ * testsuite/libffi.call/many.c (many): Replace * with +. -+ -+2013-10-08 Ondřej Bílka -+ -+ * src/aarch64/ffi.c, src/aarch64/sysv.S, src/arm/ffi.c, -+ src/arm/gentramp.sh, src/bfin/sysv.S, src/closures.c, -+ src/dlmalloc.c, src/ia64/ffi.c, src/microblaze/ffi.c, -+ src/microblaze/sysv.S, src/powerpc/darwin_closure.S, -+ src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/sh/ffi.c, -+ src/tile/tile.S, testsuite/libffi.call/nested_struct11.c: Fix -+ spelling errors. -+ -+2013-10-08 Anthony Green -+ -+ * aclocal.m4, compile, config.guess, config.sub, depcomp, -+ install-sh, mdate-sh, missing, texinfo.tex: Update from upstream. -+ * configure.ac: Update version to 3.0.14-rc0. -+ * Makefile.in, configure, Makefile.in, include/Makefile.in, -+ man/Makefile.in, testsuite/Makefile.in: Rebuilt. -+ * README: Mention M88K and VAX. -+ -+2013-07-15 Miod Vallat -+ -+ * Makefile.am, -+ configure.ac, -+ src/m88k/ffi.c, -+ src/m88k/ffitarget.h, -+ src/m88k/obsd.S, -+ src/vax/elfbsd.S, -+ src/vax/ffi.c, -+ src/vax/ffitarget.h: Add m88k and vax support. -+ -+2013-06-24 Alan Modra -+ -+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Move var declaration -+ before statements. -+ (ffi_prep_args64): Support little-endian. -+ (ffi_closure_helper_SYSV, ffi_closure_helper_LINUX64): Likewise. -+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Likewise. -+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Likewise. -+ -+2013-06-12 Mischa Jonker -+ -+ * configure.ac: Add support for ARC. -+ * Makefile.am: Likewise. -+ * README: Add ARC details. -+ * src/arc/arcompact.S: New. -+ * src/arc/ffi.c: Likewise. -+ * src/arc/ffitarget.h: Likewise. -+ -+2013-03-28 David Schneider -+ -+ * src/arm/ffi.c: Fix support for ARM hard-float calling convention. -+ * src/arm/sysv.S: call different methods for SYSV and VFP ABIs. -+ * testsuite/libffi.call/cls_many_mixed_args.c: testcase for a closure with -+ mixed arguments, many doubles. -+ * testsuite/libffi.call/many_double.c: testcase for calling a function using -+ more than 8 doubles. -+ * testcase/libffi.call/many.c: use absolute value to check result against an -+ epsilon -+ -+2013-03-17 Anthony Green -+ -+ * README: Update for 3.0.13. -+ * configure.ac: Ditto. -+ * configure: Rebuilt. -+ * doc/*: Update version. -+ -+2013-03-17 Dave Korn -+ -+ * src/closures.c (is_emutramp_enabled -+ [!FFI_MMAP_EXEC_EMUTRAMP_PAX]): Move default definition outside -+ enclosing #if scope. -+ -+2013-03-17 Anthony Green -+ -+ * configure.ac: Only modify toolexecdir in certain cases. -+ * configure: Rebuilt. -+ -+2013-03-16 Gilles Talis -+ -+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Don't use -+ fparg_count,etc on __NO_FPRS__ targets. -+ -+2013-03-16 Alan Hourihane -+ -+ * src/m68k/sysv.S (epilogue): Don't use extb instruction on -+ m680000 machines. -+ -+2013-03-16 Alex Gaynor -+ -+ * src/x86/ffi.c (ffi_prep_cif_machdep): Always align stack. -+ -+2013-03-13 Markos Chandras -+ -+ * configure.ac: Add support for Imagination Technologies Meta. -+ * Makefile.am: Likewise. -+ * README: Add Imagination Technologies Meta details. -+ * src/metag/ffi.c: New. -+ * src/metag/ffitarget.h: Likewise. -+ * src/metag/sysv.S: Likewise. -+ -+2013-02-24 Andreas Schwab -+ -+ * doc/libffi.texi (Structures): Fix missing category argument of -+ @deftp. -+ -+2013-02-11 Anthony Green -+ -+ * configure.ac: Update release number to 3.0.12. -+ * configure: Rebuilt. -+ * README: Update release info. -+ -+2013-02-10 Anthony Green -+ -+ * README: Add Moxie. -+ * src/moxie/ffi.c: Created. -+ * src/moxie/eabi.S: Created. -+ * src/moxie/ffitarget.h: Created. -+ * Makefile.am (nodist_libffi_la_SOURCES): Add Moxie. -+ * Makefile.in: Rebuilt. -+ * configure.ac: Add Moxie. -+ * configure: Rebuilt. -+ * testsuite/libffi.call/huge_struct.c: Disable format string -+ warnings for moxie*-*-elf tests. -+ -+2013-02-10 Anthony Green -+ -+ * Makefile.am (LTLDFLAGS): Fix reference. -+ * Makefile.in: Rebuilt. -+ -+2013-02-10 Anthony Green -+ -+ * README: Update supported platforms. Update test results link. -+ -+2013-02-09 Anthony Green -+ -+ * testsuite/libffi.call/negint.c: Remove forced -O2. -+ * testsuite/libffi.call/many2.c (foo): Remove GCCism. -+ * testsuite/libffi.call/ffitest.h: Add default PRIuPTR definition. -+ -+ * src/sparc/v8.S (ffi_closure_v8): Import ancient ulonglong -+ closure return type fix developed by Martin v. Löwis for cpython -+ fork. -+ -+2013-02-08 Andreas Tobler -+ -+ * src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix small struct -+ support. -+ * src/powerpc/sysv.S: Ditto. -+ -+2013-02-08 Anthony Green -+ -+ * testsuite/libffi.call/cls_longdouble.c: Remove xfail for -+ arm*-*-*. -+ -+2013-02-08 Anthony Green -+ -+ * src/sparc/ffi.c (ffi_prep_closure_loc): Fix cache flushing for GCC. -+ -+2013-02-08 Matthias Klose -+ -+ * man/ffi_prep_cif.3: Clean up for debian linter. -+ -+2013-02-08 Peter Bergner -+ -+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Account for FP args pushed -+ on the stack. -+ -+2013-02-08 Anthony Green -+ -+ * Makefile.am (EXTRA_DIST): Add missing files. -+ * testsuite/Makefile.am (EXTRA_DIST): Ditto. -+ * Makefile.in: Rebuilt. -+ -+2013-02-08 Anthony Green -+ -+ * configure.ac: Move sparc asm config checks to within functions -+ for compatibility with sun tools. -+ * configure: Rebuilt. -+ * src/sparc/ffi.c (ffi_prep_closure_loc): Flush cache on v9 -+ systems. -+ * src/sparc/v8.S (ffi_flush_icache): Implement a sparc v9 cache -+ flusher. -+ -+2013-02-08 Nathan Rossi -+ -+ * src/microblaze/ffi.c (ffi_closure_call_SYSV): Fix handling of -+ small big-endian structures. -+ (ffi_prep_args): Ditto. -+ -+2013-02-07 Anthony Green -+ -+ * src/sparc/v8.S (ffi_call_v8): Fix typo from last patch -+ (effectively hiding ffi_call_v8). -+ -+2013-02-07 Anthony Green -+ -+ * configure.ac: Update bug reporting address. -+ * configure.in: Rebuild. -+ -+ * src/sparc/v8.S (ffi_flush_icache): Out-of-line cache flusher for -+ Sun compiler. -+ * src/sparc/ffi.c (ffi_call): Remove warning. -+ Call ffi_flush_icache for non-GCC builds. -+ (ffi_prep_closure_loc): Use ffi_flush_icache. -+ -+ * Makefile.am (EXTRA_DIST): Add libtool-ldflags. -+ * Makefile.in: Rebuilt. -+ * libtool-ldflags: New file. -+ -+2013-02-07 Daniel Schepler -+ -+ * configure.ac: Correctly identify x32 systems as 64-bit. -+ * m4/libtool.m4: Remove libtool expr error. -+ * aclocal.m4, configure: Rebuilt. -+ -+2013-02-07 Anthony Green -+ -+ * configure.ac: Fix GCC usage test. -+ * configure: Rebuilt. -+ * README: Mention LLVM/GCC x86_64 issue. -+ * testsuite/Makefile.in: Rebuilt. -+ -+2013-02-07 Anthony Green -+ -+ * testsuite/libffi.call/cls_double_va.c (main): Replace // style -+ comments with /* */ for xlc compiler. -+ * testsuite/libffi.call/stret_large.c (main): Ditto. -+ * testsuite/libffi.call/stret_large2.c (main): Ditto. -+ * testsuite/libffi.call/nested_struct1.c (main): Ditto. -+ * testsuite/libffi.call/huge_struct.c (main): Ditto. -+ * testsuite/libffi.call/float_va.c (main): Ditto. -+ * testsuite/libffi.call/cls_struct_va1.c (main): Ditto. -+ * testsuite/libffi.call/cls_pointer_stack.c (main): Ditto. -+ * testsuite/libffi.call/cls_pointer.c (main): Ditto. -+ * testsuite/libffi.call/cls_longdouble_va.c (main): Ditto. -+ -+2013-02-06 Anthony Green -+ -+ * man/ffi_prep_cif.3: Clean up for debian lintian checker. -+ -+2013-02-06 Anthony Green -+ -+ * Makefile.am (pkgconfigdir): Add missing pkgconfig install bits. -+ * Makefile.in: Rebuild. -+ -+2013-02-02 Mark H Weaver -+ -+ * src/x86/ffi64.c (ffi_call): Sign-extend integer arguments passed -+ via general purpose registers. -+ -+2013-01-21 Nathan Rossi -+ -+ * README: Add MicroBlaze details. -+ * Makefile.am: Add MicroBlaze support. -+ * configure.ac: Likewise. -+ * src/microblaze/ffi.c: New. -+ * src/microblaze/ffitarget.h: Likewise. -+ * src/microblaze/sysv.S: Likewise. -+ -+2013-01-21 Nathan Rossi -+ * testsuite/libffi.call/return_uc.c: Fixed issue. -+ -+2013-01-21 Chris Zankel -+ -+ * README: Add Xtensa support. -+ * Makefile.am: Likewise. -+ * configure.ac: Likewise. -+ * Makefile.in Regenerate. -+ * configure: Likewise. -+ * src/prep_cif.c: Handle Xtensa. -+ * src/xtensa: New directory. -+ * src/xtensa/ffi.c: New file. -+ * src/xtensa/ffitarget.h: Ditto. -+ * src/xtensa/sysv.S: Ditto. -+ -+2013-01-11 Anthony Green -+ -+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Replace // style -+ comments with /* */ for xlc compiler. -+ * src/powerpc/aix.S (ffi_call_AIX): Ditto. -+ * testsuite/libffi.call/ffitest.h (allocate_mmap): Delete -+ deprecated inline function. -+ * testsuite/libffi.special/ffitestcxx.h: Ditto. -+ * README: Add update for AIX support. -+ -+2013-01-11 Anthony Green -+ -+ * configure.ac: Robustify pc relative reloc check. -+ * m4/ax_cc_maxopt.m4: Don't -malign-double. This is an ABI -+ changing option for 32-bit x86. -+ * aclocal.m4, configure: Rebuilt. -+ * README: Update supported target list. -+ -+2013-01-10 Anthony Green -+ -+ * README (tested): Add Compiler column to table. -+ -+2013-01-10 Anthony Green -+ -+ * src/x86/ffi64.c (struct register_args): Make sse array and array -+ of unions for sunpro compiler compatibility. -+ -+2013-01-10 Anthony Green -+ -+ * configure.ac: Test target platform size_t size. Handle both 32 -+ and 64-bit builds for x86_64-* and i?86-* targets (allowing for -+ CFLAG option to change default settings). -+ * configure, aclocal.m4: Rebuilt. -+ -+2013-01-10 Anthony Green -+ -+ * testsuite/libffi.special/special.exp: Only run exception -+ handling tests when using GNU compiler. -+ -+ * m4/ax_compiler_vendor.m4: New file. -+ * configure.ac: Test for compiler vendor and don't use -+ AX_CFLAGS_WARN_ALL with the sun compiler. -+ * aclocal.m4, configure: Rebuilt. -+ -+2013-01-10 Anthony Green -+ -+ * include/ffi_common.h: Don't use GCCisms to define types when -+ building with the SUNPRO compiler. -+ -+2013-01-10 Anthony Green -+ -+ * configure.ac: Put local.exp in the right place. -+ * configure: Rebuilt. -+ -+ * src/x86/ffi.c: Update comment about regparm function attributes. -+ * src/x86/sysv.S (ffi_closure_SYSV): The SUNPRO compiler requires -+ that all function arguments be passed on the stack (no regparm -+ support). -+ -+2013-01-08 Anthony Green -+ -+ * configure.ac: Generate local.exp. This sets CC_FOR_TARGET -+ when we are using the vendor compiler. -+ * testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): Point to -+ ../local.exp. -+ * configure, testsuite/Makefile.in: Rebuilt. -+ -+ * testsuite/libffi.call/call.exp: Run tests with different -+ options, depending on whether or not we are using gcc or the -+ vendor compiler. -+ * testsuite/lib/libffi.exp (libffi-init): Set using_gcc based on -+ whether or not we are building/testing with gcc. -+ -+2013-01-08 Anthony Green -+ -+ * configure.ac: Switch x86 solaris target to X86 by default. -+ * configure: Rebuilt. -+ -+2013-01-08 Anthony Green -+ -+ * configure.ac: Fix test for read-only eh_frame. -+ * configure: Rebuilt. -+ -+2013-01-08 Anthony Green -+ -+ * src/x86/sysv.S, src/x86/unix64.S: Only emit DWARF unwind info -+ when building with the GNU toolchain. -+ * testsuite/libffi.call/ffitest.h (CHECK): Fix for Solaris vendor -+ compiler. -+ -+2013-01-07 Thorsten Glaser -+ -+ * testsuite/libffi.call/cls_uchar_va.c, -+ testsuite/libffi.call/cls_ushort_va.c, -+ testsuite/libffi.call/va_1.c: Testsuite fixes. -+ -+2013-01-07 Thorsten Glaser -+ -+ * src/m68k/ffi.c (CIF_FLAGS_SINT8, CIF_FLAGS_SINT16): Define. -+ (ffi_prep_cif_machdep): Fix 8-bit and 16-bit signed calls. -+ * src/m68k/sysv.S (ffi_call_SYSV, ffi_closure_SYSV): Ditto. -+ -+2013-01-04 Anthony Green -+ -+ * Makefile.am (AM_CFLAGS): Don't automatically add -fexceptions -+ and -Wall. This is set in the configure script after testing for -+ GCC. -+ * Makefile.in: Rebuilt. -+ -+2013-01-02 rofl0r -+ -+ * src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix build error on ppc -+ when long double == double. -+ -+2013-01-02 Reini Urban -+ -+ * Makefile.am (libffi_la_LDFLAGS): Add -no-undefined to LDFLAGS -+ (required for shared libs on cygwin/mingw). -+ * Makefile.in: Rebuilt. -+ -+2012-10-31 Alan Modra -+ -+ * src/powerpc/linux64_closure.S: Add new ABI support. -+ * src/powerpc/linux64.S: Likewise. -+ -+2012-10-30 Magnus Granberg -+ Pavel Labushev -+ -+ * configure.ac: New options pax_emutramp -+ * configure, fficonfig.h.in: Regenerated -+ * src/closures.c: New function emutramp_enabled_check() and -+ checks. -+ -+2012-10-30 Frederick Cheung -+ -+ * configure.ac: Enable FFI_MAP_EXEC_WRIT for Darwin 12 (mountain -+ lion) and future version. -+ * configure: Rebuild. -+ -+2012-10-30 James Greenhalgh -+ Marcus Shawcroft -+ -+ * README: Add details of aarch64 port. -+ * src/aarch64/ffi.c: New. -+ * src/aarch64/ffitarget.h: Likewise. -+ * src/aarch64/sysv.S: Likewise. -+ * Makefile.am: Support aarch64. -+ * configure.ac: Support aarch64. -+ * Makefile.in, configure: Rebuilt. -+ -+2012-10-30 James Greenhalgh -+ Marcus Shawcroft -+ -+ * testsuite/lib/libffi.exp: Add support for aarch64. -+ * testsuite/libffi.call/cls_struct_va1.c: New. -+ * testsuite/libffi.call/cls_uchar_va.c: Likewise. -+ * testsuite/libffi.call/cls_uint_va.c: Likewise. -+ * testsuite/libffi.call/cls_ulong_va.c: Likewise. -+ * testsuite/libffi.call/cls_ushort_va.c: Likewise. -+ * testsuite/libffi.call/nested_struct11.c: Likewise. -+ * testsuite/libffi.call/uninitialized.c: Likewise. -+ * testsuite/libffi.call/va_1.c: Likewise. -+ * testsuite/libffi.call/va_struct1.c: Likewise. -+ * testsuite/libffi.call/va_struct2.c: Likewise. -+ * testsuite/libffi.call/va_struct3.c: Likewise. -+ -+2012-10-12 Walter Lee -+ -+ * Makefile.am: Add TILE-Gx/TILEPro support. -+ * configure.ac: Likewise. -+ * Makefile.in: Regenerate. -+ * configure: Likewise. -+ * src/prep_cif.c (ffi_prep_cif_core): Handle TILE-Gx/TILEPro. -+ * src/tile: New directory. -+ * src/tile/ffi.c: New file. -+ * src/tile/ffitarget.h: Ditto. -+ * src/tile/tile.S: Ditto. -+ -+2012-10-12 Matthias Klose -+ -+ * generate-osx-source-and-headers.py: Normalize whitespace. -+ -+2012-09-14 David Edelsohn -+ -+ * configure: Regenerated. -+ -+2012-08-26 Andrew Pinski -+ -+ PR libffi/53014 -+ * src/mips/ffi.c (ffi_prep_closure_loc): Allow n32 with soft-float and n64 with -+ soft-float. -+ -+2012-08-08 Uros Bizjak -+ -+ * src/s390/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, -+ just return FFI_BAD_ABI when things are wrong. -+ -+2012-07-18 H.J. Lu -+ -+ PR libffi/53982 -+ PR libffi/53973 -+ * src/x86/ffitarget.h: Check __ILP32__ instead of __LP64__ for x32. -+ (FFI_SIZEOF_JAVA_RAW): Defined to 4 for x32. -+ -+2012-05-16 H.J. Lu -+ -+ * configure: Regenerated. -+ -+2012-05-05 Nicolas Lelong -+ -+ * libffi.xcodeproj/project.pbxproj: Fixes. -+ * README: Update for iOS builds. -+ -+2012-04-23 Alexandre Keunecke I. de Mendonca -+ -+ * configure.ac: Add Blackfin/sysv support -+ * Makefile.am: Add Blackfin/sysv support -+ * src/bfin/ffi.c: Add Blackfin/sysv support -+ * src/bfin/ffitarget.h: Add Blackfin/sysv support -+ -+2012-04-11 Anthony Green -+ -+ * Makefile.am (EXTRA_DIST): Add new script. -+ * Makefile.in: Rebuilt. -+ -+2012-04-11 Zachary Waldowski -+ -+ * generate-ios-source-and-headers.py, -+ libffi.xcodeproj/project.pbxproj: Support a Mac static library via -+ Xcode. Set iOS compatibility to 4.0. Move iOS trampoline -+ generation into an Xcode "run script" phase. Include both as -+ Xcode build scripts. Don't always regenerate config files. -+ -+2012-04-10 Anthony Green -+ -+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Add missing semicolon. -+ -+2012-04-06 Anthony Green -+ -+ * Makefile.am (EXTRA_DIST): Add new iOS/xcode files. -+ * Makefile.in: Rebuilt. -+ -+2012-04-06 Mike Lewis -+ -+ * generate-ios-source-and-headers.py: New file. -+ * libffi.xcodeproj/project.pbxproj: New file. -+ * README: Update instructions on building iOS binary. -+ * build-ios.sh: Delete. -+ -+2012-04-06 Anthony Green -+ -+ * src/x86/ffi64.c (UINT128): Define differently for Intel and GNU -+ compilers, then use it. -+ -+2012-04-06 H.J. Lu -+ -+ * m4/libtool.m4 (_LT_ENABLE_LOCK): Support x32. -+ -+2012-04-06 Anthony Green -+ -+ * testsuite/Makefile.am (EXTRA_DIST): Add missing test cases. -+ * testsuite/Makefile.in: Rebuilt. -+ -+2012-04-05 Zachary Waldowski -+ -+ * include/ffi.h.in: Add missing trampoline table fields. -+ * src/arm/sysv.S: Fix ENTRY definition, and wrap symbol references -+ in CNAME. -+ * src/x86/ffi.c: Wrap Windows specific code in ifdefs. -+ -+2012-04-02 Peter Bergner -+ -+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Declare double_tmp. -+ Silence casting pointer to integer of different size warning. -+ Delete goto to previously deleted label. -+ (ffi_call): Silence possibly undefined warning. -+ (ffi_closure_helper_SYSV): Declare variable type. -+ -+2012-04-02 Peter Rosin -+ -+ * src/x86/win32.S (ffi_call_win32): Sign/zero extend the return -+ value in the Intel version as is already done for the AT&T version. -+ (ffi_closure_SYSV): Likewise. -+ (ffi_closure_raw_SYSV): Likewise. -+ (ffi_closure_STDCALL): Likewise. -+ -+2012-03-29 Peter Rosin -+ -+ * src/x86/win32.S (ffi_closure_raw_THISCALL): Unify the frame -+ generation, fix the ENDP label and remove the surplus third arg -+ from the 'lea' insn. -+ -+2012-03-29 Peter Rosin -+ -+ * src/x86/win32.S (ffi_closure_raw_SYSV): Make the 'stubraw' label -+ visible outside the PROC, so that ffi_closure_raw_THISCALL can see -+ it. Also instruct the assembler to add a frame to the function. -+ -+2012-03-23 Peter Rosin -+ -+ * Makefile.am (AM_CPPFLAGS): Add -DFFI_BUILDING. -+ * Makefile.in: Rebuilt. -+ * include/ffi.h.in [MSVC]: Add __declspec(dllimport) decorations -+ to all data exports, when compiling libffi clients using MSVC. -+ -+2012-03-29 Peter Rosin -+ -+ * src/x86/ffitarget.h (ffi_abi): Add new ABI FFI_MS_CDECL and -+ make it the default for MSVC. -+ (FFI_TYPE_MS_STRUCT): New structure return convention. -+ * src/x86/ffi.c (ffi_prep_cif_machdep): Tweak the structure -+ return convention for FFI_MS_CDECL to be FFI_TYPE_MS_STRUCT -+ instead of an ordinary FFI_TYPE_STRUCT. -+ (ffi_prep_args): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT. -+ (ffi_call): Likewise. -+ (ffi_prep_incoming_args_SYSV): Likewise. -+ (ffi_raw_call): Likewise. -+ (ffi_prep_closure_loc): Treat FFI_MS_CDECL as FFI_SYSV. -+ * src/x86/win32.S (ffi_closure_SYSV): For FFI_TYPE_MS_STRUCT, -+ return a pointer to the result structure in eax and don't pop -+ that pointer from the stack, the caller takes care of it. -+ (ffi_call_win32): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT. -+ (ffi_closure_raw_SYSV): Likewise. -+ -+2012-03-22 Peter Rosin -+ -+ * testsuite/libffi.call/closure_stdcall.c [MSVC]: Add inline -+ assembly version with Intel syntax. -+ * testsuite/libffi.call/closure_thiscall.c [MSVC]: Likewise. -+ -+2012-03-23 Peter Rosin -+ -+ * testsuite/libffi.call/ffitest.h: Provide abstration of -+ __attribute__((fastcall)) in the form of a __FASTCALL__ -+ define. Define it to __fastcall for MSVC. -+ * testsuite/libffi.call/fastthis1_win32.c: Use the above. -+ * testsuite/libffi.call/fastthis2_win32.c: Likewise. -+ * testsuite/libffi.call/fastthis3_win32.c: Likewise. -+ * testsuite/libffi.call/strlen2_win32.c: Likewise. -+ * testsuite/libffi.call/struct1_win32.c: Likewise. -+ * testsuite/libffi.call/struct2_win32.c: Likewise. -+ -+2012-03-22 Peter Rosin -+ -+ * src/x86/win32.S [MSVC] (ffi_closure_THISCALL): Remove the manual -+ frame on function entry, MASM adds one automatically. -+ -+2012-03-22 Peter Rosin -+ -+ * testsuite/libffi.call/ffitest.h [MSVC]: Add kludge for missing -+ bits in the MSVC headers. -+ -+2012-03-22 Peter Rosin -+ -+ * testsuite/libffi.call/cls_12byte.c: Adjust to the C89 style -+ with no declarations after statements. -+ * testsuite/libffi.call/cls_16byte.c: Likewise. -+ * testsuite/libffi.call/cls_18byte.c: Likewise. -+ * testsuite/libffi.call/cls_19byte.c: Likewise. -+ * testsuite/libffi.call/cls_1_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_20byte.c: Likewise. -+ * testsuite/libffi.call/cls_20byte1.c: Likewise. -+ * testsuite/libffi.call/cls_24byte.c: Likewise. -+ * testsuite/libffi.call/cls_2byte.c: Likewise. -+ * testsuite/libffi.call/cls_3_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_3byte1.c: Likewise. -+ * testsuite/libffi.call/cls_3byte2.c: Likewise. -+ * testsuite/libffi.call/cls_4_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_4byte.c: Likewise. -+ * testsuite/libffi.call/cls_5_1_byte.c: Likewise. -+ * testsuite/libffi.call/cls_5byte.c: Likewise. -+ * testsuite/libffi.call/cls_64byte.c: Likewise. -+ * testsuite/libffi.call/cls_6_1_byte.c: Likewise. -+ * testsuite/libffi.call/cls_6byte.c: Likewise. -+ * testsuite/libffi.call/cls_7_1_byte.c: Likewise. -+ * testsuite/libffi.call/cls_7byte.c: Likewise. -+ * testsuite/libffi.call/cls_8byte.c: Likewise. -+ * testsuite/libffi.call/cls_9byte1.c: Likewise. -+ * testsuite/libffi.call/cls_9byte2.c: Likewise. -+ * testsuite/libffi.call/cls_align_double.c: Likewise. -+ * testsuite/libffi.call/cls_align_float.c: Likewise. -+ * testsuite/libffi.call/cls_align_longdouble.c: Likewise. -+ * testsuite/libffi.call/cls_align_longdouble_split.c: Likewise. -+ * testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise. -+ * testsuite/libffi.call/cls_align_pointer.c: Likewise. -+ * testsuite/libffi.call/cls_align_sint16.c: Likewise. -+ * testsuite/libffi.call/cls_align_sint32.c: Likewise. -+ * testsuite/libffi.call/cls_align_sint64.c: Likewise. -+ * testsuite/libffi.call/cls_align_uint16.c: Likewise. -+ * testsuite/libffi.call/cls_align_uint32.c: Likewise. -+ * testsuite/libffi.call/cls_align_uint64.c: Likewise. -+ * testsuite/libffi.call/cls_dbls_struct.c: Likewise. -+ * testsuite/libffi.call/cls_pointer_stack.c: Likewise. -+ * testsuite/libffi.call/err_bad_typedef.c: Likewise. -+ * testsuite/libffi.call/huge_struct.c: Likewise. -+ * testsuite/libffi.call/nested_struct.c: Likewise. -+ * testsuite/libffi.call/nested_struct1.c: Likewise. -+ * testsuite/libffi.call/nested_struct10.c: Likewise. -+ * testsuite/libffi.call/nested_struct2.c: Likewise. -+ * testsuite/libffi.call/nested_struct3.c: Likewise. -+ * testsuite/libffi.call/nested_struct4.c: Likewise. -+ * testsuite/libffi.call/nested_struct5.c: Likewise. -+ * testsuite/libffi.call/nested_struct6.c: Likewise. -+ * testsuite/libffi.call/nested_struct7.c: Likewise. -+ * testsuite/libffi.call/nested_struct8.c: Likewise. -+ * testsuite/libffi.call/nested_struct9.c: Likewise. -+ * testsuite/libffi.call/stret_large.c: Likewise. -+ * testsuite/libffi.call/stret_large2.c: Likewise. -+ * testsuite/libffi.call/stret_medium.c: Likewise. -+ * testsuite/libffi.call/stret_medium2.c: Likewise. -+ * testsuite/libffi.call/struct1.c: Likewise. -+ * testsuite/libffi.call/struct1_win32.c: Likewise. -+ * testsuite/libffi.call/struct2.c: Likewise. -+ * testsuite/libffi.call/struct2_win32.c: Likewise. -+ * testsuite/libffi.call/struct3.c: Likewise. -+ * testsuite/libffi.call/struct4.c: Likewise. -+ * testsuite/libffi.call/struct5.c: Likewise. -+ * testsuite/libffi.call/struct6.c: Likewise. -+ * testsuite/libffi.call/struct7.c: Likewise. -+ * testsuite/libffi.call/struct8.c: Likewise. -+ * testsuite/libffi.call/struct9.c: Likewise. -+ * testsuite/libffi.call/testclosure.c: Likewise. -+ -+2012-03-21 Peter Rosin -+ -+ * testsuite/libffi.call/float_va.c (float_va_fn): Use %f when -+ printing doubles (%lf is for long doubles). -+ (main): Likewise. -+ -+2012-03-21 Peter Rosin -+ -+ * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*] -+ (set_ld_library_path_env_vars): Add the library search dir to PATH -+ (and save PATH for later). -+ (restore_ld_library_path_env_vars): Restore PATH. -+ -+2012-03-21 Peter Rosin -+ -+ * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*] -+ (set_ld_library_path_env_vars): Add the library search dir to PATH -+ (and save PATH for later). -+ (restore_ld_library_path_env_vars): Restore PATH. -+ -+2012-03-20 Peter Rosin -+ -+ * testsuite/libffi.call/strlen2_win32.c (main): Remove bug. -+ * src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label -+ visible outside the PROC, so that ffi_closure_THISCALL can see it. -+ -+2012-03-20 Peter Rosin -+ -+ * testsuite/libffi.call/strlen2_win32.c (main): Remove bug. -+ * src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label -+ visible outside the PROC, so that ffi_closure_THISCALL can see it. -+ -+2012-03-19 Alan Hourihane -+ -+ * src/m68k/ffi.c: Add MINT support. -+ * src/m68k/sysv.S: Ditto. -+ -+2012-03-06 Chung-Lin Tang -+ -+ * src/arm/ffi.c (ffi_call): Add __ARM_EABI__ guard around call to -+ ffi_call_VFP(). -+ (ffi_prep_closure_loc): Add __ARM_EABI__ guard around use of -+ ffi_closure_VFP. -+ * src/arm/sysv.S: Add __ARM_EABI__ guard around VFP code. -+ -+2012-03-19 chennam -+ -+ * src/powerpc/ffi_darwin.c (ffi_prep_closure_loc): Fix AIX closure -+ support. -+ -+2012-03-13 Kaz Kojima -+ -+ * src/sh/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, -+ just return FFI_BAD_ABI when things are wrong. -+ * src/sh64/ffi.c (ffi_prep_closure_loc): Ditto. -+ -+2012-03-09 David Edelsohn -+ -+ * src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64 -+ change to return value of ffi_closure_helper_DARWIN and load type -+ from return type. -+ -+2012-03-03 H.J. Lu -+ -+ * src/x86/ffi64.c (ffi_call): Cast the return value to unsigned -+ long. -+ (ffi_prep_closure_loc): Cast to 64bit address in trampoline. -+ (ffi_closure_unix64_inner): Cast return pointer to unsigned long -+ first. -+ -+ * src/x86/ffitarget.h (FFI_SIZEOF_ARG): Defined to 8 for x32. -+ (ffi_arg): Set to unsigned long long for x32. -+ (ffi_sarg): Set to long long for x32. -+ -+2012-03-03 H.J. Lu -+ -+ * src/prep_cif.c (ffi_prep_cif_core): Properly check bad ABI. -+ -+2012-03-03 Andoni Morales Alastruey -+ -+ * configure.ac: Add -no-undefined for both 32- and 64-bit x86 -+ windows-like hosts. -+ * configure: Rebuilt. -+ -+2012-02-27 Mikael Pettersson -+ -+ PR libffi/52223 -+ * Makefile.am (FLAGS_TO_PASS): Define. -+ * Makefile.in: Regenerate. -+ -+2012-02-23 Anthony Green -+ -+ * src/*/ffitarget.h: Ensure that users never include ffitarget.h -+ directly. -+ -+2012-02-23 Kai Tietz -+ -+ PR libffi/52221 -+ * src/x86/ffi.c (ffi_closure_raw_THISCALL): New -+ prototype. -+ (ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for -+ thiscall-convention. -+ (ffi_raw_call): Use ffi_prep_args_raw. -+ * src/x86/win32.S (ffi_closure_raw_THISCALL): Add -+ implementation for stub. -+ -+2012-02-10 Kai Tietz -+ -+ * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64 -+ windows target. -+ * configure: Regenerated. -+ -+2012-02-08 Kai Tietz -+ -+ * src/prep_cif.c (ffi_prep_cif): Allow for X86_WIN32 -+ also FFI_THISCALL. -+ * src/x86/ffi.c (ffi_closure_THISCALL): Add prototype. -+ (FFI_INIT_TRAMPOLINE_THISCALL): New trampoline code. -+ (ffi_prep_closure_loc): Add FFI_THISCALL support. -+ * src/x86/ffitarget.h (FFI_TRAMPOLINE_SIZE): Adjust size. -+ * src/x86/win32.S (ffi_closure_THISCALL): New closure code -+ for thiscall-calling convention. -+ * testsuite/libffi.call/closure_thiscall.c: New test. -+ -+2012-01-28 Kai Tietz -+ -+ * src/libffi/src/x86/ffi.c (ffi_call_win32): Add new -+ argument to prototype for specify calling-convention. -+ (ffi_call): Add support for stdcall/thiscall convention. -+ (ffi_prep_args): Likewise. -+ (ffi_raw_call): Likewise. -+ * src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and -+ FFI_FASTCALL. -+ * src/x86/win32.S (_ffi_call_win32): Add support for -+ fastcall/thiscall calling-convention calls. -+ * testsuite/libffi.call/fastthis1_win32.c: New test. -+ * testsuite/libffi.call/fastthis2_win32.c: New test. -+ * testsuite/libffi.call/fastthis3_win32.c: New test. -+ * testsuite/libffi.call/strlen2_win32.c: New test. -+ * testsuite/libffi.call/many2_win32.c: New test. -+ * testsuite/libffi.call/struct1_win32.c: New test. -+ * testsuite/libffi.call/struct2_win32.c: New test. -+ -+2012-01-23 Uros Bizjak -+ -+ * src/alpha/ffi.c (ffi_prep_closure_loc): Check for bad ABI. -+ -+2012-01-23 Anthony Green -+ Chris Young -+ -+ * configure.ac: Add Amiga support. -+ * configure: Rebuilt. -+ -+2012-01-23 Dmitry Nadezhin -+ -+ * include/ffi_common.h (LIKELY, UNLIKELY): Fix definitions. -+ -+2012-01-23 Andreas Schwab -+ -+ * src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain -+ mc68000. Test for __HAVE_68881__ in addition to __MC68881__. -+ -+2012-01-19 Jakub Jelinek -+ -+ PR rtl-optimization/48496 -+ * src/ia64/ffi.c (ffi_call): Fix up aliasing violations. -+ -+2012-01-09 Rainer Orth -+ -+ * configure.ac (i?86-*-*): Set TARGET to X86_64. -+ * configure: Regenerate. -+ -+2011-12-07 Andrew Pinski -+ -+ PR libffi/50051 -+ * src/mips/n32.S: Add ".set mips4". -+ -+2011-11-21 Andreas Tobler -+ -+ * configure: Regenerate. -+ -+2011-11-12 David Gilbert -+ -+ * doc/libffi.texi, include/ffi.h.in, include/ffi_common.h, -+ man/Makefile.am, man/ffi.3, man/ffi_prep_cif.3, -+ man/ffi_prep_cif_var.3, src/arm/ffi.c, src/arm/ffitarget.h, -+ src/cris/ffi.c, src/prep_cif.c, -+ testsuite/libffi.call/cls_double_va.c, -+ testsuite/libffi.call/cls_longdouble_va.c, -+ testsuite/libffi.call/float_va.c: Many changes to support variadic -+ function calls. -+ -+2011-11-12 Kyle Moffett -+ -+ * src/powerpc/ffi.c, src/powerpc/ffitarget.h, -+ src/powerpc/ppc_closure.S, src/powerpc/sysv.S: Many changes for -+ softfloat powerpc variants. -+ -+2011-11-12 Petr Salinger -+ -+ * configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Fix kfreebsd support. -+ * configure: Rebuilt. -+ -+2011-11-12 Timothy Wall -+ -+ * src/arm/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): Max -+ alignment of 4 for wince on ARM. -+ -+2011-11-12 Kyle Moffett -+ Anthony Green -+ -+ * src/ppc/sysv.S, src/ppc/ffi.c: Remove use of ppc string -+ instructions (not available on some cores, like the PPC440). -+ -+2011-11-12 Kimura Wataru -+ -+ * m4/ax_enable_builddir: Change from string comparison to numeric -+ comparison for wc output. -+ * configure.ac: Enable FFI_MMAP_EXEC_WRIT for darwin11 aka Mac OS -+ X 10.7. -+ * configure: Rebuilt. -+ -+2011-11-12 Anthony Green -+ -+ * Makefile.am (AM_CCASFLAGS): Add -g option to build assembly -+ files with debug info. -+ * Makefile.in: Rebuilt. -+ -+2011-11-12 Jasper Lievisse Adriaanse -+ -+ * README: Update list of supported OpenBSD systems. -+ -+2011-11-12 Anthony Green -+ -+ * libtool-version: Update. -+ * Makefile.am (nodist_libffi_la_SOURCES): Add src/debug.c if -+ FFI_DEBUG. -+ (libffi_la_SOURCES): Remove src/debug.c -+ (EXTRA_DIST): Add src/debug.c -+ * Makefile.in: Rebuilt. -+ * README: Update for 3.0.11. -+ -+2011-11-10 Richard Henderson -+ -+ * configure.ac (GCC_AS_CFI_PSEUDO_OP): Use it instead of inline check. -+ * configure, aclocal.m4: Rebuild. -+ -+2011-09-04 Iain Sandoe -+ -+ PR libffi/49594 -+ * src/powerpc/darwin_closure.S (stubs): Make the stub binding -+ helper reference track the architecture pointer size. -+ -+2011-08-25 Andrew Haley -+ -+ * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Remove hard-coded assembly -+ instructions. -+ * src/arm/sysv.S (ffi_arm_trampoline): Put them here instead. -+ -+2011-07-11 Andrew Haley -+ -+ * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Clear icache. -+ -+2011-06-29 Rainer Orth -+ -+ * testsuite/libffi.call/cls_double_va.c: Move PR number to comment. -+ * testsuite/libffi.call/cls_longdouble_va.c: Likewise. -+ -+2011-06-29 Rainer Orth -+ -+ PR libffi/46660 -+ * testsuite/libffi.call/cls_double_va.c: xfail dg-output on -+ mips-sgi-irix6*. -+ * testsuite/libffi.call/cls_longdouble_va.c: Likewise. -+ -+2011-06-14 Rainer Orth -+ -+ * testsuite/libffi.call/huge_struct.c (test_large_fn): Use PRIu8, -+ PRId8 instead of %hhu, %hhd. -+ * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRId8, -+ PRIu8): Define. -+ [__sgi__] (PRId8, PRIu8): Define. -+ -+2011-04-29 Rainer Orth -+ -+ * src/alpha/osf.S (UA_SI, FDE_ENCODING, FDE_ENCODE, FDE_ARANGE): -+ Define. -+ Use them to handle ELF vs. ECOFF differences. -+ [__osf__] (_GLOBAL__F_ffi_call_osf): Define. -+ -+2011-03-30 Timothy Wall -+ -+ * src/powerpc/darwin.S: Fix unknown FDE encoding. -+ * src/powerpc/darwin_closure.S: ditto. -+ -+2011-02-25 Anthony Green -+ -+ * src/powerpc/ffi.c (ffi_prep_closure_loc): Allow for more -+ 32-bit ABIs. -+ -+2011-02-15 Anthony Green -+ -+ * m4/ax_cc_maxopt.m4: Don't -malign-double or use -ffast-math. -+ * configure: Rebuilt. -+ -+2011-02-13 Ralf Wildenhues -+ -+ * configure: Regenerate. -+ -+2011-02-13 Anthony Green -+ -+ * include/ffi_common.h (UNLIKELY, LIKELY): Define. -+ * src/x86/ffi64.c (UNLIKELY, LIKELY): Remove definition. -+ * src/prep_cif.c (UNLIKELY, LIKELY): Remove definition. -+ -+ * src/prep_cif.c (initialize_aggregate): Convert assertion into -+ FFI_BAD_TYPEDEF return. Initialize arg size and alignment to 0. -+ -+ * src/pa/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, -+ just return FFI_BAD_ABI when things are wrong. -+ * src/arm/ffi.c (ffi_prep_closure_loc): Ditto. -+ * src/powerpc/ffi.c (ffi_prep_closure_loc): Ditto. -+ * src/mips/ffi.c (ffi_prep_closure_loc): Ditto. -+ * src/ia64/ffi.c (ffi_prep_closure_loc): Ditto. -+ * src/avr32/ffi.c (ffi_prep_closure_loc): Ditto. -+ -+2011-02-11 Anthony Green -+ -+ * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, -+ just return FFI_BAD_ABI when things are wrong. -+ -+2012-02-11 Eric Botcazou -+ -+ * src/sparc/v9.S (STACKFRAME): Bump to 176. -+ -+2011-02-09 Stuart Shelton -+ -+ http://bugs.gentoo.org/show_bug.cgi?id=286911 -+ * src/mips/ffitarget.h: Clean up error messages. -+ * src/java_raw_api.c (ffi_java_translate_args): Cast raw arg to -+ ffi_raw*. -+ * include/ffi.h.in: Add pragma for SGI compiler. -+ -+2011-02-09 Anthony Green -+ -+ * configure.ac: Add powerpc64-*-darwin* support. -+ -+2011-02-09 Anthony Green -+ -+ * README: Mention Interix. -+ -+2011-02-09 Jonathan Callen -+ -+ * configure.ac: Add Interix to win32/cygwin/mingw case. -+ * configure: Ditto. -+ * src/closures.c: Treat Interix like Cygwin, instead of as a -+ generic win32. -+ -+2011-02-09 Anthony Green -+ -+ * testsuite/libffi.call/err_bad_typedef.c: Remove xfail. -+ * testsuite/libffi.call/err_bad_abi.c: Remove xfail. -+ * src/x86/ffi64.c (UNLIKELY, LIKELY): Define. -+ (ffi_prep_closure_loc): Check for bad ABI. -+ * src/prep_cif.c (UNLIKELY, LIKELY): Define. -+ (initialize_aggregate): Check for bad types. -+ -+2011-02-09 Landon Fuller -+ -+ * Makefile.am (EXTRA_DIST): Add build-ios.sh, src/arm/gentramp.sh, -+ src/arm/trampoline.S. -+ (nodist_libffi_la_SOURCES): Add src/arc/trampoline.S. -+ * configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Define. -+ * src/arm/ffi.c (ffi_trampoline_table) -+ (ffi_closure_trampoline_table_page, ffi_trampoline_table_entry) -+ (FFI_TRAMPOLINE_CODELOC_CONFIG, FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET) -+ (FFI_TRAMPOLINE_COUNT, ffi_trampoline_lock, ffi_trampoline_tables) -+ (ffi_trampoline_table_alloc, ffi_closure_alloc, ffi_closure_free): -+ Define for FFI_EXEC_TRAMPOLINE_TABLE case (iOS). -+ (ffi_prep_closure_loc): Handl FFI_EXEC_TRAMPOLINE_TABLE case -+ separately. -+ * src/arm/sysv.S: Handle Apple iOS host. -+ * src/closures.c: Handle FFI_EXEC_TRAMPOLINE_TABLE case. -+ * build-ios.sh: New file. -+ * fficonfig.h.in, configure, Makefile.in: Rebuilt. -+ * README: Mention ARM iOS. -+ -+2011-02-08 Oren Held -+ -+ * src/dlmalloc.c (_STRUCT_MALLINFO): Define in order to avoid -+ redefinition of mallinfo on HP-UX. -+ -+2011-02-08 Ginn Chen -+ -+ * src/sparc/ffi.c (ffi_call): Make compatible with Solaris Studio -+ aggregate return ABI. Flush cache. -+ (ffi_prep_closure_loc): Flush cache. -+ -+2011-02-11 Anthony Green -+ -+ From Tom Honermann : -+ * src/powerpc/aix.S (ffi_call_AIX): Support for xlc toolchain on -+ AIX. Declare .ffi_prep_args. Insert nops after branch -+ instructions so that the AIX linker can insert TOC reload -+ instructions. -+ * src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN. -+ -+2011-02-08 Ed -+ -+ * src/powerpc/asm.h: Fix grammar nit in comment. -+ -+2011-02-08 Uli Link -+ -+ * include/ffi.h.in (FFI_64_BIT_MAX): Define and use. -+ -+2011-02-09 Rainer Orth -+ -+ PR libffi/46661 -+ * testsuite/libffi.call/cls_pointer.c (main): Cast void * to -+ uintptr_t first. -+ * testsuite/libffi.call/cls_pointer_stack.c (main): Likewise. -+ -+2011-02-08 Rafael Avila de Espindola -+ -+ * configure.ac: Fix x86 test for pc related relocs. -+ * configure: Rebuilt. -+ -+2011-02-07 Joel Sherrill -+ -+ * libffi/src/m68k/ffi.c: Add RTEMS support for cache flushing. -+ Handle case when CPU variant does not have long double support. -+ * libffi/src/m68k/sysv.S: Add support for mc68000, Coldfire, -+ and cores with soft floating point. -+ -+2011-02-07 Joel Sherrill -+ -+ * configure.ac: Add mips*-*-rtems* support. -+ * configure: Regenerate. -+ * src/mips/ffitarget.h: Ensure needed constants are available -+ for targets which do not have sgidefs.h. -+ -+2011-01-26 Dave Korn -+ -+ PR target/40125 -+ * configure.ac (AM_LTLDFLAGS): Add -bindir option for windows DLLs. -+ * configure: Regenerate. -+ -+2010-12-18 Iain Sandoe -+ -+ PR libffi/29152 -+ PR libffi/42378 -+ * src/powerpc/darwin_closure.S: Provide Darwin64 implementation, -+ update comments. -+ * src/powerpc/ffitarget.h (POWERPC_DARWIN64): New, -+ (FFI_TRAMPOLINE_SIZE): Update for Darwin64. -+ * src/powerpc/darwin.S: Provide Darwin64 implementation, -+ update comments. -+ * src/powerpc/ffi_darwin.c: Likewise. -+ -+2010-12-06 Rainer Orth -+ -+ * configure.ac (libffi_cv_as_ascii_pseudo_op): Use double -+ backslashes. -+ (libffi_cv_as_string_pseudo_op): Likewise. -+ * configure: Regenerate. -+ -+2010-12-03 Chung-Lin Tang -+ -+ * src/arm/sysv.S (ffi_closure_SYSV): Add UNWIND to .pad directive. -+ (ffi_closure_VFP): Same. -+ (ffi_call_VFP): Move down to before ffi_closure_VFP. Add '.fpu vfp' -+ directive. -+ -+2010-12-01 Rainer Orth -+ -+ * testsuite/libffi.call/ffitest.h [__sgi] (PRId64, PRIu64): Define. -+ (PRIuPTR): Define. -+ -+2010-11-29 Richard Henderson -+ Rainer Orth -+ -+ * src/x86/sysv.S (FDE_ENCODING, FDE_ENCODE): Define. -+ (.eh_frame): Use FDE_ENCODING. -+ (.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE. -+ -+2010-11-22 Jacek Caban -+ -+ * configure.ac: Check for symbol underscores on mingw-w64. -+ * configure: Rebuilt. -+ * src/x86/win64.S: Correctly access extern symbols in respect to -+ underscores. -+ -+2010-11-15 Rainer Orth -+ -+ * testsuite/lib/libffi-dg.exp: Rename ... -+ * testsuite/lib/libffi.exp: ... to this. -+ * libffi/testsuite/libffi.call/call.exp: Don't load libffi-dg.exp. -+ * libffi/testsuite/libffi.special/special.exp: Likewise. -+ -+2010-10-28 Chung-Lin Tang -+ -+ * src/arm/ffi.c (ffi_prep_args): Add VFP register argument handling -+ code, new parameter, and return value. Update comments. -+ (ffi_prep_cif_machdep): Add case for VFP struct return values. Add -+ call to layout_vfp_args(). -+ (ffi_call_SYSV): Update declaration. -+ (ffi_call_VFP): New declaration. -+ (ffi_call): Add VFP struct return conditions. Call ffi_call_VFP() -+ when ABI is FFI_VFP. -+ (ffi_closure_VFP): New declaration. -+ (ffi_closure_SYSV_inner): Add new vfp_args parameter, update call to -+ ffi_prep_incoming_args_SYSV(). -+ (ffi_prep_incoming_args_SYSV): Update parameters. Add VFP argument -+ case handling. -+ (ffi_prep_closure_loc): Pass ffi_closure_VFP to trampoline -+ construction under VFP hard-float. -+ (rec_vfp_type_p): New function. -+ (vfp_type_p): Same. -+ (place_vfp_arg): Same. -+ (layout_vfp_args): Same. -+ * src/arm/ffitarget.h (ffi_abi): Add FFI_VFP. Define FFI_DEFAULT_ABI -+ based on __ARM_PCS_VFP. -+ (FFI_EXTRA_CIF_FIELDS): Define for adding VFP hard-float specific -+ fields. -+ (FFI_TYPE_STRUCT_VFP_FLOAT): Define internally used type code. -+ (FFI_TYPE_STRUCT_VFP_DOUBLE): Same. -+ * src/arm/sysv.S (ffi_call_SYSV): Change call of ffi_prep_args() to -+ direct call. Move function pointer load upwards. -+ (ffi_call_VFP): New function. -+ (ffi_closure_VFP): Same. -+ -+ * testsuite/lib/libffi-dg.exp (check-flags): New function. -+ (dg-skip-if): New function. -+ * testsuite/libffi.call/cls_double_va.c: Skip if target is arm*-*-* -+ and compiler options include -mfloat-abi=hard. -+ * testsuite/libffi.call/cls_longdouble_va.c: Same. -+ -+2010-10-01 Jakub Jelinek -+ -+ PR libffi/45677 -+ * src/x86/ffi64.c (ffi_prep_cif_machdep): Ensure cif->bytes is -+ a multiple of 8. -+ * testsuite/libffi.call/many2.c: New test. -+ -+2010-08-20 Mark Wielaard -+ -+ * src/closures.c (open_temp_exec_file_mnt): Check if getmntent_r -+ returns NULL. -+ -+2010-08-09 Andreas Tobler -+ -+ * configure.ac: Add target powerpc64-*-freebsd*. -+ * configure: Regenerate. -+ * testsuite/libffi.call/cls_align_longdouble_split.c: Pass -+ -mlong-double-128 only to linux targets. -+ * testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise. -+ * testsuite/libffi.call/cls_longdouble.c: Likewise. -+ * testsuite/libffi.call/huge_struct.c: Likewise. -+ -+2010-08-05 Dan Witte -+ -+ * Makefile.am: Pass FFI_DEBUG define to msvcc.sh for linking to the -+ debug CRT when --enable-debug is given. -+ * configure.ac: Define it. -+ * msvcc.sh: Translate -g and -DFFI_DEBUG appropriately. -+ -+2010-08-04 Dan Witte -+ -+ * src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64 -+ platforms. -+ * src/x86/ffi.c: Remove redundant ifdef checks. -+ * src/prep_cif.c: Push stack space computation into src/x86/ffi.c -+ for X86_ANY so return value space doesn't get added twice. -+ -+2010-08-03 Neil Rashbrooke -+ -+ * msvcc.sh: Don't pass -safeseh to ml64 because behavior is buggy. -+ -+2010-07-22 Dan Witte -+ -+ * src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI. -+ * src/prep_cif.c: Fix ABI assertion. -+ * src/cris/ffi.c: Ditto. -+ -+2010-07-10 Evan Phoenix -+ -+ * src/closures.c (selinux_enabled_check): Fix strncmp usage bug. -+ -+2010-07-07 Dan Horák -+ -+ * include/ffi.h.in: Protect #define with #ifndef. -+ * src/powerpc/ffitarget.h: Ditto. -+ * src/s390/ffitarget.h: Ditto. -+ * src/sparc/ffitarget.h: Ditto. -+ -+2010-07-07 Neil Roberts -+ -+ * src/x86/sysv.S (ffi_call_SYSV): Align the stack pointer to -+ 16-bytes. -+ -+2010-07-02 Jakub Jelinek -+ -+ * Makefile.am (AM_MAKEFLAGS): Pass also mandir to submakes. -+ * Makefile.in: Regenerated. -+ -+2010-05-19 Rainer Orth -+ -+ * configure.ac (libffi_cv_as_x86_pcrel): Check for illegal in as -+ output, too. -+ (libffi_cv_as_ascii_pseudo_op): Check for .ascii. -+ (libffi_cv_as_string_pseudo_op): Check for .string. -+ * configure: Regenerate. -+ * fficonfig.h.in: Regenerate. -+ * src/x86/sysv.S (.eh_frame): Use .ascii, .string or error. -+ -+2010-05-11 Dan Witte -+ -+ * doc/libffi.tex: Document previous change. -+ -+2010-05-11 Makoto Kato -+ -+ * src/x86/ffi.c (ffi_call): Don't copy structs passed by value. -+ -+2010-05-05 Michael Kohler -+ -+ * src/dlmalloc.c (dlfree): Fix spelling. -+ * src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto. -+ * configure.ac: Ditto. -+ * configure: Rebuilt. -+ -+2010-04-13 Dan Witte -+ -+ * msvcc.sh: Build with -W3 instead of -Wall. -+ * src/powerpc/ffi_darwin.c: Remove build warnings. -+ * src/x86/ffi.c: Ditto. -+ * src/x86/ffitarget.h: Ditto. -+ -+2010-04-12 Dan Witte -+ Walter Meinl -+ -+ * configure.ac: Add OS/2 support. -+ * configure: Rebuilt. -+ * src/closures.c: Ditto. -+ * src/dlmalloc.c: Ditto. -+ * src/x86/win32.S: Ditto. -+ -+2010-04-07 Jakub Jelinek -+ -+ * testsuite/libffi.call/err_bad_abi.c: Remove unused args variable. -+ -+2010-04-02 Ralf Wildenhues -+ -+ * Makefile.in: Regenerate. -+ * aclocal.m4: Regenerate. -+ * include/Makefile.in: Regenerate. -+ * man/Makefile.in: Regenerate. -+ * testsuite/Makefile.in: Regenerate. -+ -+2010-03-30 Dan Witte -+ -+ * msvcc.sh: Disable build warnings. -+ * README (tested): Clarify windows build procedure. -+ -+2010-03-15 Rainer Orth -+ -+ * configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test. -+ * configure: Regenerate. -+ * fficonfig.h.in: Regenerate. -+ * libffi/src/x86/unix64.S (.eh_frame) -+ [HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type. -+ -+2010-03-14 Matthias Klose -+ -+ * src/x86/ffi64.c: Fix typo in comment. -+ * src/x86/ffi.c: Use /* ... */ comment style. -+ -+2010-02-24 Rainer Orth -+ -+ * doc/libffi.texi (The Closure API): Fix typo. -+ * doc/libffi.info: Remove. -+ -+2010-02-15 Matthias Klose -+ -+ * src/arm/sysv.S (__ARM_ARCH__): Define for processor -+ __ARM_ARCH_7EM__. -+ -+2010-01-15 Anthony Green -+ -+ * README: Add notes on building with Microsoft Visual C++. -+ -+2010-01-15 Daniel Witte -+ -+ * msvcc.sh: New file. -+ -+ * src/x86/win32.S: Port assembly routines to MSVC and #ifdef. -+ * src/x86/ffi.c: Tweak function declaration and remove excess -+ parens. -+ * include/ffi.h.in: Add __declspec(align(8)) to typedef struct -+ ffi_closure. -+ -+ * src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new -+ function ffi_call_win32 on X86_WIN32. -+ * src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32. -+ (ffi_call_STDCALL): Remove. -+ -+ * src/prep_cif.c (ffi_prep_cif): Move stack space allocation code -+ to ffi_prep_cif_machdep for x86. -+ * src/x86/ffi.c (ffi_prep_cif_machdep): To here. -+ -+2010-01-15 Oliver Kiddle -+ -+ * src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for -+ Sun Studio compiler compatibility. -+ -+2010-01-12 Conrad Irwin -+ -+ * doc/libffi.texi: Add closure example. -+ -+2010-01-07 Rainer Orth -+ -+ PR libffi/40701 -+ * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRIdLL, -+ PRIuLL, PRId64, PRIu64, PRIuPTR): Define. -+ * testsuite/libffi.call/cls_align_sint64.c: Add -Wno-format on -+ alpha*-dec-osf*. -+ * testsuite/libffi.call/cls_align_uint64.c: Likewise. -+ * testsuite/libffi.call/cls_ulonglong.c: Likewise. -+ * testsuite/libffi.call/return_ll1.c: Likewise. -+ * testsuite/libffi.call/stret_medium2.c: Likewise. -+ * testsuite/libffi.special/ffitestcxx.h (allocate_mmap): Cast -+ MAP_FAILED to char *. -+ -+2010-01-06 Rainer Orth -+ -+ * src/mips/n32.S: Use .abicalls and .eh_frame with __GNUC__. -+ -+2009-12-31 Anthony Green -+ -+ * README: Update for libffi 3.0.9. -+ -+2009-12-27 Matthias Klose -+ -+ * configure.ac (HAVE_LONG_DOUBLE): Define for mips when -+ appropriate. -+ * configure: Rebuilt. -+ -+2009-12-26 Anthony Green -+ -+ * testsuite/libffi.call/cls_longdouble_va.c: Mark as xfail for -+ avr32*-*-*. -+ * testsuite/libffi.call/cls_double_va.c: Ditto. -+ -+2009-12-26 Andreas Tobler -+ -+ * testsuite/libffi.call/ffitest.h: Conditionally include stdint.h -+ and inttypes.h. -+ * testsuite/libffi.special/unwindtest.cc: Ditto. -+ -+2009-12-26 Andreas Tobler -+ -+ * configure.ac: Add amd64-*-openbsd*. -+ * configure: Rebuilt. -+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): Link -+ openbsd programs with -lpthread. -+ -+2009-12-26 Anthony Green -+ -+ * testsuite/libffi.call/cls_double_va.c, -+ testsuite/libffi.call/cls_longdouble.c, -+ testsuite/libffi.call/cls_longdouble_va.c, -+ testsuite/libffi.call/cls_pointer.c, -+ testsuite/libffi.call/cls_pointer_stack.c: Remove xfail for -+ mips*-*-* and arm*-*-*. -+ * testsuite/libffi.call/cls_align_longdouble_split.c, -+ testsuite/libffi.call/cls_align_longdouble_split2.c, -+ testsuite/libffi.call/stret_medium2.c, -+ testsuite/libffi.call/stret_medium.c, -+ testsuite/libffi.call/stret_large.c, -+ testsuite/libffi.call/stret_large2.c: Remove xfail for arm*-*-*. -+ -+2009-12-31 Kay Tietz -+ -+ * testsuite/libffi.call/ffitest.h, -+ testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix -+ definitions. -+ -+2009-12-31 Carlo Bramini -+ -+ * configure.ac (AM_LTLDFLAGS): Define for windows hosts. -+ * Makefile.am (libffi_la_LDFLAGS): Add AM_LTLDFLAGS. -+ * configure: Rebuilt. -+ * Makefile.in: Rebuilt. -+ -+2009-12-31 Anthony Green -+ Blake Chaffin. -+ -+ * testsuite/libffi.call/huge_struct.c: New test case from Blake -+ Chaffin @ Apple. -+ -+2009-12-28 David Edelsohn -+ -+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to -+ local variables. -+ (aix_adjust_aggregate_sizes): New function. -+ (ffi_prep_cif_machdep): Call it. -+ -+2009-12-26 Andreas Tobler -+ -+ * configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets. -+ * configure: Regenerate. -+ * fficonfig.h.in: Likewise. -+ * src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for -+ Solaris/x86. -+ -+2009-12-26 Andreas Schwab -+ -+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count -+ when a float arguments is passed in memory. -+ (ffi_closure_helper_SYSV): Mark general registers as used up when -+ a 64bit or soft-float long double argument is passed in memory. -+ -+2009-12-25 Matthias Klose -+ -+ * man/ffi_call.3: Fix #include in examples. -+ * doc/libffi.texi: Add dircategory. -+ -+2009-12-25 Frank Everdij -+ -+ * include/ffi.h.in: Placed '__GNUC__' ifdef around -+ '__attribute__((aligned(8)))' in ffi_closure, fixes compile for -+ IRIX MIPSPro c99. -+ * include/ffi_common.h: Added '__sgi' define to non -+ '__attribute__((__mode__()))' integer typedefs. -+ * src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32, -+ ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check. -+ (ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added -+ FFI_LONGDOUBLE support and alignment(N32 only). -+ * src/mips/ffitarget.h: Corrected '#include ' for IRIX and -+ fixed non '__attribute__((__mode__()))' integer typedefs. -+ * src/mips/n32.S: Put '#ifdef linux' around '.abicalls' and '.eh_frame' -+ since they are Linux/GNU Assembler specific. -+ -+2009-12-25 Bradley Smith -+ -+ * configure.ac, Makefile.am, src/avr32/ffi.c, -+ src/avr32/ffitarget.h, -+ src/avr32/sysv.S: Add AVR32 port. -+ * configure, Makefile.in: Rebuilt. -+ -+2009-12-21 Andreas Tobler -+ -+ * configure.ac: Make i?86 build on FreeBSD and OpenBSD. -+ * configure: Regenerate. -+ -+2009-12-15 John David Anglin -+ -+ * testsuite/libffi.call/ffitest.h: Define PRIuPTR on PA HP-UX. -+ -+2009-12-13 John David Anglin -+ -+ * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE -+ type on HP-UX. -+ -+2012-02-13 Kai Tietz -+ -+ PR libffi/52221 -+ * src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall -+ support for X86_WIN32. -+ (FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement. -+ -+2009-12-11 Eric Botcazou -+ -+ * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long -+ double' arguments. -+ -+2009-12-11 Eric Botcazou -+ -+ * testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10. -+ -+2009-12-10 Rainer Orth -+ -+ PR libffi/40700 -+ * src/closures.c [X86_64 && __sun__ && __svr4__] -+ (FFI_MMAP_EXEC_WRIT): Define. -+ -+2009-12-08 David Daney -+ -+ * testsuite/libffi.call/stret_medium.c: Remove xfail for mips*-*-* -+ * testsuite/libffi.call/cls_align_longdouble_split2.c: Same. -+ * testsuite/libffi.call/stret_large.c: Same. -+ * testsuite/libffi.call/cls_align_longdouble_split.c: Same. -+ * testsuite/libffi.call/stret_large2.c: Same. -+ * testsuite/libffi.call/stret_medium2.c: Same. -+ -+2009-12-07 David Edelsohn -+ -+ * src/powerpc/aix_closure.S (libffi_closure_ASM): Fix tablejump -+ typo. -+ -+2009-12-05 David Edelsohn -+ -+ * src/powerpc/aix.S: Update AIX32 code to be consistent with AIX64 -+ code. -+ * src/powerpc/aix_closure.S: Same. -+ -+2009-12-05 Ralf Wildenhues -+ -+ * Makefile.in: Regenerate. -+ * configure: Regenerate. -+ * include/Makefile.in: Regenerate. -+ * man/Makefile.in: Regenerate. -+ * testsuite/Makefile.in: Regenerate. -+ -+2009-12-04 David Edelsohn -+ -+ * src/powerpc/aix_closure.S: Reorganize 64-bit code to match -+ linux64_closure.S. -+ -+2009-12-04 Uros Bizjak -+ -+ PR libffi/41908 -+ * src/x86/ffi64.c (classify_argument): Update from -+ gcc/config/i386/i386.c. -+ (ffi_closure_unix64_inner): Do not use the address of two consecutive -+ SSE registers directly. -+ * testsuite/libffi.call/cls_dbls_struct.c (main): Remove xfail -+ for x86_64 linux targets. -+ -+2009-12-04 David Edelsohn -+ -+ * src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment -+ pfr for long double split between fpr13 and stack. -+ -+2009-12-03 David Edelsohn -+ -+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and -+ fparg_count twice for long double. -+ -+2009-12-03 David Edelsohn -+ -+ PR libffi/42243 -+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Remove extra parentheses. -+ -+2009-12-03 Uros Bizjak -+ -+ * testsuite/libffi.call/cls_longdouble_va.c (main): Fix format string. -+ Remove xfails for x86 linux targets. -+ -+2009-12-02 David Edelsohn -+ -+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Fix typo in INT64 -+ case. -+ -+2009-12-01 David Edelsohn -+ -+ * src/powerpc/aix.S (ffi_call_AIX): Convert to more standard -+ register usage. Call ffi_prep_args directly. Add long double -+ return value support. -+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Double arg increment -+ applies to FFI_TYPE_DOUBLE. Correct fpr_base increment typo. -+ Separate FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases. -+ (ffi_prep_cif_machdep): Only 16 byte stack alignment in 64 bit -+ mode. -+ (ffi_closure_helper_DARWIN): Remove nf and ng counters. Move temp -+ into case. -+ * src/powerpc/aix_closure.S: Maintain 16 byte stack alignment. -+ Allocate result area between params and FPRs. -+ -+2009-11-30 David Edelsohn -+ -+ PR target/35484 -+ * src/powerpc/ffitarget.h (POWERPC64): Define for PPC64 Linux and -+ AIX64. -+ * src/powerpc/aix.S: Implement AIX64 version. -+ * src/powerpc/aix_closure.S: Implement AIX64 version. -+ (ffi_closure_ASM): Use extsb, lha and displament addresses. -+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Implement AIX64 -+ support. -+ (ffi_prep_cif_machdep): Same. -+ (ffi_call): Same. -+ (ffi_closure_helper_DARWIN): Same. -+ -+2009-11-02 Andreas Tobler -+ -+ PR libffi/41908 -+ * testsuite/libffi.call/testclosure.c: New test. -+ -+2009-09-28 Kai Tietz -+ -+ * src/x86/win64.S (_ffi_call_win64 stack): Remove for gnu -+ assembly version use of ___chkstk. -+ -+2009-09-23 Matthias Klose -+ -+ PR libffi/40242, PR libffi/41443 -+ * src/arm/sysv.S (__ARM_ARCH__): Define for processors -+ __ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__, -+ __ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__. -+ Change the conditionals to __SOFTFP__ || __ARM_EABI__ -+ for -mfloat-abi=softfp to work. -+ -+2009-09-17 Loren J. Rittle -+ -+ PR testsuite/32843 (strikes again) -+ * src/x86/ffi.c (ffi_prep_cif_machdep): Add X86_FREEBSD to -+ enable proper extension on char and short. -+ -+2009-09-15 David Daney -+ -+ * src/java_raw_api.c (ffi_java_raw_to_rvalue): Remove special -+ handling for FFI_TYPE_POINTER. -+ * src/mips/ffitarget.h (FFI_TYPE_STRUCT_D_SOFT, -+ FFI_TYPE_STRUCT_F_SOFT, FFI_TYPE_STRUCT_DD_SOFT, -+ FFI_TYPE_STRUCT_FF_SOFT, FFI_TYPE_STRUCT_FD_SOFT, -+ FFI_TYPE_STRUCT_DF_SOFT, FFI_TYPE_STRUCT_SOFT): New defines. -+ (FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT): New ffi_abi enumerations. -+ (enum ffi_abi): Set FFI_DEFAULT_ABI for soft-float. -+ * src/mips/n32.S (ffi_call_N32): Add handling for soft-float -+ structure and pointer returns. -+ (ffi_closure_N32): Add handling for pointer returns. -+ * src/mips/ffi.c (ffi_prep_args, calc_n32_struct_flags, -+ calc_n32_return_struct_flags): Handle soft-float. -+ (ffi_prep_cif_machdep): Handle soft-float, fix pointer handling. -+ (ffi_call_N32): Declare proper argument types. -+ (ffi_call, copy_struct_N32, ffi_closure_mips_inner_N32): Handle -+ soft-float. -+ -+2009-08-24 Ralf Wildenhues -+ -+ * configure.ac (AC_PREREQ): Bump to 2.64. -+ -+2009-08-22 Ralf Wildenhues -+ -+ * Makefile.am (install-html, install-pdf): Remove. -+ * Makefile.in: Regenerate. -+ -+ * Makefile.in: Regenerate. -+ * aclocal.m4: Regenerate. -+ * configure: Regenerate. -+ * fficonfig.h.in: Regenerate. -+ * include/Makefile.in: Regenerate. -+ * man/Makefile.in: Regenerate. -+ * testsuite/Makefile.in: Regenerate. -+ -+2011-08-22 Jasper Lievisse Adriaanse -+ -+ * configure.ac: Add OpenBSD/hppa and OpenBSD/powerpc support. -+ * configure: Rebuilt. -+ -+2009-07-30 Ralf Wildenhues -+ -+ * configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force. -+ -+2009-07-24 Dave Korn -+ -+ PR libffi/40807 -+ * src/x86/ffi.c (ffi_prep_cif_machdep): Also use sign/zero-extending -+ return types for X86_WIN32. -+ * src/x86/win32.S (_ffi_call_SYSV): Handle omitted return types. -+ (_ffi_call_STDCALL, _ffi_closure_SYSV, _ffi_closure_raw_SYSV, -+ _ffi_closure_STDCALL): Likewise. -+ -+ * src/closures.c (is_selinux_enabled): Define to const 0 for Cygwin. -+ (dlmmap, dlmunmap): Also use these functions on Cygwin. -+ -+2009-07-11 Richard Sandiford -+ -+ PR testsuite/40699 -+ PR testsuite/40707 -+ PR testsuite/40709 -+ * testsuite/lib/libffi-dg.exp: Revert 2009-07-02, 2009-07-01 and -+ 2009-06-30 commits. -+ -+2009-07-01 Richard Sandiford -+ -+ * testsuite/lib/libffi-dg.exp (libffi-init): Set ld_library_path -+ to "" before adding paths. (This reinstates an assignment that -+ was removed by my 2009-06-30 commit, but changes the initial -+ value from "." to "".) -+ -+2009-07-01 H.J. Lu -+ -+ PR testsuite/40601 -+ * testsuite/lib/libffi-dg.exp (libffi-init): Properly set -+ gccdir. Adjust ld_library_path for gcc only if gccdir isn't -+ empty. -+ -+2009-06-30 Richard Sandiford -+ -+ * testsuite/lib/libffi-dg.exp (libffi-init): Don't add "." -+ to ld_library_path. Use add_path. Add just find_libgcc_s -+ to ld_library_path, not every libgcc multilib directory. -+ -+2009-06-16 Wim Lewis -+ -+ * src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are -+ supposed to be callee-saved. -+ * src/powerpc/sysv.S (small_struct_return_value): Fix overrun of -+ return buffer for odd-size structs. -+ -+2009-06-16 Andreas Tobler -+ -+ PR libffi/40444 -+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): Add -+ allow_stack_execute for Darwin. -+ -+2009-06-16 Andrew Haley -+ -+ * configure.ac (TARGETDIR): Add missing blank lines. -+ * configure: Regenerate. -+ -+2009-06-16 Andrew Haley -+ -+ * testsuite/libffi.call/cls_align_sint64.c, -+ testsuite/libffi.call/cls_align_uint64.c, -+ testsuite/libffi.call/cls_longdouble_va.c, -+ testsuite/libffi.call/cls_ulonglong.c, -+ testsuite/libffi.call/return_ll1.c, -+ testsuite/libffi.call/stret_medium2.c: Fix printf format -+ specifiers. -+ * testsuite/libffi.call/ffitest.h, -+ testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define. -+ -+2009-06-15 Andrew Haley -+ -+ * testsuite/libffi.call/err_bad_typedef.c: xfail everywhere. -+ * testsuite/libffi.call/err_bad_abi.c: Likewise. -+ -+2009-06-12 Andrew Haley -+ -+ * Makefile.am: Remove info_TEXINFOS. -+ -+2009-06-12 Andrew Haley -+ -+ * ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c, -+ testsuite/libffi.call/cls_align_uint64.c, -+ testsuite/libffi.call/cls_ulonglong.c, -+ testsuite/libffi.call/return_ll1.c, -+ testsuite/libffi.call/stret_medium2.c: Fix printf format -+ specifiers. -+ testsuite/libffi.special/unwindtest.cc: include stdint.h. -+ -+2009-06-11 Timothy Wall -+ -+ * Makefile.am, -+ configure.ac, -+ include/ffi.h.in, -+ include/ffi_common.h, -+ src/closures.c, -+ src/dlmalloc.c, -+ src/x86/ffi.c, -+ src/x86/ffitarget.h, -+ src/x86/win64.S (new), -+ README: Added win64 support (mingw or MSVC) -+ * Makefile.in, -+ include/Makefile.in, -+ man/Makefile.in, -+ testsuite/Makefile.in, -+ configure, -+ aclocal.m4: Regenerated -+ * ltcf-c.sh: properly escape cygwin/w32 path -+ * man/ffi_call.3: Clarify size requirements for return value. -+ * src/x86/ffi64.c: Fix filename in comment. -+ * src/x86/win32.S: Remove unused extern. -+ -+ * testsuite/libffi.call/closure_fn0.c, -+ testsuite/libffi.call/closure_fn1.c, -+ testsuite/libffi.call/closure_fn2.c, -+ testsuite/libffi.call/closure_fn3.c, -+ testsuite/libffi.call/closure_fn4.c, -+ testsuite/libffi.call/closure_fn5.c, -+ testsuite/libffi.call/closure_fn6.c, -+ testsuite/libffi.call/closure_stdcall.c, -+ testsuite/libffi.call/cls_12byte.c, -+ testsuite/libffi.call/cls_16byte.c, -+ testsuite/libffi.call/cls_18byte.c, -+ testsuite/libffi.call/cls_19byte.c, -+ testsuite/libffi.call/cls_1_1byte.c, -+ testsuite/libffi.call/cls_20byte.c, -+ testsuite/libffi.call/cls_20byte1.c, -+ testsuite/libffi.call/cls_24byte.c, -+ testsuite/libffi.call/cls_2byte.c, -+ testsuite/libffi.call/cls_3_1byte.c, -+ testsuite/libffi.call/cls_3byte1.c, -+ testsuite/libffi.call/cls_3byte2.c, -+ testsuite/libffi.call/cls_4_1byte.c, -+ testsuite/libffi.call/cls_4byte.c, -+ testsuite/libffi.call/cls_5_1_byte.c, -+ testsuite/libffi.call/cls_5byte.c, -+ testsuite/libffi.call/cls_64byte.c, -+ testsuite/libffi.call/cls_6_1_byte.c, -+ testsuite/libffi.call/cls_6byte.c, -+ testsuite/libffi.call/cls_7_1_byte.c, -+ testsuite/libffi.call/cls_7byte.c, -+ testsuite/libffi.call/cls_8byte.c, -+ testsuite/libffi.call/cls_9byte1.c, -+ testsuite/libffi.call/cls_9byte2.c, -+ testsuite/libffi.call/cls_align_double.c, -+ testsuite/libffi.call/cls_align_float.c, -+ testsuite/libffi.call/cls_align_longdouble.c, -+ testsuite/libffi.call/cls_align_longdouble_split.c, -+ testsuite/libffi.call/cls_align_longdouble_split2.c, -+ testsuite/libffi.call/cls_align_pointer.c, -+ testsuite/libffi.call/cls_align_sint16.c, -+ testsuite/libffi.call/cls_align_sint32.c, -+ testsuite/libffi.call/cls_align_sint64.c, -+ testsuite/libffi.call/cls_align_uint16.c, -+ testsuite/libffi.call/cls_align_uint32.c, -+ testsuite/libffi.call/cls_align_uint64.c, -+ testsuite/libffi.call/cls_dbls_struct.c, -+ testsuite/libffi.call/cls_double.c, -+ testsuite/libffi.call/cls_double_va.c, -+ testsuite/libffi.call/cls_float.c, -+ testsuite/libffi.call/cls_longdouble.c, -+ testsuite/libffi.call/cls_longdouble_va.c, -+ testsuite/libffi.call/cls_multi_schar.c, -+ testsuite/libffi.call/cls_multi_sshort.c, -+ testsuite/libffi.call/cls_multi_sshortchar.c, -+ testsuite/libffi.call/cls_multi_uchar.c, -+ testsuite/libffi.call/cls_multi_ushort.c, -+ testsuite/libffi.call/cls_multi_ushortchar.c, -+ testsuite/libffi.call/cls_pointer.c, -+ testsuite/libffi.call/cls_pointer_stack.c, -+ testsuite/libffi.call/cls_schar.c, -+ testsuite/libffi.call/cls_sint.c, -+ testsuite/libffi.call/cls_sshort.c, -+ testsuite/libffi.call/cls_uchar.c, -+ testsuite/libffi.call/cls_uint.c, -+ testsuite/libffi.call/cls_ulonglong.c, -+ testsuite/libffi.call/cls_ushort.c, -+ testsuite/libffi.call/err_bad_abi.c, -+ testsuite/libffi.call/err_bad_typedef.c, -+ testsuite/libffi.call/float2.c, -+ testsuite/libffi.call/huge_struct.c, -+ testsuite/libffi.call/nested_struct.c, -+ testsuite/libffi.call/nested_struct1.c, -+ testsuite/libffi.call/nested_struct10.c, -+ testsuite/libffi.call/nested_struct2.c, -+ testsuite/libffi.call/nested_struct3.c, -+ testsuite/libffi.call/nested_struct4.c, -+ testsuite/libffi.call/nested_struct5.c, -+ testsuite/libffi.call/nested_struct6.c, -+ testsuite/libffi.call/nested_struct7.c, -+ testsuite/libffi.call/nested_struct8.c, -+ testsuite/libffi.call/nested_struct9.c, -+ testsuite/libffi.call/problem1.c, -+ testsuite/libffi.call/return_ldl.c, -+ testsuite/libffi.call/return_ll1.c, -+ testsuite/libffi.call/stret_large.c, -+ testsuite/libffi.call/stret_large2.c, -+ testsuite/libffi.call/stret_medium.c, -+ testsuite/libffi.call/stret_medium2.c, -+ testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead -+ of checking for MMAP. Use intptr_t instead of long casts. -+ -+2009-06-11 Kaz Kojima -+ -+ * testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*. -+ * testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*. -+ * testsuite/libffi.call/err_bad_typedef.c: Likewise. -+ -+2009-06-09 Andrew Haley -+ -+ * src/x86/freebsd.S: Add missing file. -+ -+2009-06-08 Andrew Haley -+ -+ Import from libffi 3.0.8: -+ -+ * doc/libffi.texi: New file. -+ * doc/libffi.info: Likewise. -+ * doc/stamp-vti: Likewise. -+ * man/Makefile.am: New file. -+ * man/ffi_call.3: New file. -+ -+ * Makefile.am (EXTRA_DIST): Add src/x86/darwin64.S, -+ src/dlmalloc.c. -+ (nodist_libffi_la_SOURCES): Add X86_FREEBSD. -+ -+ * configure.ac: Bump version to 3.0.8. -+ parisc*-*-linux*: Add. -+ i386-*-freebsd* | i386-*-openbsd*: Add. -+ powerpc-*-beos*: Add. -+ AM_CONDITIONAL X86_FREEBSD: Add. -+ AC_CONFIG_FILES: Add man/Makefile. -+ -+ * include/ffi.h.in (FFI_FN): Change void (*)() to void (*)(void). -+ -+2009-06-08 Andrew Haley -+ -+ * README: Import from libffi 3.0.8. -+ -+2009-06-08 Andrew Haley -+ -+ * testsuite/libffi.call/err_bad_abi.c: Add xfails. -+ * testsuite/libffi.call/cls_longdouble_va.c: Add xfails. -+ * testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*. -+ * testsuite/libffi.call/err_bad_typedef.c: Add xfails. -+ -+ * testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args. -+ * testsuite/libffi.call/stret_medium.c: Likewise. -+ * testsuite/libffi.call/stret_large2.c: Likewise. -+ * testsuite/libffi.call/stret_large.c: Likewise. -+ -+2008-12-26 Timothy Wall -+ -+ * testsuite/libffi.call/cls_longdouble.c, -+ testsuite/libffi.call/cls_longdouble_va.c, -+ testsuite/libffi.call/cls_align_longdouble.c, -+ testsuite/libffi.call/cls_align_longdouble_split.c, -+ testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected -+ failures on x86_64 cygwin/mingw. -+ -+2008-12-22 Timothy Wall -+ -+ * testsuite/libffi.call/closure_fn0.c, -+ testsuite/libffi.call/closure_fn1.c, -+ testsuite/libffi.call/closure_fn2.c, -+ testsuite/libffi.call/closure_fn3.c, -+ testsuite/libffi.call/closure_fn4.c, -+ testsuite/libffi.call/closure_fn5.c, -+ testsuite/libffi.call/closure_fn6.c, -+ testsuite/libffi.call/closure_loc_fn0.c, -+ testsuite/libffi.call/closure_stdcall.c, -+ testsuite/libffi.call/cls_align_pointer.c, -+ testsuite/libffi.call/cls_pointer.c, -+ testsuite/libffi.call/cls_pointer_stack.c: use portable cast from -+ pointer to integer (intptr_t). -+ * testsuite/libffi.call/cls_longdouble.c: disable for win64. -+ -+2008-07-24 Anthony Green -+ -+ * testsuite/libffi.call/cls_dbls_struct.c, -+ testsuite/libffi.call/cls_double_va.c, -+ testsuite/libffi.call/cls_longdouble.c, -+ testsuite/libffi.call/cls_longdouble_va.c, -+ testsuite/libffi.call/cls_pointer.c, -+ testsuite/libffi.call/cls_pointer_stack.c, -+ testsuite/libffi.call/err_bad_abi.c: Clean up failures from -+ compiler warnings. -+ -+2008-03-04 Anthony Green -+ Blake Chaffin -+ hos@tamanegi.org -+ -+ * testsuite/libffi.call/cls_align_longdouble_split2.c -+ testsuite/libffi.call/cls_align_longdouble_split.c -+ testsuite/libffi.call/cls_dbls_struct.c -+ testsuite/libffi.call/cls_double_va.c -+ testsuite/libffi.call/cls_longdouble.c -+ testsuite/libffi.call/cls_longdouble_va.c -+ testsuite/libffi.call/cls_pointer.c -+ testsuite/libffi.call/cls_pointer_stack.c -+ testsuite/libffi.call/err_bad_abi.c -+ testsuite/libffi.call/err_bad_typedef.c -+ testsuite/libffi.call/stret_large2.c -+ testsuite/libffi.call/stret_large.c -+ testsuite/libffi.call/stret_medium2.c -+ testsuite/libffi.call/stret_medium.c: New tests from Apple. -+ -+2009-06-05 Andrew Haley -+ -+ * src/x86/ffitarget.h, src/x86/ffi.c: Merge stdcall changes from -+ libffi. -+ -+2009-06-04 Andrew Haley -+ -+ * src/x86/ffitarget.h, src/x86/win32.S, src/x86/ffi.c: Back out -+ stdcall changes. -+ -+2008-02-26 Anthony Green -+ Thomas Heller -+ -+ * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C -+ comment. -+ -+2008-02-03 Timothy Wall -+ -+ * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return -+ offset based on code pointer, not data pointer. -+ -+2008-01-31 Timothy Wall -+ -+ * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall -+ closures. -+ * src/x86/ffitarget.h: Increase size of trampoline for stdcall -+ closures. -+ * src/x86/win32.S: Add assembly for stdcall closure. -+ * src/x86/ffi.c: Initialize stdcall closure trampoline. -+ -+2009-06-04 Andrew Haley -+ -+ * include/ffi.h.in: Change void (*)() to void (*)(void). -+ * src/x86/ffi.c: Likewise. -+ -+2009-06-04 Andrew Haley -+ -+ * src/powerpc/ppc_closure.S: Insert licence header. -+ * src/powerpc/linux64_closure.S: Likewise. -+ * src/m68k/sysv.S: Likewise. -+ -+ * src/sh64/ffi.c: Change void (*)() to void (*)(void). -+ * src/powerpc/ffi.c: Likewise. -+ * src/powerpc/ffi_darwin.c: Likewise. -+ * src/m32r/ffi.c: Likewise. -+ * src/sh64/ffi.c: Likewise. -+ * src/x86/ffi64.c: Likewise. -+ * src/alpha/ffi.c: Likewise. -+ * src/alpha/osf.S: Likewise. -+ * src/frv/ffi.c: Likewise. -+ * src/s390/ffi.c: Likewise. -+ * src/pa/ffi.c: Likewise. -+ * src/pa/hpux32.S: Likewise. -+ * src/ia64/unix.S: Likewise. -+ * src/ia64/ffi.c: Likewise. -+ * src/sparc/ffi.c: Likewise. -+ * src/mips/ffi.c: Likewise. -+ * src/sh/ffi.c: Likewise. -+ -+2008-02-15 David Daney -+ -+ * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE): -+ Define (conditionally), and use it to include cachectl.h. -+ (ffi_prep_closure_loc): Fix cache flushing. -+ * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define. -+ -+2009-06-04 Andrew Haley -+ -+ include/ffi.h.in, -+ src/arm/ffitarget.h, -+ src/arm/ffi.c, -+ src/arm/sysv.S, -+ src/powerpc/ffitarget.h, -+ src/closures.c, -+ src/sh64/ffitarget.h, -+ src/sh64/ffi.c, -+ src/sh64/sysv.S, -+ src/types.c, -+ src/x86/ffi64.c, -+ src/x86/ffitarget.h, -+ src/x86/win32.S, -+ src/x86/darwin.S, -+ src/x86/ffi.c, -+ src/x86/sysv.S, -+ src/x86/unix64.S, -+ src/alpha/ffitarget.h, -+ src/alpha/ffi.c, -+ src/alpha/osf.S, -+ src/m68k/ffitarget.h, -+ src/frv/ffitarget.h, -+ src/frv/ffi.c, -+ src/s390/ffitarget.h, -+ src/s390/sysv.S, -+ src/cris/ffitarget.h, -+ src/pa/linux.S, -+ src/pa/ffitarget.h, -+ src/pa/ffi.c, -+ src/raw_api.c, -+ src/ia64/ffitarget.h, -+ src/ia64/unix.S, -+ src/ia64/ffi.c, -+ src/ia64/ia64_flags.h, -+ src/java_raw_api.c, -+ src/debug.c, -+ src/sparc/v9.S, -+ src/sparc/ffitarget.h, -+ src/sparc/ffi.c, -+ src/sparc/v8.S, -+ src/mips/ffitarget.h, -+ src/mips/n32.S, -+ src/mips/o32.S, -+ src/mips/ffi.c, -+ src/prep_cif.c, -+ src/sh/ffitarget.h, -+ src/sh/ffi.c, -+ src/sh/sysv.S: Update license text. -+ -+2009-05-22 Dave Korn -+ -+ * src/x86/win32.S (_ffi_closure_STDCALL): New function. -+ (.eh_frame): Add FDE for it. -+ -+2009-05-22 Dave Korn -+ -+ * configure.ac: Also check if assembler supports pc-relative -+ relocs on X86_WIN32 targets. -+ * configure: Regenerate. -+ * src/x86/win32.S (ffi_prep_args): Declare extern, not global. -+ (_ffi_call_SYSV): Add missing function type symbol .def and -+ add EH markup labels. -+ (_ffi_call_STDCALL): Likewise. -+ (_ffi_closure_SYSV): Likewise. -+ (_ffi_closure_raw_SYSV): Likewise. -+ (.eh_frame): Add hand-crafted EH data. -+ -+2009-04-09 Jakub Jelinek -+ -+ * testsuite/lib/libffi-dg.exp: Change copyright header to refer to -+ version 3 of the GNU General Public License and to point readers -+ at the COPYING3 file and the FSF's license web page. -+ * testsuite/libffi.call/call.exp: Likewise. -+ * testsuite/libffi.special/special.exp: Likewise. -+ -+2009-03-01 Ralf Wildenhues -+ -+ * configure: Regenerate. -+ -+2008-12-18 Rainer Orth -+ -+ PR libffi/26048 -+ * configure.ac (HAVE_AS_X86_PCREL): New test. -+ * configure: Regenerate. -+ * fficonfig.h.in: Regenerate. -+ * src/x86/sysv.S [!FFI_NO_RAW_API]: Precalculate -+ RAW_CLOSURE_CIF_OFFSET, RAW_CLOSURE_FUN_OFFSET, -+ RAW_CLOSURE_USER_DATA_OFFSET for the Solaris 10/x86 assembler. -+ (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL. -+ * src/x86/unix64.S (.Lstore_table): Move to .text section. -+ (.Lload_table): Likewise. -+ (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL. -+ -+2008-12-18 Ralf Wildenhues -+ -+ * configure: Regenerate. -+ -+2008-11-21 Eric Botcazou -+ -+ * src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for -+ signed/unsigned int8/16 return values. -+ * src/sparc/v8.S (ffi_call_v8): Likewise. -+ (ffi_closure_v8): Likewise. -+ -+2008-09-26 Peter O'Gorman -+ Steve Ellcey -+ -+ * configure: Regenerate for new libtool. -+ * Makefile.in: Ditto. -+ * include/Makefile.in: Ditto. -+ * aclocal.m4: Ditto. -+ -+2008-08-25 Andreas Tobler -+ -+ * src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and -+ FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum. -+ Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT. -+ Adjust copyright notice. -+ * src/powerpc/ffi.c: Add two new flags to indicate if we have one -+ register or two register to use for FFI_SYSV structs. -+ (ffi_prep_cif_machdep): Pass the right register flag introduced above. -+ (ffi_closure_helper_SYSV): Fix the return type for -+ FFI_SYSV_TYPE_SMALL_STRUCT. Comment. -+ Adjust copyright notice. -+ -+2008-07-16 Kaz Kojima -+ -+ * src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned -+ int. -+ -+2008-06-17 Ralf Wildenhues -+ -+ * configure: Regenerate. -+ * include/Makefile.in: Regenerate. -+ * testsuite/Makefile.in: Regenerate. -+ -+2008-06-07 Joseph Myers -+ -+ * configure.ac (parisc*-*-linux*, powerpc-*-sysv*, -+ powerpc-*-beos*): Remove. -+ * configure: Regenerate. -+ -+2008-05-09 Julian Brown -+ -+ * Makefile.am (LTLDFLAGS): New. -+ (libffi_la_LDFLAGS): Use above. -+ * Makefile.in: Regenerate. -+ -+2008-04-18 Paolo Bonzini -+ -+ PR bootstrap/35457 -+ * aclocal.m4: Regenerate. -+ * configure: Regenerate. -+ -+2008-03-26 Kaz Kojima -+ -+ * src/sh/sysv.S: Add .note.GNU-stack on Linux. -+ * src/sh64/sysv.S: Likewise. -+ -+2008-03-26 Daniel Jacobowitz -+ -+ * src/arm/sysv.S: Fix ARM comment marker. -+ -+2008-03-26 Jakub Jelinek -+ -+ * src/alpha/osf.S: Add .note.GNU-stack on Linux. -+ * src/s390/sysv.S: Likewise. -+ * src/powerpc/ppc_closure.S: Likewise. -+ * src/powerpc/sysv.S: Likewise. -+ * src/x86/unix64.S: Likewise. -+ * src/x86/sysv.S: Likewise. -+ * src/sparc/v8.S: Likewise. -+ * src/sparc/v9.S: Likewise. -+ * src/m68k/sysv.S: Likewise. -+ * src/arm/sysv.S: Likewise. -+ -+2008-03-16 Ralf Wildenhues -+ -+ * aclocal.m4: Regenerate. -+ * configure: Likewise. -+ * Makefile.in: Likewise. -+ * include/Makefile.in: Likewise. -+ * testsuite/Makefile.in: Likewise. -+ -+2008-02-12 Bjoern Koenig -+ Andreas Tobler -+ -+ * configure.ac: Add amd64-*-freebsd* target. -+ * configure: Regenerate. -+ -+2008-01-30 H.J. Lu -+ -+ PR libffi/34612 -+ * src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when -+ returning struct. -+ -+ * testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer" -+ tests. -+ -+2008-01-24 David Edelsohn -+ -+ * configure: Regenerate. -+ -+2008-01-06 Andreas Tobler -+ -+ * src/x86/ffi.c (ffi_prep_cif_machdep): Fix thinko. -+ -+2008-01-05 Andreas Tobler -+ -+ PR testsuite/32843 -+ * src/x86/ffi.c (ffi_prep_cif_machdep): Add code for -+ signed/unsigned int8/16 for X86_DARWIN. -+ Updated copyright info. -+ Handle one and two byte structs with special cif->flags. -+ * src/x86/ffitarget.h: Add special types for one and two byte structs. -+ Updated copyright info. -+ * src/x86/darwin.S (ffi_call_SYSV): Rewrite to use a jump table like -+ sysv.S -+ Remove code to pop args from the stack after call. -+ Special-case signed/unsigned for int8/16, one and two byte structs. -+ (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8, -+ FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, -+ FFI_TYPE_SINT32. -+ Updated copyright info. -+ -+2007-12-08 David Daney -+ -+ * src/mips/n32.S (ffi_call_N32): Replace dadd with ADDU, dsub with -+ SUBU, add with ADDU and use smaller code sequences. -+ -+2007-12-07 David Daney -+ -+ * src/mips/ffi.c (ffi_prep_cif_machdep): Handle long double return -+ type. -+ -+2007-12-06 David Daney -+ -+ * include/ffi.h.in (FFI_SIZEOF_JAVA_RAW): Define if not already -+ defined. -+ (ffi_java_raw): New typedef. -+ (ffi_java_raw_call, ffi_java_ptrarray_to_raw, -+ ffi_java_raw_to_ptrarray): Change parameter types from ffi_raw to -+ ffi_java_raw. -+ (ffi_java_raw_closure) : Same. -+ (ffi_prep_java_raw_closure, ffi_prep_java_raw_closure_loc): Change -+ parameter types. -+ * src/java_raw_api.c (ffi_java_raw_size): Replace FFI_SIZEOF_ARG with -+ FFI_SIZEOF_JAVA_RAW. -+ (ffi_java_raw_to_ptrarray): Change type of raw to ffi_java_raw. -+ Replace FFI_SIZEOF_ARG with FFI_SIZEOF_JAVA_RAW. Use -+ sizeof(ffi_java_raw) for alignment calculations. -+ (ffi_java_ptrarray_to_raw): Same. -+ (ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER -+ if FFI_SIZEOF_JAVA_RAW == 4. -+ (ffi_java_raw_to_rvalue): Same. -+ (ffi_java_raw_call): Change type of raw to ffi_java_raw. -+ (ffi_java_translate_args): Same. -+ (ffi_prep_java_raw_closure_loc, ffi_prep_java_raw_closure): Change -+ parameter types. -+ * src/mips/ffitarget.h (FFI_SIZEOF_JAVA_RAW): Define for N32 ABI. -+ -+2007-12-06 David Daney -+ -+ * src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on -+ pointer values. -+ -+2007-12-01 Andreas Tobler -+ -+ PR libffi/31937 -+ * src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT. -+ Add local FFI_TYPE_UINT128 to handle soft-float long-double-128. -+ * src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and -+ set the NUM_FPR_ARG_REGISTERS according to. -+ Add support for potential soft-float support under hard-float -+ architecture. -+ (ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of -+ FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according -+ to the FFI_LINUX_SOFT_FLOAT ABI. -+ (ffi_prep_cif_machdep): Likewise. -+ (ffi_closure_helper_SYSV): Likewise. -+ * src/powerpc/ppc_closure.S: Make sure not to store float/double -+ on archs where __NO_FPRS__ is true. -+ Add FFI_TYPE_UINT128 support. -+ * src/powerpc/sysv.S: Add support for soft-float long-double-128. -+ Adjust copyright notice. -+ -+2007-11-25 Andreas Tobler -+ -+ * src/closures.c: Move defintion of MAYBE_UNUSED from here to ... -+ * include/ffi_common.h: ... here. -+ Update copyright. -+ -+2007-11-17 Andreas Tobler -+ -+ * src/powerpc/sysv.S: Load correct cr to compare if we have long double. -+ * src/powerpc/linux64.S: Likewise. -+ * src/powerpc/ffi.c: Add a comment to show which part goes into cr6. -+ * testsuite/libffi.call/return_ldl.c: New test. -+ -+2007-09-04 -+ -+ * src/arm/sysv.S (UNWIND): New. -+ (Whole file): Conditionally compile unwinder directives. -+ * src/arm/sysv.S: Add unwinder directives. -+ -+ * src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes. -+ Only treat r0 as a struct address if we're actually returning a -+ struct by address. -+ Only copy the bytes that are actually within a struct. -+ (ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes -+ is returned in r0, not passed by address. -+ (ffi_call): Allocate a word-sized temporary for the case where -+ a composite is returned in r0. -+ (ffi_prep_incoming_args_SYSV): Align as necessary. -+ -+2007-08-05 Steven Newbury -+ -+ * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of -+ directly using the sys_cacheflush syscall. -+ -+2007-07-27 Andrew Haley -+ -+ * src/arm/sysv.S (ffi_closure_SYSV): Add soft-float. -+ -+2007-09-03 Maciej W. Rozycki -+ -+ * Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS. -+ * configure.ac: Likewise. -+ * Makefile.in: Regenerate. -+ * include/Makefile.in: Likewise. -+ * testsuite/Makefile.in: Likewise. -+ * configure: Likewise. -+ -+2007-08-24 David Daney -+ -+ * testsuite/libffi.call/return_sl.c: New test. -+ -+2007-08-10 David Daney -+ -+ * testsuite/libffi.call/cls_multi_ushort.c, -+ testsuite/libffi.call/cls_align_uint16.c, -+ testsuite/libffi.call/nested_struct1.c, -+ testsuite/libffi.call/nested_struct3.c, -+ testsuite/libffi.call/cls_7_1_byte.c, -+ testsuite/libffi.call/nested_struct5.c, -+ testsuite/libffi.call/cls_double.c, -+ testsuite/libffi.call/nested_struct7.c, -+ testsuite/libffi.call/cls_sint.c, -+ testsuite/libffi.call/nested_struct9.c, -+ testsuite/libffi.call/cls_20byte1.c, -+ testsuite/libffi.call/cls_multi_sshortchar.c, -+ testsuite/libffi.call/cls_align_sint64.c, -+ testsuite/libffi.call/cls_3byte2.c, -+ testsuite/libffi.call/cls_multi_schar.c, -+ testsuite/libffi.call/cls_multi_uchar.c, -+ testsuite/libffi.call/cls_19byte.c, -+ testsuite/libffi.call/cls_9byte1.c, -+ testsuite/libffi.call/cls_align_float.c, -+ testsuite/libffi.call/closure_fn1.c, -+ testsuite/libffi.call/problem1.c, -+ testsuite/libffi.call/closure_fn3.c, -+ testsuite/libffi.call/cls_sshort.c, -+ testsuite/libffi.call/closure_fn5.c, -+ testsuite/libffi.call/cls_align_double.c, -+ testsuite/libffi.call/nested_struct.c, -+ testsuite/libffi.call/cls_2byte.c, -+ testsuite/libffi.call/nested_struct10.c, -+ testsuite/libffi.call/cls_4byte.c, -+ testsuite/libffi.call/cls_6byte.c, -+ testsuite/libffi.call/cls_8byte.c, -+ testsuite/libffi.call/cls_multi_sshort.c, -+ testsuite/libffi.call/cls_align_sint16.c, -+ testsuite/libffi.call/cls_align_uint32.c, -+ testsuite/libffi.call/cls_20byte.c, -+ testsuite/libffi.call/cls_float.c, -+ testsuite/libffi.call/nested_struct2.c, -+ testsuite/libffi.call/cls_5_1_byte.c, -+ testsuite/libffi.call/nested_struct4.c, -+ testsuite/libffi.call/cls_24byte.c, -+ testsuite/libffi.call/nested_struct6.c, -+ testsuite/libffi.call/cls_64byte.c, -+ testsuite/libffi.call/nested_struct8.c, -+ testsuite/libffi.call/cls_uint.c, -+ testsuite/libffi.call/cls_multi_ushortchar.c, -+ testsuite/libffi.call/cls_schar.c, -+ testsuite/libffi.call/cls_uchar.c, -+ testsuite/libffi.call/cls_align_uint64.c, -+ testsuite/libffi.call/cls_ulonglong.c, -+ testsuite/libffi.call/cls_align_longdouble.c, -+ testsuite/libffi.call/cls_1_1byte.c, -+ testsuite/libffi.call/cls_12byte.c, -+ testsuite/libffi.call/cls_3_1byte.c, -+ testsuite/libffi.call/cls_3byte1.c, -+ testsuite/libffi.call/cls_4_1byte.c, -+ testsuite/libffi.call/cls_6_1_byte.c, -+ testsuite/libffi.call/cls_16byte.c, -+ testsuite/libffi.call/cls_18byte.c, -+ testsuite/libffi.call/closure_fn0.c, -+ testsuite/libffi.call/cls_9byte2.c, -+ testsuite/libffi.call/closure_fn2.c, -+ testsuite/libffi.call/closure_fn4.c, -+ testsuite/libffi.call/cls_ushort.c, -+ testsuite/libffi.call/closure_fn6.c, -+ testsuite/libffi.call/cls_5byte.c, -+ testsuite/libffi.call/cls_align_pointer.c, -+ testsuite/libffi.call/cls_7byte.c, -+ testsuite/libffi.call/cls_align_sint32.c, -+ testsuite/libffi.special/unwindtest_ffi_call.cc, -+ testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*. -+ -+2007-08-10 David Daney -+ -+ PR libffi/28313 -+ * configure.ac: Don't treat mips64 as a special case. -+ * Makefile.am (nodist_libffi_la_SOURCES): Add n32.S. -+ * configure: Regenerate -+ * Makefile.in: Ditto. -+ * fficonfig.h.in: Ditto. -+ * src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent. -+ (LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros. -+ (FFI_DEFAULT_ABI): Set for n64 case. -+ (FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases. -+ * src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE. -+ (ffi_closure_N32): New function. -+ (.eh_frame): New section -+ * src/mips/o32.S: Clean up comments. -+ (ffi_closure_O32): Pass ffi_closure parameter in $12. -+ * src/mips/ffi.c: Use FFI_MIPS_N32 instead of -+ _MIPS_SIM == _ABIN32 throughout. -+ (FFI_MIPS_STOP_HERE): New, use in place of -+ ffi_stop_here. -+ (ffi_prep_args): Use unsigned long to hold pointer values. Rewrite -+ to support n32/n64 ABIs. -+ (calc_n32_struct_flags): Rewrite. -+ (calc_n32_return_struct_flags): Remove unused variable. Reverse -+ position of flag bits. -+ (ffi_prep_cif_machdep): Rewrite n32 portion. -+ (ffi_call): Enable for n64. Add special handling for small structure -+ return values. -+ (ffi_prep_closure_loc): Add n32 and n64 support. -+ (ffi_closure_mips_inner_O32): Add cast to silence warning. -+ (copy_struct_N32, ffi_closure_mips_inner_N32): New functions. -+ -+2007-08-08 David Daney -+ -+ * testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition. -+ * testsuite/libffi.call/cls_align_uint16.c (main): Use correct type -+ specifiers. -+ * testsuite/libffi.call/nested_struct1.c (main): Ditto. -+ * testsuite/libffi.call/cls_sint.c (main): Ditto. -+ * testsuite/libffi.call/nested_struct9.c (main): Ditto. -+ * testsuite/libffi.call/cls_20byte1.c (main): Ditto. -+ * testsuite/libffi.call/cls_9byte1.c (main): Ditto. -+ * testsuite/libffi.call/closure_fn1.c (main): Ditto. -+ * testsuite/libffi.call/closure_fn3.c (main): Ditto. -+ * testsuite/libffi.call/return_dbl2.c (main): Ditto. -+ * testsuite/libffi.call/cls_sshort.c (main): Ditto. -+ * testsuite/libffi.call/return_fl3.c (main): Ditto. -+ * testsuite/libffi.call/closure_fn5.c (main): Ditto. -+ * testsuite/libffi.call/nested_struct.c (main): Ditto. -+ * testsuite/libffi.call/nested_struct10.c (main): Ditto. -+ * testsuite/libffi.call/return_ll1.c (main): Ditto. -+ * testsuite/libffi.call/cls_8byte.c (main): Ditto. -+ * testsuite/libffi.call/cls_align_uint32.c (main): Ditto. -+ * testsuite/libffi.call/cls_align_sint16.c (main): Ditto. -+ * testsuite/libffi.call/cls_20byte.c (main): Ditto. -+ * testsuite/libffi.call/nested_struct2.c (main): Ditto. -+ * testsuite/libffi.call/cls_24byte.c (main): Ditto. -+ * testsuite/libffi.call/nested_struct6.c (main): Ditto. -+ * testsuite/libffi.call/cls_uint.c (main): Ditto. -+ * testsuite/libffi.call/cls_12byte.c (main): Ditto. -+ * testsuite/libffi.call/cls_16byte.c (main): Ditto. -+ * testsuite/libffi.call/closure_fn0.c (main): Ditto. -+ * testsuite/libffi.call/cls_9byte2.c (main): Ditto. -+ * testsuite/libffi.call/closure_fn2.c (main): Ditto. -+ * testsuite/libffi.call/return_dbl1.c (main): Ditto. -+ * testsuite/libffi.call/closure_fn4.c (main): Ditto. -+ * testsuite/libffi.call/closure_fn6.c (main): Ditto. -+ * testsuite/libffi.call/cls_align_sint32.c (main): Ditto. -+ -+2007-08-07 Andrew Haley -+ -+ * src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous -+ checkin. -+ -+2007-08-06 Andrew Haley -+ -+ PR testsuite/32843 -+ * src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8, -+ FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, -+ FFI_TYPE_SINT32. -+ -+2007-08-02 David Daney -+ -+ * testsuite/libffi.call/return_ul.c (main): Define return type as -+ ffi_arg. Use proper printf conversion specifier. -+ -+2007-07-30 Andrew Haley -+ -+ PR testsuite/32843 -+ * src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for -+ signed/unsigned int8/16. -+ * src/x86/sysv.S (ffi_call_SYSV): Rewrite to: -+ Use a jump table. -+ Remove code to pop args from the stack after call. -+ Special-case signed/unsigned int8/16. -+ * testsuite/libffi.call/return_sc.c (main): Revert. -+ -+2007-07-26 Richard Guenther -+ -+ PR testsuite/32843 -+ * testsuite/libffi.call/return_sc.c (main): Verify call -+ result as signed char, not ffi_arg. -+ -+2007-07-16 Rainer Orth -+ -+ * configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64. -+ * configure: Regenerate. -+ -+2007-07-11 David Daney -+ -+ * src/mips/ffi.c: Don't include sys/cachectl.h. -+ (ffi_prep_closure_loc): Use __builtin___clear_cache() instead of -+ cacheflush(). -+ -+2007-05-18 Aurelien Jarno -+ -+ * src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted -+ from (ffi_prep_closure): ... this. -+ (FFI_INIT_TRAMPOLINE): Adjust. -+ -+2005-12-31 Phil Blundell -+ -+ * src/arm/ffi.c (ffi_prep_incoming_args_SYSV, -+ ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support. -+ * src/arm/sysv.S(ffi_closure_SYSV): Likewise. -+ * src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. -+ (FFI_CLOSURES): Enable closure support. -+ -+2007-07-03 Andrew Haley -+ -+ * testsuite/libffi.call/cls_multi_ushort.c, -+ testsuite/libffi.call/cls_align_uint16.c, -+ testsuite/libffi.call/nested_struct1.c, -+ testsuite/libffi.call/nested_struct3.c, -+ testsuite/libffi.call/cls_7_1_byte.c, -+ testsuite/libffi.call/cls_double.c, -+ testsuite/libffi.call/nested_struct5.c, -+ testsuite/libffi.call/nested_struct7.c, -+ testsuite/libffi.call/cls_sint.c, -+ testsuite/libffi.call/nested_struct9.c, -+ testsuite/libffi.call/cls_20byte1.c, -+ testsuite/libffi.call/cls_multi_sshortchar.c, -+ testsuite/libffi.call/cls_align_sint64.c, -+ testsuite/libffi.call/cls_3byte2.c, -+ testsuite/libffi.call/cls_multi_schar.c, -+ testsuite/libffi.call/cls_multi_uchar.c, -+ testsuite/libffi.call/cls_19byte.c, -+ testsuite/libffi.call/cls_9byte1.c, -+ testsuite/libffi.call/cls_align_float.c, -+ testsuite/libffi.call/closure_fn1.c, -+ testsuite/libffi.call/problem1.c, -+ testsuite/libffi.call/closure_fn3.c, -+ testsuite/libffi.call/cls_sshort.c, -+ testsuite/libffi.call/closure_fn5.c, -+ testsuite/libffi.call/cls_align_double.c, -+ testsuite/libffi.call/cls_2byte.c, -+ testsuite/libffi.call/nested_struct.c, -+ testsuite/libffi.call/nested_struct10.c, -+ testsuite/libffi.call/cls_4byte.c, -+ testsuite/libffi.call/cls_6byte.c, -+ testsuite/libffi.call/cls_8byte.c, -+ testsuite/libffi.call/cls_multi_sshort.c, -+ testsuite/libffi.call/cls_align_uint32.c, -+ testsuite/libffi.call/cls_align_sint16.c, -+ testsuite/libffi.call/cls_float.c, -+ testsuite/libffi.call/cls_20byte.c, -+ testsuite/libffi.call/cls_5_1_byte.c, -+ testsuite/libffi.call/nested_struct2.c, -+ testsuite/libffi.call/cls_24byte.c, -+ testsuite/libffi.call/nested_struct4.c, -+ testsuite/libffi.call/nested_struct6.c, -+ testsuite/libffi.call/cls_64byte.c, -+ testsuite/libffi.call/nested_struct8.c, -+ testsuite/libffi.call/cls_uint.c, -+ testsuite/libffi.call/cls_multi_ushortchar.c, -+ testsuite/libffi.call/cls_schar.c, -+ testsuite/libffi.call/cls_uchar.c, -+ testsuite/libffi.call/cls_align_uint64.c, -+ testsuite/libffi.call/cls_ulonglong.c, -+ testsuite/libffi.call/cls_align_longdouble.c, -+ testsuite/libffi.call/cls_1_1byte.c, -+ testsuite/libffi.call/cls_12byte.c, -+ testsuite/libffi.call/cls_3_1byte.c, -+ testsuite/libffi.call/cls_3byte1.c, -+ testsuite/libffi.call/cls_4_1byte.c, -+ testsuite/libffi.call/cls_6_1_byte.c, -+ testsuite/libffi.call/cls_16byte.c, -+ testsuite/libffi.call/cls_18byte.c, -+ testsuite/libffi.call/closure_fn0.c, -+ testsuite/libffi.call/cls_9byte2.c, -+ testsuite/libffi.call/closure_fn2.c, -+ testsuite/libffi.call/closure_fn4.c, -+ testsuite/libffi.call/cls_ushort.c, -+ testsuite/libffi.call/closure_fn6.c, -+ testsuite/libffi.call/cls_5byte.c, -+ testsuite/libffi.call/cls_align_pointer.c, -+ testsuite/libffi.call/cls_7byte.c, -+ testsuite/libffi.call/cls_align_sint32.c, -+ testsuite/libffi.special/unwindtest_ffi_call.cc, -+ testsuite/libffi.special/unwindtest.cc: Enable for ARM. -+ -+2007-07-05 H.J. Lu -+ -+ * aclocal.m4: Regenerated. -+ -+2007-06-02 Paolo Bonzini -+ -+ * configure: Regenerate. -+ -+2007-05-23 Steve Ellcey -+ -+ * Makefile.in: Regenerate. -+ * configure: Regenerate. -+ * aclocal.m4: Regenerate. -+ * include/Makefile.in: Regenerate. -+ * testsuite/Makefile.in: Regenerate. -+ -+2007-05-10 Roman Zippel -+ -+ * src/m68k/ffi.c (ffi_prep_incoming_args_SYSV, -+ ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support. -+ * src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise. -+ * src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. -+ (FFI_CLOSURES): Enable closure support. -+ -+2007-05-10 Roman Zippel -+ -+ * configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test. -+ * configure: Regenerate. -+ * fficonfig.h.in: Regenerate. -+ * src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC, -+ CFI_OFFSET,CFI_DEF_CFA): New macros. -+ (ffi_call_SYSV): Add callframe annotation. -+ -+2007-05-10 Roman Zippel -+ -+ * src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix -+ numerous test suite failures. -+ * src/m68k/sysv.S (ffi_call_SYSV): Likewise. -+ -+2007-04-11 Paolo Bonzini -+ -+ * Makefile.am (EXTRA_DIST): Bring up to date. -+ * Makefile.in: Regenerate. -+ * src/frv/eabi.S: Remove RCS keyword. -+ -+2007-04-06 Richard Henderson -+ -+ * configure.ac: Tidy target case. -+ (HAVE_LONG_DOUBLE): Allow the target to override. -+ * configure: Regenerate. -+ * include/ffi.h.in: Don't define ffi_type_foo if -+ LIBFFI_HIDE_BASIC_TYPES is defined. -+ (ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define -+ to ffi_type_double. -+ * types.c (LIBFFI_HIDE_BASIC_TYPES): Define. -+ (FFI_TYPEDEF, ffi_type_void): Mark the data const. -+ (ffi_type_longdouble): Special case for Alpha. Don't define -+ if long double == double. -+ -+ * src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value. -+ (ffi_prep_cif_machdep): Handle it as the 128-bit type. -+ (ffi_call, ffi_closure_osf_inner): Likewise. -+ (ffi_closure_osf_inner): Likewise. Mark hidden. -+ (ffi_call_osf, ffi_closure_osf): Mark hidden. -+ * src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition. -+ * src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden. -+ (load_table): Handle 128-bit long double. -+ -+ * testsuite/libffi.call/float4.c: Add -mieee for alpha. -+ -+2007-04-06 Tom Tromey -+ -+ PR libffi/31491: -+ * README: Fixed bug in example. -+ -+2007-04-03 Jakub Jelinek -+ -+ * src/closures.c: Include sys/statfs.h. -+ (_GNU_SOURCE): Define on Linux. -+ (FFI_MMAP_EXEC_SELINUX): Define. -+ (selinux_enabled): New variable. -+ (selinux_enabled_check): New function. -+ (is_selinux_enabled): Define. -+ (dlmmap): Use it. -+ -+2007-03-24 Uros Bizjak -+ -+ * testsuite/libffi.call/return_fl2.c (return_fl): Mark as static. -+ Use 'volatile float sum' to create sum of floats to avoid false -+ negative due to excess precision on ix86 targets. -+ (main): Ditto. -+ -+2007-03-08 Alexandre Oliva -+ -+ * src/powerpc/ffi.c (flush_icache): Fix left-over from previous -+ patch. -+ (ffi_prep_closure_loc): Remove unneeded casts. Add needed ones. -+ -+2007-03-07 Alexandre Oliva -+ -+ * include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New. -+ (ffi_prep_closure_loc): New. -+ (ffi_prep_raw_closure_loc): New. -+ (ffi_prep_java_raw_closure_loc): New. -+ * src/closures.c: New file. -+ * src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment): -+ Replace sflags with exec_offset. -+ [FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset, -+ sub_segment_exec_offset): New macros. -+ (get_segment_flags, set_segment_flags, check_segment_merge): New -+ macros. -+ (is_mmapped_segment, is_extern_segment): Use get_segment_flags. -+ (add_segment, sys_alloc, create_mspace, create_mspace_with_base, -+ destroy_mspace): Use new macros. -+ (sys_alloc): Silence warning. -+ * Makefile.am (libffi_la_SOURCES): Add src/closures.c. -+ * Makefile.in: Rebuilt. -+ * src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in -+ terms of ffi_prep_closure_loc. -+ * src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted -+ from... -+ (ffi_prep_raw_closure): ... this. Re-implement in terms of the -+ renamed version. -+ * src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and -+ adjusted from... -+ (ffi_prep_java_raw_closure): ... this. Re-implement in terms of -+ the renamed version. -+ * src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from -+ (ffi_prep_closure): ... this. -+ * src/pa/ffi.c: Likewise. -+ * src/cris/ffi.c: Likewise. Adjust. -+ * src/frv/ffi.c: Likewise. -+ * src/ia64/ffi.c: Likewise. -+ * src/mips/ffi.c: Likewise. -+ * src/powerpc/ffi_darwin.c: Likewise. -+ * src/s390/ffi.c: Likewise. -+ * src/sh/ffi.c: Likewise. -+ * src/sh64/ffi.c: Likewise. -+ * src/sparc/ffi.c: Likewise. -+ * src/x86/ffi64.c: Likewise. -+ * src/x86/ffi.c: Likewise. -+ (FFI_INIT_TRAMPOLINE): Adjust. -+ (ffi_prep_raw_closure_loc): Renamed and adjusted from... -+ (ffi_prep_raw_closure): ... this. -+ * src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from -+ (ffi_prep_closure): ... this. -+ (flush_icache): Adjust. -+ -+2007-03-07 Alexandre Oliva -+ -+ * src/dlmalloc.c: New file, imported version 2.8.3 of Doug -+ Lea's malloc. -+ -+2007-03-01 Brooks Moses -+ -+ * Makefile.am: Add dummy install-pdf target. -+ * Makefile.in: Regenerate -+ -+2007-02-13 Andreas Krebbel -+ -+ * src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep, -+ ffi_closure_helper_SYSV): Add long double handling. -+ -+2007-02-02 Jakub Jelinek -+ -+ * src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2 -+ immediately after bctrl instruction. -+ -+2007-01-18 Alexandre Oliva -+ -+ * Makefile.am (all-recursive, install-recursive, -+ mostlyclean-recursive, clean-recursive, distclean-recursive, -+ maintainer-clean-recursive): Add missing targets. -+ * Makefile.in: Rebuilt. -+ -+2006-12-14 Andreas Tobler -+ -+ * configure.ac: Add TARGET for x86_64-*-darwin*. -+ * Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources -+ for X86_DARWIN. -+ * src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*. -+ * src/x86/darwin64.S: New file for x86_64-*-darwin* support. -+ * configure: Regenerate. -+ * Makefile.in: Regenerate. -+ * include/Makefile.in: Regenerate. -+ * testsuite/Makefile.in: Regenerate. -+ * testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for -+ ffi_call only. -+ -+2006-12-13 Andreas Tobler -+ -+ * aclocal.m4: Regenerate with aclocal -I .. as written in the -+ Makefile.am. -+ -+2006-10-31 Geoffrey Keating -+ -+ * src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New. -+ (ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for -+ Darwin. -+ * testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL. -+ * testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL. -+ -+2006-10-10 Paolo Bonzini -+ Sandro Tolaini -+ -+ * configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and -+ conditional. -+ * configure: Regenerated. -+ * Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case. -+ (EXTRA_DIST): Add src/x86/darwin.S. -+ * Makefile.in: Regenerated. -+ * include/Makefile.in: Regenerated. -+ * testsuite/Makefile.in: Regenerated. -+ -+ * src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like -+ X86_WIN32, and additionally align stack to 16 bytes. -+ * src/x86/darwin.S: New, based on sysv.S. -+ * src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs. -+ -+2006-09-12 David Daney -+ -+ PR libffi/23935 -+ * include/Makefile.am: Install both ffi.h and ffitarget.h in -+ $(libdir)/gcc/$(target_alias)/$(gcc_version)/include. -+ * aclocal.m4: Regenerated for automake 1.9.6. -+ * Makefile.in: Regenerated. -+ * include/Makefile.in: Regenerated. -+ * testsuite/Makefile.in: Regenerated. -+ -+2006-08-17 Andreas Tobler -+ -+ * include/ffi_common.h (struct): Revert accidental commit. -+ -+2006-08-15 Andreas Tobler -+ -+ * include/ffi_common.h: Remove lint directives. -+ * include/ffi.h.in: Likewise. -+ -+2006-07-25 Torsten Schoenfeld -+ -+ * include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly -+ for 32-bit architectures. -+ * testsuite/libffi.call/return_ul.c: New test case. -+ -+2006-07-19 David Daney -+ -+ * testsuite/libffi.call/closure_fn6.c: Remove xfail for mips, -+ xfail remains for mips64. -+ -+2006-05-23 Carlos O'Donell -+ -+ * Makefile.am: Add install-html target. Add install-html to .PHONY -+ * Makefile.in: Regenerate. -+ * aclocal.m4: Regenerate. -+ * include/Makefile.in: Regenerate. -+ * testsuite/Makefile.in: Regenerate. -+ -+2006-05-18 John David Anglin -+ -+ * pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from -+ stack slot. -+ -+2006-04-22 Andreas Tobler -+ -+ * README: Remove notice about 'Crazy Comments'. -+ * src/debug.c: Remove lint directives. Cleanup white spaces. -+ * src/java_raw_api.c: Likewise. -+ * src/prep_cif.c: Likewise. -+ * src/raw_api.c: Likewise. -+ * src/ffitest.c: Delete. No longer needed, all test cases migrated -+ to the testsuite. -+ * src/arm/ffi.c: Remove lint directives. -+ * src/m32r/ffi.c: Likewise. -+ * src/pa/ffi.c: Likewise. -+ * src/powerpc/ffi.c: Likewise. -+ * src/powerpc/ffi_darwin.c: Likewise. -+ * src/sh/ffi.c: Likewise. -+ * src/sh64/ffi.c: Likewise. -+ * src/x86/ffi.c: Likewise. -+ * testsuite/libffi.call/float2.c: Likewise. -+ * testsuite/libffi.call/promotion.c: Likewise. -+ * testsuite/libffi.call/struct1.c: Likewise. -+ -+2006-04-13 Andreas Tobler -+ -+ * src/pa/hpux32.S: Correct unwind offset calculation for -+ ffi_closure_pa32. -+ * src/pa/linux.S: Likewise. -+ -+2006-04-12 James E Wilson -+ -+ PR libgcj/26483 -+ * src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros. -+ (hfa_type_load): Call stf_spill. -+ (hfa_type_store): Call ldf_fill. -+ (ffi_call): Adjust calls to above routines. Add local temps for -+ macro result. -+ -+2006-04-10 Matthias Klose -+ -+ * testsuite/lib/libffi-dg.exp (libffi-init): Recognize multilib -+ directory names containing underscores. -+ -+2006-04-07 James E Wilson -+ -+ * testsuite/libffi.call/float4.c: New testcase. -+ -+2006-04-05 John David Anglin -+ Andreas Tobler -+ -+ * Makefile.am: Add PA_HPUX port. -+ * Makefile.in: Regenerate. -+ * include/Makefile.in: Likewise. -+ * testsuite/Makefile.in: Likewise. -+ * configure.ac: Add PA_HPUX rules. -+ * configure: Regenerate. -+ * src/pa/ffitarget.h: Rename linux target to PA_LINUX. -+ Add PA_HPUX and PA64_HPUX. -+ Rename FFI_LINUX ABI to FFI_PA32 ABI. -+ (FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets. -+ (FFI_TYPE_SMALL_STRUCT2): Define. -+ (FFI_TYPE_SMALL_STRUCT4): Likewise. -+ (FFI_TYPE_SMALL_STRUCT8): Likewise. -+ (FFI_TYPE_SMALL_STRUCT3): Redefine. -+ (FFI_TYPE_SMALL_STRUCT5): Likewise. -+ (FFI_TYPE_SMALL_STRUCT6): Likewise. -+ (FFI_TYPE_SMALL_STRUCT7): Likewise. -+ * src/pa/ffi.c (ROUND_DOWN): Delete. -+ (fldw, fstw, fldd, fstd): Use '__asm__'. -+ (ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2, -+ FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8. -+ (ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment. -+ Simplify incrementing of stack slot variable. Change type of local -+ 'n' to unsigned int. -+ (ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long -+ double on PA_HPUX. -+ (ffi_prep_cif_machdep): Likewise. -+ (ffi_call): Likewise. -+ (ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change -+ return type to ffi_status. Simplify incrementing of stack slot -+ variable. Only copy floating point argument registers when PA_LINUX -+ is true. Reformat debug statement. -+ Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and -+ FFI_TYPE_SMALL_STRUCT8. -+ (ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to -+ declaration. -+ (ffi_prep_closure): Make linux trampoline conditional on PA_LINUX. -+ Add nops to cache flush. Add trampoline for PA_HPUX. -+ * src/pa/hpux32.S: New file. -+ * src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename -+ ffi_prep_args_LINUX to ffi_prep_args_pa32. -+ Localize labels. Add support for 2, 4 and 8-byte small structs. Handle -+ unaligned destinations in 3, 5, 6 and 7-byte small structs. Order -+ argument type checks so that common argument types appear first. -+ (ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename -+ ffi_closure_inner_LINUX to ffi_closure_inner_pa32. -+ -+2006-03-24 Alan Modra -+ -+ * src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX. Default -+ for 32-bit using IBM extended double format. Fix FFI_LAST_ABI. -+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of -+ FFI_TYPE_LONGDOUBLE. -+ (ffi_prep_args64): Assert using IBM extended double. -+ (ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type. -+ Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args. -+ (ffi_call): Handle FFI_LINUX. -+ (ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs -+ gpr3 return pointer as for struct return. Handle FFI_LINUX -+ FFI_TYPE_LONGDOUBLE return and args. Don't increment "nf" -+ unnecessarily. -+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2 -+ for FFI_TYPE_LONGDOUBLE. Move epilogue insns into case table. -+ Don't use r6 as pointer to results, instead use sp offset. Don't -+ make a special call to load lr with case table address, instead -+ use offset from previous call. -+ * src/powerpc/sysv.S (ffi_call_SYSV): Save long double return. -+ * src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double -+ return. -+ -+2006-03-15 Kaz Kojima -+ -+ * src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments -+ passed with FP registers correctly. -+ (ffi_closure_helper_SYSV): Likewise. -+ * src/sh64/sysv.S: Likewise. -+ -+2006-03-01 Andreas Tobler -+ -+ * testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif, -+ args and userdata unused. -+ (closure_test_fn1): Mark cif and userdata unused. -+ (main): Remove unused res. -+ -+2006-02-28 Andreas Tobler -+ -+ * testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for -+ -O2, -O3, -Os and the warning flags -W -Wall. -+ * testsuite/libffi.special/special.exp: Likewise. -+ * testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark -+ unused parameter unused for gcc or else do nothing. -+ * testsuite/libffi.special/ffitestcxx.h: Likewise. -+ * testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif -+ and userdata unused. -+ * testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise. -+ * testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise. -+ * testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise. -+ * testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise. -+ * testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise. -+ * testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise. -+ * testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise. -+ * testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise. -+ * testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise. -+ * testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise. -+ * testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise. -+ * testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise. -+ * testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise. -+ * testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise. -+ * testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise. -+ * testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise. -+ * testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise. -+ * testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise. -+ * testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise. -+ * testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise. -+ * testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise. -+ * testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise. -+ * testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise. -+ * testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn): -+ Likewise. -+ * testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn): -+ Likewise. -+ * testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn): -+ Likewise. -+ * testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast -+ void* to avoid compiler warning. -+ (main): Likewise. -+ (cls_struct_align_gn): Mark cif and userdata unused. -+ * testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn): -+ Likewise. -+ * testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn): -+ Likewise. -+ * testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn): -+ Likewise. -+ * testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn): -+ Likewise. -+ * testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn): -+ Likewise. -+ * testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise. -+ * testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise. -+ * testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and -+ data unused. -+ (main): Cast res_call to silence gcc. -+ * testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and -+ data unused. -+ (main): Cast res_call to silence gcc. -+ * testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif -+ and data unused. -+ (main): Cast res_call to silence gcc. -+ * testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and -+ data unused. -+ (main): Cast res_call to silence gcc. -+ * testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and -+ data unused. -+ (main): Cast res_call to silence gcc. -+ * testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif -+ and data unused. -+ (main): Cast res_call to silence gcc. -+ * testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and -+ userdata unused. -+ (cls_ret_schar_fn): Cast printf parameter to silence gcc. -+ * testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and -+ userdata unused. -+ (cls_ret_sint_fn): Cast printf parameter to silence gcc. -+ * testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and -+ userdata unused. -+ (cls_ret_sshort_fn): Cast printf parameter to silence gcc. -+ * testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn): Mark cif and -+ userdata unused. -+ (cls_ret_uchar_fn): Cast printf parameter to silence gcc. -+ * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and -+ userdata unused. -+ (cls_ret_uint_fn): Cast printf parameter to silence gcc. -+ * testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif -+ and userdata unused. -+ * testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and -+ userdata unused. -+ (cls_ret_ushort_fn): Cast printf parameter to silence gcc. -+ * testsuite/libffi.call/float.c (floating): Remove unused parameter e. -+ * testsuite/libffi.call/float1.c (main): Remove unused variable i. -+ Cleanup white spaces. -+ * testsuite/libffi.call/negint.c (checking): Remove unused variable i. -+ * testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark -+ cif and userdata unused. -+ * testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn): -+ Likewise. -+ * testsuite/libffi.call/nested_struct10.c (B_gn): Likewise. -+ * testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf -+ formatters to silence gcc. -+ (B_gn): Mark cif and userdata unused. -+ * testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata -+ unused. -+ * testsuite/libffi.call/nested_struct4.c: Mention related PR. -+ (B_gn): Mark cif and userdata unused. -+ * testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata -+ unused. -+ * testsuite/libffi.call/nested_struct6.c: Mention related PR. -+ (B_gn): Mark cif and userdata unused. -+ * testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata -+ unused. -+ * testsuite/libffi.call/nested_struct8.c (B_gn): Likewise. -+ * testsuite/libffi.call/nested_struct9.c (B_gn): Likewise. -+ * testsuite/libffi.call/problem1.c (stub): Likewise. -+ * testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence -+ gcc. -+ * testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned -+ in the last commit for this test case in the test case itself. -+ * testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as -+ unused. -+ * testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise. -+ * testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise. -+ * testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise. -+ * testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise. -+ * testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise. -+ * testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise. -+ -+2006-02-22 Kaz Kojima -+ -+ * src/sh/sysv.S: Fix register numbers in the FDE for -+ ffi_closure_SYSV. -+ -+2006-02-20 Andreas Tobler -+ -+ * testsuite/libffi.call/return_fl2.c (return_fl): Remove static -+ declaration to avoid a false negative on ix86. See PR323. -+ -+2006-02-18 Kaz Kojima -+ -+ * src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable -+ and cast integer to void * if needed. Update the pointer to -+ the FP register saved area correctly. -+ -+2006-02-17 Andreas Tobler -+ -+ * testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630 -+ is fixed. -+ * testsuite/libffi.call/nested_struct4.c: Likewise. -+ -+2006-02-16 Andreas Tobler -+ -+ * testsuite/libffi.call/return_dbl.c: New test case. -+ * testsuite/libffi.call/return_dbl1.c: Likewise. -+ * testsuite/libffi.call/return_dbl2.c: Likewise. -+ * testsuite/libffi.call/return_fl.c: Likewise. -+ * testsuite/libffi.call/return_fl1.c: Likewise. -+ * testsuite/libffi.call/return_fl2.c: Likewise. -+ * testsuite/libffi.call/return_fl3.c: Likewise. -+ * testsuite/libffi.call/closure_fn6.c: Likewise. -+ -+ * testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong -+ definition. -+ * testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition -+ here to be used by other test cases too. -+ -+ * testsuite/libffi.call/nested_struct10.c: New test case. -+ * testsuite/libffi.call/nested_struct9.c: Likewise. -+ * testsuite/libffi.call/nested_struct8.c: Likewise. -+ * testsuite/libffi.call/nested_struct7.c: Likewise. -+ * testsuite/libffi.call/nested_struct6.c: Likewise. -+ * testsuite/libffi.call/nested_struct5.c: Likewise. -+ * testsuite/libffi.call/nested_struct4.c: Likewise. -+ -+2006-01-21 Andreas Tobler -+ -+ * configure.ac: Enable libffi for sparc64-*-freebsd*. -+ * configure: Rebuilt. -+ -+2006-01-18 Jakub Jelinek -+ -+ * src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3, -+ instead do the shifting inline. -+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5 -+ shift count unconditionally. Simplify load sequences for 1, 2, 3, 4 -+ and 8 byte structs, for the remaining struct sizes don't call -+ __lshrdi3, instead do the shifting inline. -+ -+2005-12-07 Thiemo Seufer -+ -+ * src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add -+ missing parentheses. -+ * src/mips/o32.S (ffi_call_O32): Code formatting. Define -+ and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations. -+ (ffi_closure_O32): Likewise, but with newly defined A3_OFF2, -+ A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2, -+ V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2, -+ FA_0_0_OFF2. -+ * src/mips/ffi.c (ffi_prep_args): Code formatting. Fix -+ endianness bugs. -+ (ffi_prep_closure): Improve trampoline instruction scheduling. -+ (ffi_closure_mips_inner_O32): Fix endianness bugs. -+ -+2005-12-03 Alan Modra -+ -+ * src/powerpc/ffi.c: Formatting. -+ (ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions. -+ (ffi_prep_args64): Likewise. -+ -+2005-09-30 Geoffrey Keating -+ -+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): For -+ darwin, use -shared-libgcc not -lgcc_s, and explain why. -+ -+2005-09-26 Tom Tromey -+ -+ * testsuite/libffi.call/float1.c (value_type): New typedef. -+ (CANARY): New define. -+ (main): Check for result buffer overflow. -+ * src/powerpc/linux64.S: Handle linux64 long double returns. -+ * src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant. -+ (ffi_prep_cif_machdep): Handle linux64 long double returns. -+ -+2005-08-25 Alan Modra -+ -+ PR target/23404 -+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack -+ homed fp args. -+ (ffi_status ffi_prep_cif_machdep): Correct stack sizing for same. -+ -+2005-08-11 Jakub Jelinek -+ -+ * configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test. -+ (AH_BOTTOM): Add FFI_HIDDEN definition. -+ * configure: Rebuilt. -+ * fficonfig.h.in: Rebuilt. -+ * src/powerpc/ffi.c (hidden): Remove. -+ (ffi_closure_LINUX64, ffi_prep_args64, ffi_call_LINUX64, -+ ffi_closure_helper_LINUX64): Use FFI_HIDDEN instead of hidden. -+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64, -+ .ffi_closure_LINUX64): Use FFI_HIDDEN instead of .hidden. -+ * src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): Remove, -+ add FFI_HIDDEN to its prototype. -+ (ffi_closure_SYSV_inner): New. -+ * src/x86/sysv.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New. -+ * src/x86/win32.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New. -+ -+2005-08-10 Alfred M. Szmidt -+ -+ PR libffi/21819: -+ * configure: Rebuilt. -+ * configure.ac: Handle i*86-*-gnu*. -+ -+2005-08-09 Jakub Jelinek -+ -+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use -+ DW_CFA_offset_extended_sf rather than -+ DW_CFA_GNU_negative_offset_extended. -+ * src/powerpc/sysv.S (ffi_call_SYSV): Likewise. -+ -+2005-07-22 SUGIOKA Toshinobu -+ -+ * src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly -+ on sh3. -+ (ffi_closure_SYSV): Change the stack layout for sh3 struct argument. -+ * src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is -+ partially on register. -+ (ffi_closure_helper_SYSV): Likewise. -+ (ffi_prep_cif_machdep): Don't set too many cif->flags. -+ -+2005-07-20 Kaz Kojima -+ -+ * src/sh/ffi.c (ffi_call): Handle small structures correctly. -+ Remove empty line. -+ * src/sh64/ffi.c (simple_type): Remove. -+ (return_type): Handle small structures correctly. -+ (ffi_prep_args): Likewise. -+ (ffi_call): Likewise. -+ (ffi_closure_helper_SYSV): Likewise. -+ * src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return. -+ Emit position independent code if PIC and remove wrong datalabel -+ prefixes from EH data. -+ -+2005-07-19 Andreas Tobler -+ -+ * Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD. -+ * Makefile.in: Regenerate. -+ * include/Makefile.in: Likewise. -+ * testsuite/Makefile.in: Likewise. -+ * configure.ac: Add POWERPC_FREEBSD rules. -+ * configure: Regenerate. -+ * src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules. -+ (FFI_SYSV_TYPE_SMALL_STRUCT): Define. -+ * src/powerpc/ffi.c: Add flags to handle small structure returns -+ in ffi_call_SYSV. -+ (ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI. -+ Aka FFI_SYSV. -+ (ffi_closure_helper_SYSV): Likewise. -+ * src/powerpc/ppc_closure.S: Add return types for small structures. -+ * src/powerpc/sysv.S: Add bits to handle small structures for -+ final SYSV 4 ABI. -+ -+2005-07-10 Andreas Tobler -+ -+ * testsuite/libffi.call/cls_5_1_byte.c: New test file. -+ * testsuite/libffi.call/cls_6_1_byte.c: Likewise. -+ * testsuite/libffi.call/cls_7_1_byte.c: Likewise. -+ -+2005-07-05 Randolph Chung -+ -+ * src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1 -+ as FFI_TYPE_SMALL_STRUCT3. Break out handling for 5-7 byte -+ structures. Kill compilation warnings. -+ (ffi_closure_inner_LINUX): Print return values as hex in debug -+ message. Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3. -+ Properly handle 5-7 byte structure returns. -+ * src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1) -+ (FFI_TYPE_SMALL_STRUCT2): Remove. -+ (FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5) -+ (FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define. -+ * src/pa/linux.S: Mark source file as using PA1.1 assembly. -+ (checksmst1, checksmst2): Remove. -+ (checksmst3): Optimize handling of 3-byte struct returns. -+ (checksmst567): Properly handle 5-7 byte struct returns. -+ -+2005-06-15 Rainer Orth -+ -+ PR libgcj/21943 -+ * src/mips/n32.S: Enforce PIC code. -+ * src/mips/o32.S: Likewise. -+ -+2005-06-15 Rainer Orth -+ -+ * configure.ac: Treat i*86-*-solaris2.10 and up as X86_64. -+ * configure: Regenerate. -+ -+2005-06-01 Alan Modra -+ -+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET -+ to call ffi_closure_helper_SYSV. Append @local instead. -+ * src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV. -+ -+2005-05-17 Kelley Cook -+ -+ * configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS. -+ Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF. -+ * Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config. -+ * aclocal.m4, configure, fficonfig.h.in, Makefile.in, -+ include/Makefile.in, testsuite/Makefile.in: Regenerate. -+ -+2005-05-09 Mike Stump -+ -+ * configure: Regenerate. -+ -+2005-05-08 Richard Henderson -+ -+ PR libffi/21285 -+ * src/alpha/osf.S: Update unwind into to match code. -+ -+2005-05-04 Andreas Degert -+ Richard Henderson -+ -+ * src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in -+ bit 11 of flags. -+ (ffi_call): Mask return type field. Pass ssecount to ffi_call_unix64. -+ (ffi_prep_closure): Set carry bit if sse-used flag set. -+ * src/x86/unix64.S (ffi_call_unix64): Add ssecount argument. -+ Only load sse registers if ssecount non-zero. -+ (ffi_closure_unix64): Only save sse registers if carry set on entry. -+ -+2005-04-29 Ralf Corsepius -+ -+ * configure.ac: Add i*86-*-rtems*, sparc*-*-rtems*, -+ powerpc-*rtems*, arm*-*-rtems*, sh-*-rtems*. -+ * configure: Regenerate. -+ -+2005-04-20 Hans-Peter Nilsson -+ -+ * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use, -+ have Tcl8.3-compatible intermediate variable. -+ -+2005-04-18 Simon Posnjak -+ Hans-Peter Nilsson -+ -+ * Makefile.am: Add CRIS support. -+ * configure.ac: Likewise. -+ * Makefile.in, configure, testsuite/Makefile.in, -+ include/Makefile.in: Regenerate. -+ * src/cris: New directory. -+ * src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files. -+ * src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__. -+ -+ * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): Replace \n with -+ \r?\n in output tests. -+ -+2005-04-12 Mike Stump -+ -+ * configure: Regenerate. -+ -+2005-03-30 Hans Boehm -+ -+ * src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI. -+ -+2005-03-30 Steve Ellcey -+ -+ * src/ia64/ffitarget.h (ffi_arg) ADD DI attribute. -+ (ffi_sarg) Ditto. -+ * src/ia64/unix.S (ffi_closure_unix): Extend gp -+ to 64 bits in ILP32 mode. -+ Load 64 bits even for short data. -+ -+2005-03-23 Mike Stump -+ -+ * src/powerpc/darwin.S: Update for -m64 multilib. -+ * src/powerpc/darwin_closure.S: Likewise. -+ -+2005-03-21 Zack Weinberg -+ -+ * configure.ac: Do not invoke TL_AC_GCC_VERSION. -+ Do not set tool_include_dir. -+ * aclocal.m4, configure, Makefile.in, testsuite/Makefile.in: -+ Regenerate. -+ * include/Makefile.am: Set gcc_version and toollibffidir. -+ * include/Makefile.in: Regenerate. -+ -+2005-02-22 Andrew Haley -+ -+ * src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to -+ odd-numbered register pairs for 64-bit integer types. -+ -+2005-02-23 Andreas Tobler -+ -+ PR libffi/20104 -+ * testsuite/libffi.call/return_ll1.c: New test case. -+ -+2005-02-11 Janis Johnson -+ -+ * testsuite/libffi.call/cls_align_longdouble.c: Remove dg-options. -+ * testsuite/libffi.call/float.c: Ditto. -+ * testsuite/libffi.call/float2.c: Ditto. -+ * testsuite/libffi.call/float3.c: Ditto. -+ -+2005-02-08 Andreas Tobler -+ -+ * src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv. -+ -+2005-01-12 Eric Botcazou -+ -+ * testsuite/libffi.special/special.exp (cxx_options): Add -+ -shared-libgcc. -+ -+2004-12-31 Richard Henderson -+ -+ * src/types.c (FFI_AGGREGATE_TYPEDEF): Remove. -+ (FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF. Replace size and -+ offset parameters with a type parameter; deduce size and structure -+ alignment. Update all users. -+ -+2004-12-31 Richard Henderson -+ -+ * src/types.c (FFI_TYPE_POINTER): Define with sizeof. -+ (FFI_TYPE_LONGDOUBLE): Fix for ia64. -+ * src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move -+ into ffi_prep_closure. -+ * src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite -+ from scratch. -+ -+2004-12-27 Richard Henderson -+ -+ * src/x86/unix64.S: Fix typo in unwind info. -+ -+2004-12-25 Richard Henderson -+ -+ * src/x86/ffi64.c (struct register_args): Rename from stackLayout. -+ (enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS. -+ (merge_classes): Check for it. -+ (SSE_CLASS_P): New. -+ (classify_argument): Pass byte_offset by value; perform all updates -+ inside struct case. -+ (examine_argument): Add classes argument; handle -+ X86_64_COMPLEX_X87_CLASS. -+ (ffi_prep_args): Merge into ... -+ (ffi_call): ... here. Share stack frame with ffi_call_unix64. -+ (ffi_prep_cif_machdep): Setup cif->flags for proper structure return. -+ (ffi_fill_return_value): Remove. -+ (ffi_prep_closure): Remove dead assert. -+ (ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner. -+ Rewrite to use struct register_args instead of va_list. Create -+ flags for handling structure returns. -+ * src/x86/unix64.S: Remove dead strings. -+ (ffi_call_unix64): Rename from ffi_call_UNIX64. Rewrite to share -+ stack frame with ffi_call. Handle structure returns properly. -+ (float2sse, floatfloat2sse, double2sse): Remove. -+ (sse2float, sse2double, sse2floatfloat): Remove. -+ (ffi_closure_unix64): Rename from ffi_closure_UNIX64. Rewrite -+ to handle structure returns properly. -+ -+2004-12-08 David Edelsohn -+ -+ * Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and -+ PICFLAG. -+ * Makefile.in: Regenerated. -+ -+2004-12-02 Richard Sandiford -+ -+ * configure.ac: Use TL_AC_GCC_VERSION to set gcc_version. -+ * configure, aclocal.m4, Makefile.in: Regenerate. -+ * include/Makefile.in, testsuite/Makefile.in: Regenerate. -+ -+2004-11-29 Kelley Cook -+ -+ * configure: Regenerate for libtool change. -+ -+2004-11-25 Kelley Cook -+ -+ * configure: Regenerate for libtool reversion. -+ -+2004-11-24 Kelley Cook -+ -+ * configure: Regenerate for libtool change. -+ -+2004-11-23 John David Anglin -+ -+ * testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp. -+ -+2004-11-23 Richard Sandiford -+ -+ * src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead -+ of jal. Use an absolute encoding for the frame information. -+ -+2004-11-23 Kelley Cook -+ -+ * Makefile.am: Remove no-dependencies. Add ACLOCAL_AMFLAGS. -+ * acinclude.m4: Delete logic for sincludes. -+ * aclocal.m4, Makefile.in, configure: Regenerate. -+ * include/Makefile: Likewise. -+ * testsuite/Makefile: Likewise. -+ -+2004-11-22 Eric Botcazou -+ -+ * src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers -+ on a 8-byte boundary. -+ * src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments. -+ -+2004-10-27 Richard Earnshaw -+ -+ * src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return -+ long long values. Round stack allocation to a multiple of 8 bytes -+ for ATPCS compatibility. -+ * src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register -+ names. Handle returning long long types. Add Thumb and interworking -+ support. Improve soft-float code. -+ -+2004-10-27 Richard Earnshaw -+ -+ * testsuite/lib/libffi-db.exp (load_gcc_lib): New function. -+ (libffi_exit): New function. -+ (libffi_init): Build the testglue wrapper if needed. -+ -+2004-10-25 Eric Botcazou -+ -+ PR other/18138 -+ * testsuite/lib/libffi-dg.exp: Accept more than one multilib libgcc. -+ -+2004-10-25 Kazuhiro Inaoka -+ -+ * src/m32r/libffitarget.h (FFI_CLOSURES): Set to 0. -+ -+2004-10-20 Kaz Kojima -+ -+ * src/sh/sysv.S (ffi_call_SYSV): Don't align for double data. -+ * testsuite/libffi.call/float3.c: New test case. -+ -+2004-10-18 Kaz Kojima -+ -+ * src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for -+ the function returning a structure pointed with R2. -+ * src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to -+ the structure return value if T bit set. Emit position -+ independent code and EH data if PIC. -+ -+2004-10-13 Kazuhiro Inaoka -+ -+ * Makefile.am: Add m32r support. -+ * configure.ac: Likewise. -+ * Makefile.in: Regenerate. -+ * confiugre: Regenerate. -+ * src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF -+ (uint64, sint64, double, longdouble) -+ * src/m32r: New directory. -+ * src/m32r/ffi.c: New file. -+ * src/m32r/sysv.S: Likewise. -+ * src/m32r/ffitarget.h: Likewise. -+ -+2004-10-02 Kaz Kojima -+ -+ * testsuite/libffi.call/negint.c: New test case. -+ -+2004-09-14 H.J. Lu -+ -+ PR libgcj/17465 -+ * testsuite/lib/libffi-dg.exp: Don't use global ld_library_path. -+ Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH, -+ LD_LIBRARY64_PATH, LD_LIBRARY_PATH_32, LD_LIBRARY_PATH_64 and -+ DYLD_LIBRARY_PATH. -+ -+2004-09-05 Andreas Tobler -+ -+ * testsuite/libffi.call/many_win32.c: Remove whitespaces. -+ * testsuite/libffi.call/promotion.c: Likewise. -+ * testsuite/libffi.call/return_ll.c: Remove unused var. Cleanup -+ whitespaces. -+ * testsuite/libffi.call/return_sc.c: Likewise. -+ * testsuite/libffi.call/return_uc.c: Likewise. -+ -+2004-09-05 Andreas Tobler -+ -+ * src/powerpc/darwin.S: Fix comments and identation. -+ * src/powerpc/darwin_closure.S: Likewise. -+ -+2004-09-02 Andreas Tobler -+ -+ * src/powerpc/ffi_darwin.c: Add flag for longdouble return values. -+ (ffi_prep_args): Handle longdouble arguments. -+ (ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for -+ longdouble. -+ (ffi_closure_helper_DARWIN): Add closure handling for longdouble. -+ * src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble -+ values. -+ * src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise. -+ * src/types.c: Defined longdouble size and alignment for darwin. -+ -+2004-09-02 Andreas Tobler -+ -+ * src/powerpc/aix.S: Remove whitespaces. -+ * src/powerpc/aix_closure.S: Likewise. -+ * src/powerpc/asm.h: Likewise. -+ * src/powerpc/ffi.c: Likewise. -+ * src/powerpc/ffitarget.h: Likewise. -+ * src/powerpc/linux64.S: Likewise. -+ * src/powerpc/linux64_closure.S: Likewise. -+ * src/powerpc/ppc_closure.S: Likewise. -+ * src/powerpc/sysv.S: Likewise. -+ -+2004-08-30 Anthony Green -+ -+ * Makefile.am: Add frv support. -+ * Makefile.in, testsuite/Makefile.in: Rebuilt. -+ * configure.ac: Read configure.host. -+ * configure.in: Read configure.host. -+ * configure.host: New file. frv-elf needs libgloss. -+ * include/ffi.h.in: Force ffi_closure to have a nice big (8) -+ alignment. This is needed to frv and shouldn't harm the others. -+ * include/ffi_common.h (ALIGN_DOWN): New macro. -+ * src/frv/ffi.c, src/frv/ffitarget.h, src/frv/eabi.S: New files. -+ -+2004-08-24 David Daney -+ -+ * testsuite/libffi.call/closure_fn0.c: Xfail mips64* instead of mips*. -+ * testsuite/libffi.call/closure_fn1.c: Likewise. -+ * testsuite/libffi.call/closure_fn2.c Likewise. -+ * testsuite/libffi.call/closure_fn3.c: Likewise. -+ * testsuite/libffi.call/closure_fn4.c: Likewise. -+ * testsuite/libffi.call/closure_fn5.c: Likewise. -+ * testsuite/libffi.call/cls_18byte.c: Likewise. -+ * testsuite/libffi.call/cls_19byte.c: Likewise. -+ * testsuite/libffi.call/cls_1_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_20byte.c: Likewise. -+ * testsuite/libffi.call/cls_20byte1.c: Likewise. -+ * testsuite/libffi.call/cls_24byte.c: Likewise. -+ * testsuite/libffi.call/cls_2byte.c: Likewise. -+ * testsuite/libffi.call/cls_3_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_3byte1.c: Likewise. -+ * testsuite/libffi.call/cls_3byte2.c: Likewise. -+ * testsuite/libffi.call/cls_4_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_4byte.c: Likewise. -+ * testsuite/libffi.call/cls_64byte.c: Likewise. -+ * testsuite/libffi.call/cls_6byte.c: Likewise. -+ * testsuite/libffi.call/cls_7byte.c: Likewise. -+ * testsuite/libffi.call/cls_8byte.c: Likewise. -+ * testsuite/libffi.call/cls_9byte1.c: Likewise. -+ * testsuite/libffi.call/cls_9byte2.c: Likewise. -+ * testsuite/libffi.call/cls_align_double.c: Likewise. -+ * testsuite/libffi.call/cls_align_float.c: Likewise. -+ * testsuite/libffi.call/cls_align_longdouble.c: Likewise. -+ * testsuite/libffi.call/cls_align_pointer.c: Likewise. -+ * testsuite/libffi.call/cls_align_sint16.c: Likewise. -+ * testsuite/libffi.call/cls_align_sint32.c: Likewise. -+ * testsuite/libffi.call/cls_align_sint64.c: Likewise. -+ * testsuite/libffi.call/cls_align_uint16.c: Likewise. -+ * testsuite/libffi.call/cls_align_uint32.c: Likewise. -+ * testsuite/libffi.call/cls_align_uint64.c: Likewise. -+ * testsuite/libffi.call/cls_double.c: Likewise. -+ * testsuite/libffi.call/cls_float.c: Likewise. -+ * testsuite/libffi.call/cls_multi_schar.c: Likewise. -+ * testsuite/libffi.call/cls_multi_sshort.c: Likewise. -+ * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise. -+ * testsuite/libffi.call/cls_multi_uchar.c: Likewise. -+ * testsuite/libffi.call/cls_multi_ushort.c: Likewise. -+ * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise. -+ * testsuite/libffi.call/cls_schar.c: Likewise. -+ * testsuite/libffi.call/cls_sint.c: Likewise. -+ * testsuite/libffi.call/cls_sshort.c: Likewise. -+ * testsuite/libffi.call/cls_uchar.c: Likewise. -+ * testsuite/libffi.call/cls_uint.c: Likewise. -+ * testsuite/libffi.call/cls_ulonglong.c: Likewise. -+ * testsuite/libffi.call/cls_ushort.c: Likewise. -+ * testsuite/libffi.call/nested_struct.c: Likewise. -+ * testsuite/libffi.call/nested_struct1.c: Likewise. -+ * testsuite/libffi.call/nested_struct2.c: Likewise. -+ * testsuite/libffi.call/nested_struct3.c: Likewise. -+ * testsuite/libffi.call/problem1.c: Likewise. -+ * testsuite/libffi.special/unwindtest.cc: Likewise. -+ * testsuite/libffi.call/cls_12byte.c: Likewise and set return value -+ to zero. -+ * testsuite/libffi.call/cls_16byte.c: Likewise. -+ * testsuite/libffi.call/cls_5byte.c: Likewise. -+ -+2004-08-23 David Daney -+ -+ PR libgcj/13141 -+ * src/mips/ffitarget.h (FFI_O32_SOFT_FLOAT): New ABI. -+ * src/mips/ffi.c (ffi_prep_args): Fix alignment calculation. -+ (ffi_prep_cif_machdep): Handle FFI_O32_SOFT_FLOAT floating point -+ parameters and return types. -+ (ffi_call): Handle FFI_O32_SOFT_FLOAT ABI. -+ (ffi_prep_closure): Ditto. -+ (ffi_closure_mips_inner_O32): Handle FFI_O32_SOFT_FLOAT ABI, fix -+ alignment calculations. -+ * src/mips/o32.S (ffi_closure_O32): Don't use floating point -+ instructions if FFI_O32_SOFT_FLOAT, make stack frame ABI compliant. -+ -+2004-08-14 Casey Marshall -+ -+ * src/mips/ffi.c (ffi_pref_cif_machdep): set `cif->flags' to -+ contain `FFI_TYPE_UINT64' as return type for any 64-bit -+ integer (O32 ABI only). -+ (ffi_prep_closure): new function. -+ (ffi_closure_mips_inner_O32): new function. -+ * src/mips/ffitarget.h: Define `FFI_CLOSURES' and -+ `FFI_TRAMPOLINE_SIZE' appropriately if the ABI is o32. -+ * src/mips/o32.S (ffi_call_O32): add labels for .eh_frame. Return -+ 64 bit integers correctly. -+ (ffi_closure_O32): new function. -+ Added DWARF-2 unwind info for both functions. -+ -+2004-08-10 Andrew Haley -+ -+ * src/x86/ffi64.c (ffi_prep_args ): 8-align all stack arguments. -+ -+2004-08-01 Robert Millan -+ -+ * configure.ac: Detect knetbsd-gnu and kfreebsd-gnu. -+ * configure: Regenerate. -+ -+2004-07-30 Maciej W. Rozycki -+ -+ * acinclude.m4 (AC_FUNC_MMAP_BLACKLIST): Check for -+ and mmap() explicitly instead of relying on preset autoconf cache -+ variables. -+ * aclocal.m4: Regenerate. -+ * configure: Regenerate. -+ -+2004-07-11 Ulrich Weigand -+ -+ * src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation. -+ (ffi_check_float_struct): Remove unused prototype. -+ -+2004-06-30 Geoffrey Keating -+ -+ * src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment -+ character on Darwin, use '\n\t' instead. -+ -+2004-06-26 Matthias Klose -+ -+ * libtool-version: Fix typo in revision/age. -+ -+2004-06-17 Matthias Klose -+ -+ * libtool-version: New. -+ * Makefile.am (libffi_la_LDFLAGS): Use -version-info for soname. -+ * Makefile.in: Regenerate. -+ -+2004-06-15 Paolo Bonzini -+ -+ * Makefile.am: Remove useless multilib rules. -+ * Makefile.in: Regenerate. -+ * aclocal.m4: Regenerate with automake 1.8.5. -+ * configure.ac: Remove useless multilib configury. -+ * configure: Regenerate. -+ -+2004-06-15 Paolo Bonzini -+ -+ * .cvsignore: New file. -+ -+2004-06-10 Jakub Jelinek -+ -+ * src/ia64/unix.S (ffi_call_unix): Insert group barrier break -+ fp_done. -+ (ffi_closure_UNIX): Fix f14/f15 adjustment if FLOAT_SZ is ever -+ changed from 8. -+ -+2004-06-06 Sean McNeil -+ -+ * configure.ac: Add x86_64-*-freebsd* support. -+ * configure: Regenerate. -+ -+2004-04-26 Joe Buck -+ -+ Bug 15093 -+ * configure.ac: Test for existence of mmap and sys/mman.h before -+ checking blacklist. Fix suggested by Jim Wilson. -+ * configure: Regenerate. -+ -+2004-04-26 Matt Austern -+ -+ * src/powerpc/darwin.S: Go through a non-lazy pointer for initial -+ FDE location. -+ * src/powerpc/darwin_closure.S: Likewise. -+ -+2004-04-24 Andreas Tobler -+ -+ * testsuite/libffi.call/cls_multi_schar.c (main): Fix initialization -+ error. Reported by Thomas Heller . -+ * testsuite/libffi.call/cls_multi_sshort.c (main): Likewise. -+ * testsuite/libffi.call/cls_multi_ushort.c (main): Likewise. -+ -+2004-03-20 Matthias Klose -+ -+ * src/pa/linux.S: Fix typo. -+ -+2004-03-19 Matthias Klose -+ -+ * Makefile.am: Update. -+ * Makefile.in: Regenerate. -+ * src/pa/ffi.h.in: Remove. -+ * src/pa/ffitarget.h: New file. -+ -+2004-02-10 Randolph Chung -+ -+ * Makefile.am: Add PA support. -+ * Makefile.in: Regenerate. -+ * include/Makefile.in: Regenerate. -+ * configure.ac: Add PA target. -+ * configure: Regenerate. -+ * src/pa/ffi.c: New file. -+ * src/pa/ffi.h.in: Add PA support. -+ * src/pa/linux.S: New file. -+ * prep_cif.c: Add PA support. -+ -+2004-03-16 Hosaka Yuji -+ -+ * src/types.c: Fix alignment size of X86_WIN32 case int64 and -+ double. -+ * src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type -+ with ecif->cif->flags. -+ (ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type -+ with cif->flags. -+ (ffi_prep_cif_machdep): Add X86_WIN32 struct case. -+ (ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32. -+ * src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b, -+ sc_retstruct2b): Add for 1 or 2-bytes struct case. -+ -+2004-03-15 Kelley Cook -+ -+ * configure.in: Rename file to ... -+ * configure.ac: ... this. -+ * fficonfig.h.in: Regenerate. -+ * Makefile.in: Regenerate. -+ * include/Makefile.in: Regenerate. -+ * testsuite/Makefile.in: Regenerate. -+ -+2004-03-12 Matt Austern -+ -+ * src/powerpc/darwin.S: Fix EH information so it corresponds to -+ changes in EH format resulting from addition of linkonce support. -+ * src/powerpc/darwin_closure.S: Likewise. -+ -+2004-03-11 Andreas Tobler -+ Paolo Bonzini -+ -+ * Makefile.am (AUTOMAKE_OPTIONS): Set them. -+ Remove VPATH. Remove rules for object files. Remove multilib support. -+ (AM_CCASFLAGS): Add. -+ * configure.in (AC_CONFIG_HEADERS): Relace AM_CONFIG_HEADER. -+ (AC_PREREQ): Bump version to 2.59. -+ (AC_INIT): Fill with version info and bug address. -+ (ORIGINAL_LD_FOR_MULTILIBS): Remove. -+ (AM_ENABLE_MULTILIB): Use this instead of AC_ARG_ENABLE. -+ De-precious CC so that the right flags are passed down to multilibs. -+ (AC_MSG_ERROR): Replace obsolete macro AC_ERROR. -+ (AC_CONFIG_FILES): Replace obsolete macro AC_LINK_FILES. -+ (AC_OUTPUT): Reorganize the output with AC_CONFIG_COMMANDS. -+ * configure: Rebuilt. -+ * aclocal.m4: Likewise. -+ * Makefile.in, include/Makefile.in, testsuite/Makefile.in: Likewise. -+ * fficonfig.h.in: Likewise. -+ -+2004-03-11 Andreas Schwab -+ -+ * src/ia64/ffi.c (ffi_prep_incoming_args_UNIX): Get floating point -+ arguments from fp registers only for the first 8 parameter slots. -+ Don't convert a float parameter when passed in memory. -+ -+2004-03-09 Hans-Peter Nilsson -+ -+ * configure: Regenerate for config/accross.m4 correction. -+ -+2004-02-25 Matt Kraai -+ -+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Change -+ ecif->cif->bytes to bytes. -+ (ffi_prep_cif_machdep): Add braces around nested if statement. -+ -+2004-02-09 Alan Modra -+ -+ * src/types.c (pointer): POWERPC64 has 8 byte pointers. -+ -+ * src/powerpc/ffi.c (ffi_prep_args64): Correct long double handling. -+ (ffi_closure_helper_LINUX64): Fix typo. -+ * testsuite/libffi.call/cls_align_longdouble.c: Pass -mlong-double-128 -+ for powerpc64-*-*. -+ * testsuite/libffi.call/float.c: Likewise. -+ * testsuite/libffi.call/float2.c: Likewise. -+ -+2004-02-08 Alan Modra -+ -+ * src/powerpc/ffi.c (ffi_prep_cif_machdep ): Correct -+ long double function return and long double arg handling. -+ (ffi_closure_helper_LINUX64): Formatting. Delete unused "ng" var. -+ Use "end_pfr" instead of "nf". Correct long double handling. -+ Localise "temp". -+ * src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double -+ return value. -+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate -+ space for long double return value. Adjust stack frame and offsets. -+ Load f2 long double return. -+ -+2004-02-07 Alan Modra -+ -+ * src/types.c: Use 16 byte long double for POWERPC64. -+ -+2004-01-25 Eric Botcazou -+ -+ * src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array -+ when the structure return address is passed in %o0. -+ (ffi_V9_return_struct): Rename into ffi_v9_layout_struct. -+ (ffi_v9_layout_struct): Align the field following a nested structure -+ on a word boundary. Use memmove instead of memcpy. -+ (ffi_call): Update call to ffi_V9_return_struct. -+ (ffi_prep_closure): Define 'ctx' only for V8. -+ (ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8 -+ and ffi_closure_sparc_inner_v9. -+ (ffi_closure_sparc_inner_v8): Return long doubles by reference. -+ Always skip the structure return address. For structures and long -+ doubles, copy the argument directly. -+ (ffi_closure_sparc_inner_v9): Skip the structure return address only -+ if required. Shift the maximum floating-point slot accordingly. For -+ big structures, copy the argument directly; otherwise, left-justify the -+ argument and call ffi_v9_layout_struct to lay out the structure on -+ the stack. -+ * src/sparc/v8.S: Undef STACKFRAME before defining it. -+ (ffi_closure_v8): Pass the structure return address. Update call to -+ ffi_closure_sparc_inner_v8. Short-circuit FFI_TYPE_INT handling. -+ Skip the 'unimp' insn when returning long doubles and structures. -+ * src/sparc/v9.S: Undef STACKFRAME before defining it. -+ (ffi_closure_v9): Increase the frame size by 2 words. Short-circuit -+ FFI_TYPE_INT handling. Load structures both in integers and -+ floating-point registers on return. -+ * README: Update status of the SPARC port. -+ -+2004-01-24 Andreas Tobler -+ -+ * testsuite/libffi.call/pyobjc-tc.c (main): Treat result value -+ as of type ffi_arg. -+ * testsuite/libffi.call/struct3.c (main): Fix CHECK. -+ -+2004-01-22 Ulrich Weigand -+ -+ * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Treat result -+ value as of type ffi_arg, not unsigned int. -+ -+2004-01-21 Michael Ritzert -+ -+ * ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead -+ of the LHS. -+ -+2004-01-12 Andreas Tobler -+ -+ * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_32 for -+ Solaris. -+ -+2004-01-08 Rainer Orth -+ -+ * testsuite/libffi.call/ffitest.h (allocate_mmap): Cast MAP_FAILED -+ to void *. -+ -+2003-12-10 Richard Henderson -+ -+ * testsuite/libffi.call/cls_align_pointer.c: Cast pointers to -+ size_t instead of int. -+ -+2003-12-04 Hosaka Yuji -+ -+ * testsuite/libffi.call/many_win32.c: Include . -+ * testsuite/libffi.call/many_win32.c (main): Replace variable -+ int i with unsigned long ul. -+ -+ * testsuite/libffi.call/cls_align_uint64.c: New test case. -+ * testsuite/libffi.call/cls_align_sint64.c: Likewise. -+ * testsuite/libffi.call/cls_align_uint32.c: Likewise. -+ * testsuite/libffi.call/cls_align_sint32.c: Likewise. -+ * testsuite/libffi.call/cls_align_uint16.c: Likewise. -+ * testsuite/libffi.call/cls_align_sint16.c: Likewise. -+ * testsuite/libffi.call/cls_align_float.c: Likewise. -+ * testsuite/libffi.call/cls_align_double.c: Likewise. -+ * testsuite/libffi.call/cls_align_longdouble.c: Likewise. -+ * testsuite/libffi.call/cls_align_pointer.c: Likewise. -+ -+2003-12-02 Hosaka Yuji -+ -+ PR other/13221 -+ * src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): -+ Align arguments to 32 bits. -+ -+2003-12-01 Andreas Tobler -+ -+ PR other/13221 -+ * testsuite/libffi.call/cls_multi_sshort.c: New test case. -+ * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise. -+ * testsuite/libffi.call/cls_multi_uchar.c: Likewise. -+ * testsuite/libffi.call/cls_multi_schar.c: Likewise. -+ * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise. -+ * testsuite/libffi.call/cls_multi_ushort.c: Likewise. -+ -+ * testsuite/libffi.special/unwindtest.cc: Cosmetics. -+ -+2003-11-26 Kaveh R. Ghazi -+ -+ * testsuite/libffi.call/ffitest.h: Include . -+ * testsuite/libffi.special/ffitestcxx.h: Likewise. -+ -+2003-11-22 Andreas Tobler -+ -+ * Makefile.in: Rebuilt. -+ * configure: Likewise. -+ * testsuite/libffi.special/unwindtest.cc: Convert the mmap to -+ the right type. -+ -+2003-11-21 Andreas Jaeger -+ Andreas Tobler -+ -+ * acinclude.m4: Add AC_FUNC_MMAP_BLACKLIST. -+ * configure.in: Call AC_FUNC_MMAP_BLACKLIST. -+ * Makefile.in: Rebuilt. -+ * aclocal.m4: Likewise. -+ * configure: Likewise. -+ * fficonfig.h.in: Likewise. -+ * testsuite/lib/libffi-dg.exp: Add include dir. -+ * testsuite/libffi.call/ffitest.h: Add MMAP definitions. -+ * testsuite/libffi.special/ffitestcxx.h: Likewise. -+ * testsuite/libffi.call/closure_fn0.c: Use MMAP functionality -+ for ffi_closure if available. -+ * testsuite/libffi.call/closure_fn1.c: Likewise. -+ * testsuite/libffi.call/closure_fn2.c: Likewise. -+ * testsuite/libffi.call/closure_fn3.c: Likewise. -+ * testsuite/libffi.call/closure_fn4.c: Likewise. -+ * testsuite/libffi.call/closure_fn5.c: Likewise. -+ * testsuite/libffi.call/cls_12byte.c: Likewise. -+ * testsuite/libffi.call/cls_16byte.c: Likewise. -+ * testsuite/libffi.call/cls_18byte.c: Likewise. -+ * testsuite/libffi.call/cls_19byte.c: Likewise. -+ * testsuite/libffi.call/cls_1_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_20byte.c: Likewise. -+ * testsuite/libffi.call/cls_20byte1.c: Likewise. -+ * testsuite/libffi.call/cls_24byte.c: Likewise. -+ * testsuite/libffi.call/cls_2byte.c: Likewise. -+ * testsuite/libffi.call/cls_3_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_3byte1.c: Likewise. -+ * testsuite/libffi.call/cls_3byte2.c: Likewise. -+ * testsuite/libffi.call/cls_4_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_4byte.c: Likewise. -+ * testsuite/libffi.call/cls_5byte.c: Likewise. -+ * testsuite/libffi.call/cls_64byte.c: Likewise. -+ * testsuite/libffi.call/cls_6byte.c: Likewise. -+ * testsuite/libffi.call/cls_7byte.c: Likewise. -+ * testsuite/libffi.call/cls_8byte.c: Likewise. -+ * testsuite/libffi.call/cls_9byte1.c: Likewise. -+ * testsuite/libffi.call/cls_9byte2.c: Likewise. -+ * testsuite/libffi.call/cls_double.c: Likewise. -+ * testsuite/libffi.call/cls_float.c: Likewise. -+ * testsuite/libffi.call/cls_schar.c: Likewise. -+ * testsuite/libffi.call/cls_sint.c: Likewise. -+ * testsuite/libffi.call/cls_sshort.c: Likewise. -+ * testsuite/libffi.call/cls_uchar.c: Likewise. -+ * testsuite/libffi.call/cls_uint.c: Likewise. -+ * testsuite/libffi.call/cls_ulonglong.c: Likewise. -+ * testsuite/libffi.call/cls_ushort.c: Likewise. -+ * testsuite/libffi.call/nested_struct.c: Likewise. -+ * testsuite/libffi.call/nested_struct1.c: Likewise. -+ * testsuite/libffi.call/nested_struct2.c: Likewise. -+ * testsuite/libffi.call/nested_struct3.c: Likewise. -+ * testsuite/libffi.call/problem1.c: Likewise. -+ * testsuite/libffi.special/unwindtest.cc: Likewise. -+ -+2003-11-20 Andreas Tobler -+ -+ * testsuite/lib/libffi-dg.exp: Make the -lgcc_s conditional. -+ -+2003-11-19 Andreas Tobler -+ -+ * testsuite/lib/libffi-dg.exp: Add DYLD_LIBRARY_PATH for darwin. -+ Add -lgcc_s to additional flags. -+ -+2003-11-12 Andreas Tobler -+ -+ * configure.in, include/Makefile.am: PR libgcj/11147, install -+ the ffitarget.h header file in a gcc versioned and target -+ dependent place. -+ * configure: Regenerated. -+ * Makefile.in, include/Makefile.in: Likewise. -+ * testsuite/Makefile.in: Likewise. -+ -+2003-11-09 Andreas Tobler -+ -+ * testsuite/libffi.call/closure_fn0.c: Print result and check -+ with dg-output to make debugging easier. -+ * testsuite/libffi.call/closure_fn1.c: Likewise. -+ * testsuite/libffi.call/closure_fn2.c: Likewise. -+ * testsuite/libffi.call/closure_fn3.c: Likewise. -+ * testsuite/libffi.call/closure_fn4.c: Likewise. -+ * testsuite/libffi.call/closure_fn5.c: Likewise. -+ * testsuite/libffi.call/cls_12byte.c: Likewise. -+ * testsuite/libffi.call/cls_16byte.c: Likewise. -+ * testsuite/libffi.call/cls_18byte.c: Likewise. -+ * testsuite/libffi.call/cls_19byte.c: Likewise. -+ * testsuite/libffi.call/cls_1_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_20byte.c: Likewise. -+ * testsuite/libffi.call/cls_20byte1.c: Likewise. -+ * testsuite/libffi.call/cls_24byte.c: Likewise. -+ * testsuite/libffi.call/cls_2byte.c: Likewise. -+ * testsuite/libffi.call/cls_3_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_3byte1.c: Likewise. -+ * testsuite/libffi.call/cls_3byte2.c: Likewise. -+ * testsuite/libffi.call/cls_4_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_4byte.c: Likewise. -+ * testsuite/libffi.call/cls_5byte.c: Likewise. -+ * testsuite/libffi.call/cls_64byte.c: Likewise. -+ * testsuite/libffi.call/cls_6byte.c: Likewise. -+ * testsuite/libffi.call/cls_7byte.c: Likewise. -+ * testsuite/libffi.call/cls_8byte.c: Likewise. -+ * testsuite/libffi.call/cls_9byte1.c: Likewise. -+ * testsuite/libffi.call/cls_9byte2.c: Likewise. -+ * testsuite/libffi.call/cls_double.c: Likewise. -+ * testsuite/libffi.call/cls_float.c: Likewise. -+ * testsuite/libffi.call/cls_schar.c: Likewise. -+ * testsuite/libffi.call/cls_sint.c: Likewise. -+ * testsuite/libffi.call/cls_sshort.c: Likewise. -+ * testsuite/libffi.call/cls_uchar.c: Likewise. -+ * testsuite/libffi.call/cls_uint.c: Likewise. -+ * testsuite/libffi.call/cls_ulonglong.c: Likewise. -+ * testsuite/libffi.call/cls_ushort.c: Likewise. -+ * testsuite/libffi.call/problem1.c: Likewise. -+ -+ * testsuite/libffi.special/unwindtest.cc: Make ffi_closure -+ static. -+ -+2003-11-08 Andreas Tobler -+ -+ * testsuite/libffi.call/cls_9byte2.c: New test case. -+ * testsuite/libffi.call/cls_9byte1.c: Likewise. -+ * testsuite/libffi.call/cls_64byte.c: Likewise. -+ * testsuite/libffi.call/cls_20byte1.c: Likewise. -+ * testsuite/libffi.call/cls_19byte.c: Likewise. -+ * testsuite/libffi.call/cls_18byte.c: Likewise. -+ * testsuite/libffi.call/closure_fn4.c: Likewise. -+ * testsuite/libffi.call/closure_fn5.c: Likewise. -+ * testsuite/libffi.call/cls_schar.c: Likewise. -+ * testsuite/libffi.call/cls_sint.c: Likewise. -+ * testsuite/libffi.call/cls_sshort.c: Likewise. -+ * testsuite/libffi.call/nested_struct2.c: Likewise. -+ * testsuite/libffi.call/nested_struct3.c: Likewise. -+ -+2003-11-08 Andreas Tobler -+ -+ * testsuite/libffi.call/cls_double.c: Do a check on the result. -+ * testsuite/libffi.call/cls_uchar.c: Likewise. -+ * testsuite/libffi.call/cls_uint.c: Likewise. -+ * testsuite/libffi.call/cls_ulonglong.c: Likewise. -+ * testsuite/libffi.call/cls_ushort.c: Likewise. -+ * testsuite/libffi.call/return_sc.c: Cleanup whitespaces. -+ -+2003-11-06 Andreas Tobler -+ -+ * src/prep_cif.c (ffi_prep_cif): Move the validity check after -+ the initialization. -+ -+2003-10-23 Andreas Tobler -+ -+ * src/java_raw_api.c (ffi_java_ptrarray_to_raw): Replace -+ FFI_ASSERT(FALSE) with FFI_ASSERT(0). -+ -+2003-10-22 David Daney -+ -+ * src/mips/ffitarget.h: Replace undefined UINT32 and friends with -+ __attribute__((__mode__(__SI__))) and friends. -+ -+2003-10-22 Andreas Schwab -+ -+ * src/ia64/ffi.c: Replace FALSE/TRUE with false/true. -+ -+2003-10-21 Andreas Tobler -+ -+ * configure.in: AC_LINK_FILES(ffitarget.h). -+ * configure: Regenerate. -+ * Makefile.in: Likewise. -+ * include/Makefile.in: Likewise. -+ * testsuite/Makefile.in: Likewise. -+ * fficonfig.h.in: Likewise. -+ -+2003-10-21 Paolo Bonzini -+ Richard Henderson -+ -+ Avoid that ffi.h includes fficonfig.h. -+ -+ * Makefile.am (EXTRA_DIST): Include ffitarget.h files -+ (TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX. -+ (TARGET_SRC_MIPS_SGI): Removed. -+ (MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX. -+ (MIPS_SGI): Removed. -+ (CLEANFILES): Removed. -+ (mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New -+ targets. -+ * acconfig.h: Removed. -+ * configure.in: Compute sizeofs only for double and long double. -+ Use them to define and subst HAVE_LONG_DOUBLE. Include comments -+ into AC_DEFINE instead of using acconfig.h. Create -+ include/ffitarget.h instead of include/fficonfig.h. Rename -+ MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree. -+ AC_DEFINE EH_FRAME_FLAGS. -+ * include/Makefile.am (DISTCLEANFILES): New automake macro. -+ (hack_DATA): Add ffitarget.h. -+ * include/ffi.h.in: Remove all system specific definitions. -+ Declare raw API even if it is not installed, why bother? -+ Use limits.h instead of SIZEOF_* to define ffi_type_*. Do -+ not define EH_FRAME_FLAGS, it is in fficonfig.h now. Include -+ ffitarget.h instead of fficonfig.h. Remove ALIGN macro. -+ (UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead. -+ * include/ffi_common.h (bool): Do not define. -+ (ffi_assert): Accept failed assertion. -+ (ffi_type_test): Return void and accept file/line. -+ (FFI_ASSERT): Pass stringized failed assertion. -+ (FFI_ASSERT_AT): New macro. -+ (FFI_ASSERT_VALID_TYPE): New macro. -+ (UINT8, SINT8, UINT16, SINT16, UINT32, SINT32, -+ UINT64, SINT64): Define here with gcc's __attribute__ macro -+ instead of in ffi.h -+ (FLOAT32, ALIGN): Define here instead of in ffi.h -+ * include/ffi-mips.h: Removed. Its content moved to -+ src/mips/ffitarget.h after separating assembly and C sections. -+ * src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c -+ src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c, -+ src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S, -+ src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c: -+ SIZEOF_ARG -> FFI_SIZEOF_ARG. -+ * src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+). -+ * src/debug.c (ffi_assert): Accept stringized failed assertion. -+ (ffi_type_test): Rewritten. -+ * src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call -+ FFI_ASSERT_VALID_TYPE. -+ * src/alpha/ffitarget.h, src/arm/ffitarget.h, -+ src/ia64/ffitarget.h, src/m68k/ffitarget.h, -+ src/mips/ffitarget.h, src/powerpc/ffitarget.h, -+ src/s390/ffitarget.h, src/sh/ffitarget.h, -+ src/sh64/ffitarget.h, src/sparc/ffitarget.h, -+ src/x86/ffitarget.h: New files. -+ * src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S, -+ src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S, -+ src/powerpc/aix.S, src/powerpc/darwin.S, -+ src/powerpc/ffi_darwin.c, src/powerpc/linux64.S, -+ src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S, -+ src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S, -+ src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S, -+ src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S: -+ include fficonfig.h -+ -+2003-10-20 Rainer Orth -+ -+ * src/mips/ffi.c: Use _ABIN32, _ABIO32 instead of external -+ _MIPS_SIM_NABI32, _MIPS_SIM_ABI32. -+ -+2003-10-19 Andreas Tobler -+ -+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Declare bytes again. -+ Used when FFI_DEBUG = 1. -+ -+2003-10-14 Alan Modra -+ -+ * src/types.c (double, longdouble): Default POWERPC64 to 8 byte size -+ and align. -+ -+2003-10-06 Rainer Orth -+ -+ * include/ffi_mips.h: Define FFI_MIPS_N32 for N32/N64 ABIs, -+ FFI_MIPS_O32 for O32 ABI. -+ -+2003-10-01 Andreas Tobler -+ -+ * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_64 for -+ SPARC64. Cleanup whitespaces. -+ -+2003-09-19 Andreas Tobler -+ -+ * testsuite/libffi.call/closure_fn0.c: Xfail mips, arm, -+ strongarm, xscale. Cleanup whitespaces. -+ * testsuite/libffi.call/closure_fn1.c: Likewise. -+ * testsuite/libffi.call/closure_fn2.c: Likewise. -+ * testsuite/libffi.call/closure_fn3.c: Likewise. -+ * testsuite/libffi.call/cls_12byte.c: Likewise. -+ * testsuite/libffi.call/cls_16byte.c: Likewise. -+ * testsuite/libffi.call/cls_1_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_20byte.c: Likewise. -+ * testsuite/libffi.call/cls_24byte.c: Likewise. -+ * testsuite/libffi.call/cls_2byte.c: Likewise. -+ * testsuite/libffi.call/cls_3_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_3byte1.c: Likewise. -+ * testsuite/libffi.call/cls_3byte2.c: Likewise. -+ * testsuite/libffi.call/cls_4_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_4byte.c: Likewise. -+ * testsuite/libffi.call/cls_5byte.c: Likewise. -+ * testsuite/libffi.call/cls_6byte.c: Likewise. -+ * testsuite/libffi.call/cls_7byte.c: Likewise. -+ * testsuite/libffi.call/cls_8byte.c: Likewise. -+ * testsuite/libffi.call/cls_double.c: Likewise. -+ * testsuite/libffi.call/cls_float.c: Likewise. -+ * testsuite/libffi.call/cls_uchar.c: Likewise. -+ * testsuite/libffi.call/cls_uint.c: Likewise. -+ * testsuite/libffi.call/cls_ulonglong.c: Likewise. -+ * testsuite/libffi.call/cls_ushort.c: Likewise. -+ * testsuite/libffi.call/nested_struct.c: Likewise. -+ * testsuite/libffi.call/nested_struct1.c: Likewise. -+ * testsuite/libffi.call/problem1.c: Likewise. -+ * testsuite/libffi.special/unwindtest.cc: Likewise. -+ * testsuite/libffi.call/pyobjc-tc.c: Cleanup whitespaces. -+ -+2003-09-18 David Edelsohn -+ -+ * src/powerpc/aix.S: Cleanup whitespaces. -+ * src/powerpc/aix_closure.S: Likewise. -+ -+2003-09-18 Andreas Tobler -+ -+ * src/powerpc/darwin.S: Cleanup whitespaces, comment formatting. -+ * src/powerpc/darwin_closure.S: Likewise. -+ * src/powerpc/ffi_darwin.c: Likewise. -+ -+2003-09-18 Andreas Tobler -+ David Edelsohn -+ -+ * src/types.c (double): Add AIX and Darwin to the right TYPEDEF. -+ * src/powerpc/aix_closure.S: Remove the pointer to the outgoing -+ parameter stack. -+ * src/powerpc/darwin_closure.S: Likewise. -+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures -+ according to the Darwin/AIX ABI. -+ (ffi_prep_cif_machdep): Likewise. -+ (ffi_closure_helper_DARWIN): Likewise. -+ Remove the outgoing parameter stack logic. Simplify the evaluation -+ of the different CASE types. -+ (ffi_prep_clousure): Avoid the casts on lvalues. Change the branch -+ statement in the trampoline code. -+ -+2003-09-18 Kaz Kojima -+ -+ * src/sh/ffi.c (ffi_prep_args): Take account into the alignement -+ for the register size. -+ (ffi_closure_helper_SYSV): Handle the structure return value -+ address correctly. -+ (ffi_closure_helper_SYSV): Return the appropriate type when -+ the registers are used for the structure return value. -+ * src/sh/sysv.S (ffi_closure_SYSV): Fix the stack layout for -+ the 64-bit return value. Update copyright years. -+ -+2003-09-17 Rainer Orth -+ -+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): Search in -+ srcdir for ffi_mips.h. -+ -+2003-09-12 Alan Modra -+ -+ * src/prep_cif.c (initialize_aggregate): Include tail padding in -+ structure size. -+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct -+ placement of float result. -+ * testsuite/libffi.special/unwindtest.cc (closure_test_fn1): Correct -+ cast of "resp" for big-endian 64 bit machines. -+ -+2003-09-11 Alan Modra -+ -+ * src/types.c (double, longdouble): Merge identical SH and ARM -+ typedefs, and add POWERPC64. -+ * src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for -+ struct split over gpr and rest. -+ (ffi_prep_cif_machdep): Correct intarg_count for structures. -+ * src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets. -+ -+2003-09-09 Andreas Tobler -+ -+ * src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct -+ passing correctly. -+ -+2003-09-09 Alan Modra -+ -+ * configure: Regenerate. -+ -+2003-09-04 Andreas Tobler -+ -+ * Makefile.am: Remove build rules for ffitest. -+ * Makefile.in: Rebuilt. -+ -+2003-09-04 Andreas Tobler -+ -+ * src/java_raw_api.c: Include to fix compiler warning -+ about implicit declaration of abort(). -+ -+2003-09-04 Andreas Tobler -+ -+ * Makefile.am: Add dejagnu test framework. Fixes PR other/11411. -+ * Makefile.in: Rebuilt. -+ * configure.in: Add dejagnu test framework. -+ * configure: Rebuilt. -+ -+ * testsuite/Makefile.am: New file. -+ * testsuite/Makefile.in: Built -+ * testsuite/lib/libffi-dg.exp: New file. -+ * testsuite/config/default.exp: Likewise. -+ * testsuite/libffi.call/call.exp: Likewise. -+ * testsuite/libffi.call/ffitest.h: Likewise. -+ * testsuite/libffi.call/closure_fn0.c: Likewise. -+ * testsuite/libffi.call/closure_fn1.c: Likewise. -+ * testsuite/libffi.call/closure_fn2.c: Likewise. -+ * testsuite/libffi.call/closure_fn3.c: Likewise. -+ * testsuite/libffi.call/cls_1_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_3_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_4_1byte.c: Likewise. -+ * testsuite/libffi.call/cls_2byte.c: Likewise. -+ * testsuite/libffi.call/cls_3byte1.c: Likewise. -+ * testsuite/libffi.call/cls_3byte2.c: Likewise. -+ * testsuite/libffi.call/cls_4byte.c: Likewise. -+ * testsuite/libffi.call/cls_5byte.c: Likewise. -+ * testsuite/libffi.call/cls_6byte.c: Likewise. -+ * testsuite/libffi.call/cls_7byte.c: Likewise. -+ * testsuite/libffi.call/cls_8byte.c: Likewise. -+ * testsuite/libffi.call/cls_12byte.c: Likewise. -+ * testsuite/libffi.call/cls_16byte.c: Likewise. -+ * testsuite/libffi.call/cls_20byte.c: Likewise. -+ * testsuite/libffi.call/cls_24byte.c: Likewise. -+ * testsuite/libffi.call/cls_double.c: Likewise. -+ * testsuite/libffi.call/cls_float.c: Likewise. -+ * testsuite/libffi.call/cls_uchar.c: Likewise. -+ * testsuite/libffi.call/cls_uint.c: Likewise. -+ * testsuite/libffi.call/cls_ulonglong.c: Likewise. -+ * testsuite/libffi.call/cls_ushort.c: Likewise. -+ * testsuite/libffi.call/float.c: Likewise. -+ * testsuite/libffi.call/float1.c: Likewise. -+ * testsuite/libffi.call/float2.c: Likewise. -+ * testsuite/libffi.call/many.c: Likewise. -+ * testsuite/libffi.call/many_win32.c: Likewise. -+ * testsuite/libffi.call/nested_struct.c: Likewise. -+ * testsuite/libffi.call/nested_struct1.c: Likewise. -+ * testsuite/libffi.call/pyobjc-tc.c: Likewise. -+ * testsuite/libffi.call/problem1.c: Likewise. -+ * testsuite/libffi.call/promotion.c: Likewise. -+ * testsuite/libffi.call/return_ll.c: Likewise. -+ * testsuite/libffi.call/return_sc.c: Likewise. -+ * testsuite/libffi.call/return_uc.c: Likewise. -+ * testsuite/libffi.call/strlen.c: Likewise. -+ * testsuite/libffi.call/strlen_win32.c: Likewise. -+ * testsuite/libffi.call/struct1.c: Likewise. -+ * testsuite/libffi.call/struct2.c: Likewise. -+ * testsuite/libffi.call/struct3.c: Likewise. -+ * testsuite/libffi.call/struct4.c: Likewise. -+ * testsuite/libffi.call/struct5.c: Likewise. -+ * testsuite/libffi.call/struct6.c: Likewise. -+ * testsuite/libffi.call/struct7.c: Likewise. -+ * testsuite/libffi.call/struct8.c: Likewise. -+ * testsuite/libffi.call/struct9.c: Likewise. -+ * testsuite/libffi.special/special.exp: New file. -+ * testsuite/libffi.special/ffitestcxx.h: Likewise. -+ * testsuite/libffi.special/unwindtest.cc: Likewise. -+ -+ -+2003-08-13 Kaz Kojima -+ -+ * src/sh/ffi.c (OFS_INT16): Set 0 for little endian case. Update -+ copyright years. -+ -+2003-08-02 Alan Modra -+ -+ * src/powerpc/ffi.c (ffi_prep_args64): Modify for changed gcc -+ structure passing. -+ (ffi_closure_helper_LINUX64): Likewise. -+ * src/powerpc/linux64.S: Remove code writing to parm save area. -+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Use return -+ address in lr from ffi_closure_helper_LINUX64 call to calculate -+ table address. Optimize function tail. -+ -+2003-07-28 Andreas Tobler -+ -+ * src/sparc/ffi.c: Handle all floating point registers. -+ * src/sparc/v9.S: Likewise. Fixes second part of PR target/11410. -+ -+2003-07-11 Gerald Pfeifer -+ -+ * README: Note that libffi is not part of GCC. Update the project -+ URL and status. -+ -+2003-06-19 Franz Sirl -+ -+ * src/powerpc/ppc_closure.S: Include ffi.h. -+ -+2003-06-13 Rainer Orth -+ -+ * src/x86/sysv.S: Avoid gas-only .uleb128/.sleb128 directives. -+ Use C style comments. -+ -+2003-06-13 Kaz Kojima -+ -+ * Makefile.am: Add SHmedia support. Fix a typo of SH support. -+ * Makefile.in: Regenerate. -+ * configure.in (sh64-*-linux*, sh5*-*-linux*): Add target. -+ * configure: Regenerate. -+ * include/ffi.h.in: Add SHmedia support. -+ * src/sh64/ffi.c: New file. -+ * src/sh64/sysv.S: New file. -+ -+2003-05-16 Jakub Jelinek -+ -+ * configure.in (HAVE_RO_EH_FRAME): Check whether .eh_frame section -+ should be read-only. -+ * configure: Rebuilt. -+ * fficonfig.h.in: Rebuilt. -+ * include/ffi.h.in (EH_FRAME_FLAGS): Define. -+ * src/alpha/osf.S: Use EH_FRAME_FLAGS. -+ * src/powerpc/linux64.S: Likewise. -+ * src/powerpc/linux64_closure.S: Likewise. Include ffi.h. -+ * src/powerpc/sysv.S: Use EH_FRAME_FLAGS. Use pcrel encoding -+ if -fpic/-fPIC/-mrelocatable. -+ * src/powerpc/powerpc_closure.S: Likewise. -+ * src/sparc/v8.S: If HAVE_RO_EH_FRAME is defined, don't include -+ #write in .eh_frame flags. -+ * src/sparc/v9.S: Likewise. -+ * src/x86/unix64.S: Use EH_FRAME_FLAGS. -+ * src/x86/sysv.S: Likewise. Use pcrel encoding if -fpic/-fPIC. -+ * src/s390/sysv.S: Use EH_FRAME_FLAGS. Include ffi.h. -+ -+2003-05-07 Jeff Sturm -+ -+ Fixes PR bootstrap/10656 -+ * configure.in (HAVE_AS_REGISTER_PSEUDO_OP): Test assembler -+ support for .register pseudo-op. -+ * src/sparc/v8.S: Use it. -+ * fficonfig.h.in: Rebuilt. -+ * configure: Rebuilt. -+ -+2003-04-18 Jakub Jelinek -+ -+ * include/ffi.h.in (POWERPC64): Define if 64-bit. -+ (enum ffi_abi): Add FFI_LINUX64 on POWERPC. -+ Make it the default on POWERPC64. -+ (FFI_TRAMPOLINE_SIZE): Define to 24 on POWERPC64. -+ * configure.in: Change powerpc-*-linux* into powerpc*-*-linux*. -+ * configure: Rebuilt. -+ * src/powerpc/ffi.c (hidden): Define. -+ (ffi_prep_args_SYSV): Renamed from -+ ffi_prep_args. Cast pointers to unsigned long to shut up warnings. -+ (NUM_GPR_ARG_REGISTERS64, NUM_FPR_ARG_REGISTERS64, -+ ASM_NEEDS_REGISTERS64): New. -+ (ffi_prep_args64): New function. -+ (ffi_prep_cif_machdep): Handle FFI_LINUX64 ABI. -+ (ffi_call): Likewise. -+ (ffi_prep_closure): Likewise. -+ (flush_icache): Surround by #ifndef POWERPC64. -+ (ffi_dblfl): New union type. -+ (ffi_closure_helper_SYSV): Use it to avoid aliasing problems. -+ (ffi_closure_helper_LINUX64): New function. -+ * src/powerpc/ppc_closure.S: Surround whole file by #ifndef -+ __powerpc64__. -+ * src/powerpc/sysv.S: Likewise. -+ (ffi_call_SYSV): Rename ffi_prep_args to ffi_prep_args_SYSV. -+ * src/powerpc/linux64.S: New file. -+ * src/powerpc/linux64_closure.S: New file. -+ * Makefile.am (EXTRA_DIST): Add src/powerpc/linux64.S and -+ src/powerpc/linux64_closure.S. -+ (TARGET_SRC_POWERPC): Likewise. -+ -+ * src/ffitest.c (closure_test_fn, closure_test_fn1, closure_test_fn2, -+ closure_test_fn3): Fix result printing on big-endian 64-bit -+ machines. -+ (main): Print tst2_arg instead of uninitialized tst2_result. -+ -+ * src/ffitest.c (main): Hide what closure pointer really points to -+ from the compiler. -+ -+2003-04-16 Richard Earnshaw -+ -+ * configure.in (arm-*-netbsdelf*): Add configuration. -+ (configure): Regenerated. -+ -+2003-04-04 Loren J. Rittle -+ -+ * include/Makefile.in: Regenerate. -+ -+2003-03-21 Zdenek Dvorak -+ -+ * libffi/include/ffi.h.in: Define X86 instead of X86_64 in 32 -+ bit mode. -+ * libffi/src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): -+ Receive closure pointer through parameter, read args using -+ __builtin_dwarf_cfa. -+ (FFI_INIT_TRAMPOLINE): Send closure reference through eax. -+ -+2003-03-12 Andreas Schwab -+ -+ * configure.in: Avoid trailing /. in toolexeclibdir. -+ * configure: Rebuilt. -+ -+2003-03-03 Andreas Tobler -+ -+ * src/powerpc/darwin_closure.S: Recode to fit dynamic libraries. -+ -+2003-02-06 Andreas Tobler -+ -+ * libffi/src/powerpc/darwin_closure.S: -+ Fix alignement bug, allocate 8 bytes for the result. -+ * libffi/src/powerpc/aix_closure.S: -+ Likewise. -+ * libffi/src/powerpc/ffi_darwin.c: -+ Update stackframe description for aix/darwin_closure.S. -+ -+2003-02-06 Jakub Jelinek -+ -+ * src/s390/ffi.c (ffi_closure_helper_SYSV): Add hidden visibility -+ attribute. -+ -+2003-01-31 Christian Cornelssen , -+ Andreas Schwab -+ -+ * configure.in: Adjust command to source config-ml.in to account -+ for changes to the libffi_basedir definition. -+ (libffi_basedir): Remove ${srcdir} from value and include trailing -+ slash if nonempty. -+ -+ * configure: Regenerate. -+ -+2003-01-29 Franz Sirl -+ -+ * src/powerpc/ppc_closure.S: Recode to fit shared libs. -+ -+2003-01-28 Andrew Haley -+ -+ * include/ffi.h.in: Enable FFI_CLOSURES for x86_64. -+ * src/x86/ffi64.c (ffi_prep_closure): New. -+ (ffi_closure_UNIX64_inner): New. -+ * src/x86/unix64.S (ffi_closure_UNIX64): New. -+ -+2003-01-27 Alexandre Oliva -+ -+ * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST. -+ Remove USE_LIBDIR conditional. -+ * Makefile.am (toolexecdir, toolexeclibdir): Don't override. -+ * Makefile.in, configure: Rebuilt. -+ -+2003-01027 David Edelsohn -+ -+ * Makefile.am (TARGET_SRC_POWERPC_AIX): Fix typo. -+ * Makefile.in: Regenerate. -+ -+2003-01-22 Andrew Haley -+ -+ * src/powerpc/darwin.S (_ffi_call_AIX): Add Augmentation size to -+ unwind info. -+ -+2003-01-21 Andreas Tobler -+ -+ * src/powerpc/darwin.S: Add unwind info. -+ * src/powerpc/darwin_closure.S: Likewise. -+ -+2003-01-14 Andrew Haley -+ -+ * src/x86/ffi64.c (ffi_prep_args): Check for void retval. -+ (ffi_prep_cif_machdep): Likewise. -+ * src/x86/unix64.S: Add unwind info. -+ -+2003-01-14 Andreas Jaeger -+ -+ * src/ffitest.c (main): Only use ffi_closures if those are -+ supported. -+ -+2003-01-13 Andreas Tobler -+ -+ * libffi/src/ffitest.c -+ add closure testcases -+ -+2003-01-13 Kevin B. Hendricks -+ -+ * libffi/src/powerpc/ffi.c -+ fix alignment bug for float (4 byte aligned iso 8 byte) -+ -+2003-01-09 Geoffrey Keating -+ -+ * src/powerpc/ffi_darwin.c: Remove RCS version string. -+ * src/powerpc/darwin.S: Remove RCS version string. -+ -+2003-01-03 Jeff Sturm -+ -+ * include/ffi.h.in: Add closure defines for SPARC, SPARC64. -+ * src/ffitest.c (main): Use static storage for closure. -+ * src/sparc/ffi.c (ffi_prep_closure, ffi_closure_sparc_inner): New. -+ * src/sparc/v8.S (ffi_closure_v8): New. -+ * src/sparc/v9.S (ffi_closure_v9): New. -+ -+2002-11-10 Ranjit Mathew -+ -+ * include/ffi.h.in: Added FFI_STDCALL ffi_type -+ enumeration for X86_WIN32. -+ * src/x86/win32.S: Added ffi_call_STDCALL function -+ definition. -+ * src/x86/ffi.c (ffi_call/ffi_raw_call): Added -+ switch cases for recognising FFI_STDCALL and -+ calling ffi_call_STDCALL if target is X86_WIN32. -+ * src/ffitest.c (my_stdcall_strlen/stdcall_many): -+ stdcall versions of the "my_strlen" and "many" -+ test functions (for X86_WIN32). -+ Added test cases to test stdcall invocation using -+ these functions. -+ -+2002-12-02 Kaz Kojima -+ -+ * src/sh/sysv.S: Add DWARF2 unwind info. -+ -+2002-11-27 Ulrich Weigand -+ -+ * src/s390/sysv.S (.eh_frame section): Make section read-only. -+ -+2002-11-26 Jim Wilson -+ -+ * src/types.c (FFI_TYPE_POINTER): Has size 8 on IA64. -+ -+2002-11-23 H.J. Lu -+ -+ * acinclude.m4: Add dummy AM_PROG_LIBTOOL. -+ Include ../config/accross.m4. -+ * aclocal.m4; Rebuild. -+ * configure: Likewise. -+ -+2002-11-15 Ulrich Weigand -+ -+ * src/s390/sysv.S (.eh_frame section): Adapt to pcrel FDE encoding. -+ -+2002-11-11 DJ Delorie -+ -+ * configure.in: Look for common files in the right place. -+ -+2002-10-08 Ulrich Weigand -+ -+ * src/java_raw_api.c (ffi_java_raw_to_ptrarray): Interpret -+ raw data as _Jv_word values, not ffi_raw. -+ (ffi_java_ptrarray_to_raw): Likewise. -+ (ffi_java_rvalue_to_raw): New function. -+ (ffi_java_raw_call): Call it. -+ (ffi_java_raw_to_rvalue): New function. -+ (ffi_java_translate_args): Call it. -+ * src/ffitest.c (closure_test_fn): Interpret return value -+ as ffi_arg, not int. -+ * src/s390/ffi.c (ffi_prep_cif_machdep): Add missing -+ FFI_TYPE_POINTER case. -+ (ffi_closure_helper_SYSV): Likewise. Also, assume return -+ values extended to word size. -+ -+2002-10-02 Andreas Jaeger -+ -+ * src/x86/ffi64.c (ffi_prep_cif_machdep): Remove debug output. -+ -+2002-10-01 Bo Thorsen -+ -+ * include/ffi.h.in: Fix i386 win32 compilation. -+ -+2002-09-30 Ulrich Weigand -+ -+ * configure.in: Add s390x-*-linux-* target. -+ * configure: Regenerate. -+ * include/ffi.h.in: Define S390X for s390x targets. -+ (FFI_CLOSURES): Define for s390/s390x. -+ (FFI_TRAMPOLINE_SIZE): Likewise. -+ (FFI_NATIVE_RAW_API): Likewise. -+ * src/prep_cif.c (ffi_prep_cif): Do not compute stack space for s390. -+ * src/types.c (FFI_TYPE_POINTER): Use 8-byte pointers on s390x. -+ * src/s390/ffi.c: Major rework of existing code. Add support for -+ s390x targets. Add closure support. -+ * src/s390/sysv.S: Likewise. -+ -+2002-09-29 Richard Earnshaw -+ -+ * src/arm/sysv.S: Fix typo. -+ -+2002-09-28 Richard Earnshaw -+ -+ * src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor -+ has defined __USER_LABEL_PREFIX__, then use it in CNAME. -+ (ffi_call_SYSV): Handle soft-float. -+ -+2002-09-27 Bo Thorsen -+ -+ * include/ffi.h.in: Fix multilib x86-64 support. -+ -+2002-09-22 Kaveh R. Ghazi -+ -+ * Makefile.am (all-multi): Fix multilib parallel build. -+ -+2002-07-19 Kaz Kojima -+ -+ * configure.in (sh[34]*-*-linux*): Add brackets. -+ * configure: Regenerate. -+ -+2002-07-18 Kaz Kojima -+ -+ * Makefile.am: Add SH support. -+ * Makefile.in: Regenerate. -+ * configure.in (sh-*-linux*, sh[34]*-*-linux*): Add target. -+ * configure: Regenerate. -+ * include/ffi.h.in: Add SH support. -+ * src/sh/ffi.c: New file. -+ * src/sh/sysv.S: New file. -+ * src/types.c: Add SH support. -+ -+2002-07-16 Bo Thorsen -+ -+ * src/x86/ffi64.c: New file that adds x86-64 support. -+ * src/x86/unix64.S: New file that handles argument setup for -+ x86-64. -+ * src/x86/sysv.S: Don't use this on x86-64. -+ * src/x86/ffi.c: Don't use this on x86-64. -+ Remove unused vars. -+ * src/prep_cif.c (ffi_prep_cif): Don't do stack size calculation -+ for x86-64. -+ * src/ffitest.c (struct6): New test that tests a special case in -+ the x86-64 ABI. -+ (struct7): Likewise. -+ (struct8): Likewise. -+ (struct9): Likewise. -+ (closure_test_fn): Silence warning about this when it's not used. -+ (main): Add the new tests. -+ (main): Fix a couple of wrong casts and silence some compiler warnings. -+ * include/ffi.h.in: Add x86-64 ABI definition. -+ * fficonfig.h.in: Regenerate. -+ * Makefile.am: Add x86-64 support. -+ * configure.in: Likewise. -+ * Makefile.in: Regenerate. -+ * configure: Likewise. -+ -+2002-06-24 Bo Thorsen -+ -+ * src/types.c: Merge settings for similar architectures. -+ Add x86-64 sizes and alignments. -+ -+2002-06-23 Bo Thorsen -+ -+ * src/arm/ffi.c (ffi_prep_args): Remove unused vars. -+ * src/sparc/ffi.c (ffi_prep_args_v8): Likewise. -+ * src/mips/ffi.c (ffi_prep_args): Likewise. -+ * src/m68k/ffi.c (ffi_prep_args): Likewise. -+ -+2002-07-18 H.J. Lu (hjl@gnu.org) -+ -+ * Makefile.am (TARGET_SRC_MIPS_LINUX): New. -+ (libffi_la_SOURCES): Support MIPS_LINUX. -+ (libffi_convenience_la_SOURCES): Likewise. -+ * Makefile.in: Regenerated. -+ -+ * configure.in (mips64*-*): Skip. -+ (mips*-*-linux*): New. -+ * configure: Regenerated. -+ -+ * src/mips/ffi.c: Include . -+ -+2002-06-06 Ulrich Weigand -+ -+ * src/s390/sysv.S: Save/restore %r6. Add DWARF-2 unwind info. -+ -+2002-05-27 Roger Sayle -+ -+ * src/x86/ffi.c (ffi_prep_args): Remove reference to avn. -+ -+2002-05-27 Bo Thorsen -+ -+ * src/x86/ffi.c (ffi_prep_args): Remove unused variable and -+ fix formatting. -+ -+2002-05-13 Andreas Tobler -+ -+ * src/powerpc/ffi_darwin.c (ffi_prep_closure): Declare fd at -+ beginning of function (for older apple cc). -+ -+2002-05-08 Alexandre Oliva -+ -+ * configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at -+ script entry, and set LD to it when configuring multilibs. -+ * configure: Rebuilt. -+ -+2002-05-05 Jason Thorpe -+ -+ * configure.in (sparc64-*-netbsd*): Add target. -+ (sparc-*-netbsdelf*): Likewise. -+ * configure: Regenerate. -+ -+2002-04-28 David S. Miller -+ -+ * configure.in, configure: Fix SPARC test in previous change. -+ -+2002-04-29 Gerhard Tonn -+ -+ * Makefile.am: Add Linux for S/390 support. -+ * Makefile.in: Regenerate. -+ * configure.in: Add Linux for S/390 support. -+ * configure: Regenerate. -+ * include/ffi.h.in: Add Linux for S/390 support. -+ * src/s390/ffi.c: New file from libffi CVS tree. -+ * src/s390/sysv.S: New file from libffi CVS tree. -+ -+2002-04-28 Jakub Jelinek -+ -+ * configure.in (HAVE_AS_SPARC_UA_PCREL): Check for working -+ %r_disp32(). -+ * src/sparc/v8.S: Use it. -+ * src/sparc/v9.S: Likewise. -+ * fficonfig.h.in: Rebuilt. -+ * configure: Rebuilt. -+ -+2002-04-08 Hans Boehm -+ -+ * src/java_raw_api.c (ffi_java_raw_size): Handle FFI_TYPE_DOUBLE -+ correctly. -+ * src/ia64/unix.S: Add unwind information. Fix comments. -+ Save sp in a way that's compatible with unwind info. -+ (ffi_call_unix): Correctly restore sp in all cases. -+ * src/ia64/ffi.c: Add, fix comments. -+ -+2002-04-08 Jakub Jelinek -+ -+ * src/sparc/v8.S: Make .eh_frame dependent on target word size. -+ -+2002-04-06 Jason Thorpe -+ -+ * configure.in (alpha*-*-netbsd*): Add target. -+ * configure: Regenerate. -+ -+2002-04-04 Jeff Sturm -+ -+ * src/sparc/v8.S: Add unwind info. -+ * src/sparc/v9.S: Likewise. -+ -+2002-03-30 Krister Walfridsson -+ -+ * configure.in: Enable i*86-*-netbsdelf*. -+ * configure: Rebuilt. -+ -+2002-03-29 David Billinghurst -+ -+ PR other/2620 -+ * src/mips/n32.s: Delete -+ * src/mips/o32.s: Delete -+ -+2002-03-21 Loren J. Rittle -+ -+ * configure.in: Enable alpha*-*-freebsd*. -+ * configure: Rebuilt. -+ -+2002-03-17 Bryce McKinlay -+ -+ * Makefile.am: libfficonvenience -> libffi_convenience. -+ * Makefile.in: Rebuilt. -+ -+ * Makefile.am: Define ffitest_OBJECTS. -+ * Makefile.in: Rebuilt. -+ -+2002-03-07 Andreas Tobler -+ David Edelsohn -+ -+ * Makefile.am (EXTRA_DIST): Add Darwin and AIX closure files. -+ (TARGET_SRC_POWERPC_AIX): Add aix_closure.S. -+ (TARGET_SRC_POWERPC_DARWIN): Add darwin_closure.S. -+ * Makefile.in: Regenerate. -+ * include/ffi.h.in: Add AIX and Darwin closure definitions. -+ * src/powerpc/ffi_darwin.c (ffi_prep_closure): New function. -+ (flush_icache, flush_range): New functions. -+ (ffi_closure_helper_DARWIN): New function. -+ * src/powerpc/aix_closure.S: New file. -+ * src/powerpc/darwin_closure.S: New file. -+ -+2002-02-24 Jeff Sturm -+ -+ * include/ffi.h.in: Add typedef for ffi_arg. -+ * src/ffitest.c (main): Declare rint with ffi_arg. -+ -+2002-02-21 Andreas Tobler -+ -+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Skip appropriate -+ number of GPRs for floating-point arguments. -+ -+2002-01-31 Anthony Green -+ -+ * configure: Rebuilt. -+ * configure.in: Replace CHECK_SIZEOF and endian tests with -+ cross-compiler friendly macros. -+ * aclocal.m4 (AC_COMPILE_CHECK_SIZEOF, AC_C_BIGENDIAN_CROSS): New -+ macros. -+ -+2002-01-18 David Edelsohn -+ -+ * src/powerpc/darwin.S (_ffi_call_AIX): New. -+ * src/powerpc/aix.S (ffi_call_DARWIN): New. -+ -+2002-01-17 David Edelsohn -+ -+ * Makefile.am (EXTRA_DIST): Add Darwin and AIX files. -+ (TARGET_SRC_POWERPC_AIX): New. -+ (POWERPC_AIX): New stanza. -+ * Makefile.in: Regenerate. -+ * configure.in: Add AIX case. -+ * configure: Regenerate. -+ * include/ffi.h.in (ffi_abi): Add FFI_AIX. -+ * src/powerpc/ffi_darwin.c (ffi_status): Use "long" to scale frame -+ size. Fix "long double" support. -+ (ffi_call): Add FFI_AIX case. -+ * src/powerpc/aix.S: New. -+ -+2001-10-09 John Hornkvist -+ -+ Implement Darwin PowerPC ABI. -+ * configure.in: Handle powerpc-*-darwin*. -+ * Makefile.am: Set source files for POWERPC_DARWIN. -+ * configure: Rebuilt. -+ * Makefile.in: Rebuilt. -+ * include/ffi.h.in: Define FFI_DARWIN and FFI_DEFAULT_ABI for -+ POWERPC_DARWIN. -+ * src/powerpc/darwin.S: New file. -+ * src/powerpc/ffi_darwin.c: New file. -+ -+2001-10-07 Joseph S. Myers -+ -+ * src/x86/ffi.c: Fix spelling error of "separate" as "seperate". -+ -+2001-07-16 Rainer Orth -+ -+ * src/x86/sysv.S: Avoid gas-only .balign directive. -+ Use C style comments. -+ -+2001-07-16 Rainer Orth -+ -+ * src/alpha/ffi.c (ffi_prep_closure): Avoid gas-only mnemonic. -+ Fixes PR bootstrap/3563. -+ -+2001-06-26 Rainer Orth -+ -+ * src/alpha/osf.S (ffi_closure_osf): Use .rdata for ECOFF. -+ -+2001-06-25 Rainer Orth -+ -+ * configure.in: Recognize sparc*-sun-* host. -+ * configure: Regenerate. -+ -+2001-06-06 Andrew Haley -+ -+ * src/alpha/osf.S (__FRAME_BEGIN__): Conditionalize for ELF. -+ -+2001-06-03 Andrew Haley -+ -+ * src/alpha/osf.S: Add unwind info. -+ * src/powerpc/sysv.S: Add unwind info. -+ * src/powerpc/ppc_closure.S: Likewise. -+ -+2000-05-31 Jeff Sturm -+ -+ * configure.in: Fix AC_ARG_ENABLE usage. -+ * configure: Rebuilt. -+ -+2001-05-06 Bryce McKinlay -+ -+ * configure.in: Remove warning about beta code. -+ * configure: Rebuilt. -+ -+2001-04-25 Hans Boehm -+ -+ * src/ia64/unix.S: Restore stack pointer when returning from -+ ffi_closure_UNIX. -+ * src/ia64/ffi.c: Fix typo in comment. -+ -+2001-04-18 Jim Wilson -+ -+ * src/ia64/unix.S: Delete unnecessary increment and decrement of loc2 -+ to eliminate RAW DV. -+ -+2001-04-12 Bryce McKinlay -+ -+ * Makefile.am: Make a libtool convenience library. -+ * Makefile.in: Rebuilt. -+ -+2001-03-29 Bryce McKinlay -+ -+ * configure.in: Use different syntax for subdirectory creation. -+ * configure: Rebuilt. -+ -+2001-03-27 Jon Beniston -+ -+ * configure.in: Added X86_WIN32 target (Win32, CygWin, MingW). -+ * configure: Rebuilt. -+ * Makefile.am: Added X86_WIN32 target support. -+ * Makefile.in: Rebuilt. -+ -+ * include/ffi.h.in: Added X86_WIN32 target support. -+ -+ * src/ffitest.c: Doesn't run structure tests for X86_WIN32 targets. -+ * src/types.c: Added X86_WIN32 target support. -+ -+ * src/x86/win32.S: New file. Based on sysv.S, but with EH -+ stuff removed and made to work with CygWin's gas. -+ -+2001-03-26 Bryce McKinlay -+ -+ * configure.in: Make target subdirectory in build dir. -+ * Makefile.am: Override suffix based rules to specify correct output -+ subdirectory. -+ * Makefile.in: Rebuilt. -+ * configure: Rebuilt. -+ -+2001-03-23 Kevin B Hendricks -+ -+ * src/powerpc/ppc_closure.S: New file. -+ * src/powerpc/ffi.c (ffi_prep_args): Fixed ABI compatibility bug -+ involving long long and register pairs. -+ (ffi_prep_closure): New function. -+ (flush_icache): Likewise. -+ (ffi_closure_helper_SYSV): Likewise. -+ * include/ffi.h.in (FFI_CLOSURES): Define on PPC. -+ (FFI_TRAMPOLINE_SIZE): Likewise. -+ (FFI_NATIVE_RAW_API): Likewise. -+ * Makefile.in: Rebuilt. -+ * Makefile.am (EXTRA_DIST): Added src/powerpc/ppc_closure.S. -+ (TARGET_SRC_POWERPC): Likewise. -+ -+2001-03-19 Tom Tromey -+ -+ * Makefile.in: Rebuilt. -+ * Makefile.am (ffitest_LDFLAGS): New macro. -+ -+2001-03-02 Nick Clifton -+ -+ * include/ffi.h.in: Remove RCS ident string. -+ * include/ffi_mips.h: Remove RCS ident string. -+ * src/debug.c: Remove RCS ident string. -+ * src/ffitest.c: Remove RCS ident string. -+ * src/prep_cif.c: Remove RCS ident string. -+ * src/types.c: Remove RCS ident string. -+ * src/alpha/ffi.c: Remove RCS ident string. -+ * src/alpha/osf.S: Remove RCS ident string. -+ * src/arm/ffi.c: Remove RCS ident string. -+ * src/arm/sysv.S: Remove RCS ident string. -+ * src/mips/ffi.c: Remove RCS ident string. -+ * src/mips/n32.S: Remove RCS ident string. -+ * src/mips/o32.S: Remove RCS ident string. -+ * src/sparc/ffi.c: Remove RCS ident string. -+ * src/sparc/v8.S: Remove RCS ident string. -+ * src/sparc/v9.S: Remove RCS ident string. -+ * src/x86/ffi.c: Remove RCS ident string. -+ * src/x86/sysv.S: Remove RCS ident string. -+ -+2001-02-08 Joseph S. Myers -+ -+ * include/ffi.h.in: Change sourceware.cygnus.com references to -+ gcc.gnu.org. -+ -+2000-12-09 Richard Henderson -+ -+ * src/alpha/ffi.c (ffi_call): Simplify struct return test. -+ (ffi_closure_osf_inner): Index rather than increment avalue -+ and arg_types. Give ffi_closure_osf the raw return value type. -+ * src/alpha/osf.S (ffi_closure_osf): Handle return value type -+ promotion. -+ -+2000-12-07 Richard Henderson -+ -+ * src/raw_api.c (ffi_translate_args): Fix typo. -+ (ffi_prep_closure): Likewise. -+ -+ * include/ffi.h.in [ALPHA]: Define FFI_CLOSURES and -+ FFI_TRAMPOLINE_SIZE. -+ * src/alpha/ffi.c (ffi_prep_cif_machdep): Adjust minimal -+ cif->bytes for new ffi_call_osf implementation. -+ (ffi_prep_args): Absorb into ... -+ (ffi_call): ... here. Do all stack allocation here and -+ avoid a callback function. -+ (ffi_prep_closure, ffi_closure_osf_inner): New. -+ * src/alpha/osf.S (ffi_call_osf): Reimplement with no callback. -+ (ffi_closure_osf): New. -+ -+2000-09-10 Alexandre Oliva -+ -+ * config.guess, config.sub, install-sh: Removed. -+ * ltconfig, ltmain.sh, missing, mkinstalldirs: Likewise. -+ * Makefile.in: Rebuilt. -+ -+ * acinclude.m4: Include libtool macros from the top level. -+ * aclocal.m4, configure: Rebuilt. -+ -+2000-08-22 Alexandre Oliva -+ -+ * configure.in [i*86-*-freebsd*] (TARGET, TARGETDIR): Set. -+ * configure: Rebuilt. -+ -+2000-05-11 Scott Bambrough -+ -+ * libffi/src/arm/sysv.S (ffi_call_SYSV): Doubles are not saved to -+ memory correctly. Use conditional instructions, not branches where -+ possible. -+ -+2000-05-04 Tom Tromey -+ -+ * configure: Rebuilt. -+ * configure.in: Match `arm*-*-linux-*'. -+ From Chris Dornan . -+ -+2000-04-28 Jakub Jelinek -+ -+ * Makefile.am (SUBDIRS): Define. -+ (AM_MAKEFLAGS): Likewise. -+ (Multilib support.): Add section. -+ * Makefile.in: Rebuilt. -+ * ltconfig (extra_compiler_flags, extra_compiler_flags_value): -+ New variables. Set for gcc using -print-multi-lib. Export them -+ to libtool. -+ (sparc64-*-linux-gnu*): Use libsuff 64 for search paths. -+ * ltmain.sh (B|b|V): Don't throw away gcc's -B, -b and -V options -+ for -shared links. -+ (extra_compiler_flags_value, extra_compiler_flags): Check these -+ for extra compiler options which need to be passed down in -+ compiler_flags. -+ -+2000-04-16 Anthony Green -+ -+ * configure: Rebuilt. -+ * configure.in: Change i*86-pc-linux* to i*86-*-linux*. -+ -+2000-04-14 Jakub Jelinek -+ -+ * include/ffi.h.in (SPARC64): Define for 64bit SPARC builds. -+ Set SPARC FFI_DEFAULT_ABI based on SPARC64 define. -+ * src/sparc/ffi.c (ffi_prep_args_v8): Renamed from ffi_prep_args. -+ Replace all void * sizeofs with sizeof(int). -+ Only compare type with FFI_TYPE_LONGDOUBLE if LONGDOUBLE is -+ different than DOUBLE. -+ Remove FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases (handled elsewhere). -+ (ffi_prep_args_v9): New function. -+ (ffi_prep_cif_machdep): Handle V9 ABI and long long on V8. -+ (ffi_V9_return_struct): New function. -+ (ffi_call): Handle FFI_V9 ABI from 64bit code and FFI_V8 ABI from -+ 32bit code (not yet cross-arch calls). -+ * src/sparc/v8.S: Add struct return delay nop. -+ Handle long long. -+ * src/sparc/v9.S: New file. -+ * src/prep_cif.c (ffi_prep_cif): Return structure pointer -+ is used on sparc64 only for structures larger than 32 bytes. -+ Pass by reference for structures is done for structure arguments -+ larger than 16 bytes. -+ * src/ffitest.c (main): Use 64bit rint on sparc64. -+ Run long long tests on sparc. -+ * src/types.c (FFI_TYPE_POINTER): Pointer is 64bit on alpha and -+ sparc64. -+ (FFI_TYPE_LONGDOUBLE): long double is 128 bit aligned to 128 bits -+ on sparc64. -+ * configure.in (sparc-*-linux*): New supported target. -+ (sparc64-*-linux*): Likewise. -+ * configure: Rebuilt. -+ * Makefile.am: Add v9.S to SPARC files. -+ * Makefile.in: Likewise. -+ (LINK): Surround $(CCLD) into double quotes, so that multilib -+ compiles work correctly. -+ -+2000-04-04 Alexandre Petit-Bianco -+ -+ * configure: Rebuilt. -+ * configure.in: (i*86-*-solaris*): New libffi target. Patch -+ proposed by Bryce McKinlay. -+ -+2000-03-20 Tom Tromey -+ -+ * Makefile.in: Hand edit for java_raw_api.lo. -+ -+2000-03-08 Bryce McKinlay -+ -+ * config.guess, config.sub: Update from the gcc tree. -+ Fix for PR libgcj/168. -+ -+2000-03-03 Tom Tromey -+ -+ * Makefile.in: Fixed ia64 by hand. -+ -+ * configure: Rebuilt. -+ * configure.in (--enable-multilib): New option. -+ (libffi_basedir): New subst. -+ (AC_OUTPUT): Added multilib code. -+ -+2000-03-02 Tom Tromey -+ -+ * Makefile.in: Rebuilt. -+ * Makefile.am (TARGET_SRC_IA64): Use `ia64', not `alpha', as -+ directory name. -+ -+2000-02-25 Hans Boehm -+ -+ * src/ia64/ffi.c, src/ia64/ia64_flags.h, src/ia64/unix.S: New -+ files. -+ * src/raw_api.c (ffi_translate_args): Fixed typo in argument -+ list. -+ (ffi_prep_raw_closure): Use ffi_translate_args, not -+ ffi_closure_translate. -+ * src/java_raw_api.c: New file. -+ * src/ffitest.c (closure_test_fn): New function. -+ (main): Define `rint' as long long on IA64. Added new test when -+ FFI_CLOSURES is defined. -+ * include/ffi.h.in (ALIGN): Use size_t, not unsigned. -+ (ffi_abi): Recognize IA64. -+ (ffi_raw): Added `flt' field. -+ Added "Java raw API" code. -+ * configure.in: Recognize ia64. -+ * Makefile.am (TARGET_SRC_IA64): New macro. -+ (libffi_la_common_SOURCES): Added java_raw_api.c. -+ (libffi_la_SOURCES): Define in IA64 case. -+ -+2000-01-04 Tom Tromey -+ -+ * Makefile.in: Rebuilt with newer automake. -+ -+1999-12-31 Tom Tromey -+ -+ * Makefile.am (INCLUDES): Added -I$(top_srcdir)/src. -+ -+1999-09-01 Tom Tromey -+ -+ * include/ffi.h.in: Removed PACKAGE and VERSION defines and -+ undefs. -+ * fficonfig.h.in: Rebuilt. -+ * configure: Rebuilt. -+ * configure.in: Pass 3rd argument to AM_INIT_AUTOMAKE. -+ Use AM_PROG_LIBTOOL (automake 1.4 compatibility). -+ * acconfig.h: Don't #undef PACKAGE or VERSION. -+ -+1999-08-09 Anthony Green -+ -+ * include/ffi.h.in: Try to work around messy header problem -+ with PACKAGE and VERSION. -+ -+ * configure: Rebuilt. -+ * configure.in: Change version to 2.00-beta. -+ -+ * fficonfig.h.in: Rebuilt. -+ * acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define. -+ -+ * src/x86/ffi.c (ffi_raw_call): Rename. -+ -+1999-08-02 Kresten Krab Thorup -+ -+ * src/x86/ffi.c (ffi_closure_SYSV): New function. -+ (ffi_prep_incoming_args_SYSV): Ditto. -+ (ffi_prep_closure): Ditto. -+ (ffi_closure_raw_SYSV): Ditto. -+ (ffi_prep_raw_closure): More ditto. -+ (ffi_call_raw): Final ditto. -+ -+ * include/ffi.h.in: Add definitions for closure and raw API. -+ -+ * src/x86/ffi.c (ffi_prep_cif_machdep): Added case for -+ FFI_TYPE_UINT64. -+ -+ * Makefile.am (libffi_la_common_SOURCES): Added raw_api.c -+ -+ * src/raw_api.c: New file. -+ -+ * include/ffi.h.in (ffi_raw): New type. -+ (UINT_ARG, SINT_ARG): New defines. -+ (ffi_closure, ffi_raw_closure): New types. -+ (ffi_prep_closure, ffi_prep_raw_closure): New declarations. -+ -+ * configure.in: Add check for endianness and sizeof void*. -+ -+ * src/x86/sysv.S (ffi_call_SYSV): Call fixup routine via argument, -+ instead of directly. -+ -+ * configure: Rebuilt. -+ -+Thu Jul 8 14:28:42 1999 Anthony Green -+ -+ * configure.in: Add x86 and powerpc BeOS configurations. -+ From Makoto Kato . -+ -+1999-05-09 Anthony Green -+ -+ * configure.in: Add warning about this being beta code. -+ Remove src/Makefile.am from the picture. -+ * configure: Rebuilt. -+ -+ * Makefile.am: Move logic from src/Makefile.am. Add changes -+ to support libffi as a target library. -+ * Makefile.in: Rebuilt. -+ -+ * aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh: -+ Upgraded to new autoconf, automake, libtool. -+ -+ * README: Tweaks. -+ -+ * LICENSE: Update copyright date. -+ -+ * src/Makefile.am, src/Makefile.in: Removed. -+ -+1998-11-29 Anthony Green -+ -+ * include/ChangeLog: Removed. -+ * src/ChangeLog: Removed. -+ * src/mips/ChangeLog: Removed. -+ * src/sparc/ChangeLog: Remboved. -+ * src/x86/ChangeLog: Removed. -+ -+ * ChangeLog.v1: Created. -diff --git a/js/src/ctypes/libffi/ChangeLog.v1 b/js/src/ctypes/libffi/ChangeLog.v1 ---- a/js/src/ctypes/libffi/ChangeLog.v1 -+++ b/js/src/ctypes/libffi/ChangeLog.v1 -@@ -1,13 +1,13 @@ - The libffi version 1 ChangeLog archive. - - Version 1 of libffi had per-directory ChangeLogs. Current and future - versions have a single ChangeLog file in the root directory. The --version 1 ChangeLogs have all been concatonated into this file for -+version 1 ChangeLogs have all been concatenated into this file for - future reference only. - - --- libffi ---------------------------------------------------------------- - - Mon Oct 5 02:17:50 1998 Anthony Green - - * configure.in: Boosted rev. - * configure, Makefile.in, aclocal.m4: Rebuilt. -diff --git a/js/src/ctypes/libffi/LICENSE b/js/src/ctypes/libffi/LICENSE ---- a/js/src/ctypes/libffi/LICENSE -+++ b/js/src/ctypes/libffi/LICENSE -@@ -1,21 +1,21 @@ --libffi - Copyright (c) 1996-2009 Anthony Green, Red Hat, Inc and others. -+libffi - Copyright (c) 1996-2014 Anthony Green, Red Hat, Inc and others. - See source files for details. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - --The above copyright notice and this permission notice shall be included --in all copies or substantial portions of the Software. -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -diff --git a/js/src/ctypes/libffi/Makefile.am b/js/src/ctypes/libffi/Makefile.am ---- a/js/src/ctypes/libffi/Makefile.am -+++ b/js/src/ctypes/libffi/Makefile.am -@@ -1,165 +1,212 @@ - ## Process this with automake to create Makefile.in - - AUTOMAKE_OPTIONS = foreign subdir-objects - -+ACLOCAL_AMFLAGS = -I m4 -+ - SUBDIRS = include testsuite man - --EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \ -- src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \ -- src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h \ -- src/avr32/ffi.c src/avr32/sysv.S src/avr32/ffitarget.h \ -- src/cris/ffi.c src/cris/sysv.S src/cris/ffitarget.h \ -- src/ia64/ffi.c src/ia64/ffitarget.h src/ia64/ia64_flags.h \ -- src/ia64/unix.S \ -- src/mips/ffi.c src/mips/n32.S src/mips/o32.S \ -- src/mips/ffitarget.h \ -- src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \ -- src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \ -- src/powerpc/ffi.c src/powerpc/sysv.S \ -- src/powerpc/linux64.S src/powerpc/linux64_closure.S \ -- src/powerpc/ppc_closure.S src/powerpc/asm.h \ -- src/powerpc/aix.S src/powerpc/darwin.S \ -- src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \ -- src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \ -- src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \ -- src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h \ -- src/sh64/ffi.c src/sh64/sysv.S src/sh64/ffitarget.h \ -- src/sparc/v8.S src/sparc/v9.S src/sparc/ffitarget.h \ -- src/sparc/ffi.c src/x86/darwin64.S \ -- src/x86/ffi.c src/x86/sysv.S src/x86/win32.S src/x86/win64.S \ -- src/x86/darwin.S src/x86/freebsd.S \ -- src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h \ -- src/pa/ffitarget.h src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \ -- src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c \ -- libtool-version ChangeLog.libffi m4/libtool.m4 \ -- m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 -+EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj \ -+ src/aarch64/ffi.c src/aarch64/ffitarget.h src/aarch64/sysv.S \ -+ src/alpha/ffi.c src/alpha/osf.S \ -+ src/alpha/ffitarget.h src/arc/ffi.c src/arc/arcompact.S \ -+ src/arc/ffitarget.h src/arm/ffi.c src/arm/sysv.S \ -+ src/arm/ffitarget.h src/avr32/ffi.c src/avr32/sysv.S \ -+ src/avr32/ffitarget.h src/cris/ffi.c src/cris/sysv.S \ -+ src/cris/ffitarget.h src/ia64/ffi.c src/ia64/ffitarget.h \ -+ src/ia64/ia64_flags.h src/ia64/unix.S src/mips/ffi.c \ -+ src/mips/n32.S src/mips/o32.S src/metag/ffi.c \ -+ src/metag/ffitarget.h src/metag/sysv.S src/moxie/ffi.c \ -+ src/moxie/ffitarget.h src/moxie/eabi.S src/mips/ffitarget.h \ -+ src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \ -+ src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \ -+ src/m88k/ffi.c src/m88k/obsd.S src/m88k/ffitarget.h \ -+ src/microblaze/ffi.c src/microblaze/sysv.S \ -+ src/microblaze/ffitarget.h \ -+ src/nios2/ffi.c src/nios2/ffitarget.h src/nios2/sysv.S \ -+ src/powerpc/ffi.c src/powerpc/ffi_powerpc.h \ -+ src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c \ -+ src/powerpc/sysv.S src/powerpc/linux64.S \ -+ src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S \ -+ src/powerpc/asm.h src/powerpc/aix.S src/powerpc/darwin.S \ -+ src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \ -+ src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \ -+ src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \ -+ src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h src/sh64/ffi.c \ -+ src/sh64/sysv.S src/sh64/ffitarget.h src/sparc/v8.S \ -+ src/sparc/v9.S src/sparc/ffitarget.h src/sparc/ffi.c \ -+ src/x86/darwin64.S src/x86/ffi.c src/x86/sysv.S \ -+ src/x86/win32.S src/x86/darwin.S src/x86/win64.S \ -+ src/x86/freebsd.S src/x86/ffi64.c src/x86/unix64.S \ -+ src/x86/ffitarget.h src/pa/ffitarget.h src/pa/ffi.c \ -+ src/pa/linux.S src/pa/hpux32.S src/frv/ffi.c src/bfin/ffi.c \ -+ src/bfin/ffitarget.h src/bfin/sysv.S src/frv/eabi.S \ -+ src/frv/ffitarget.h src/dlmalloc.c src/tile/ffi.c \ -+ src/tile/ffitarget.h src/tile/tile.S libtool-version \ -+ src/vax/ffi.c src/vax/ffitarget.h src/vax/elfbsd.S \ -+ src/xtensa/ffitarget.h src/xtensa/ffi.c src/xtensa/sysv.S \ -+ ChangeLog.libffi m4/libtool.m4 m4/lt~obsolete.m4 \ -+ m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 \ -+ m4/ltversion.m4 src/arm/gentramp.sh src/debug.c msvcc.sh \ -+ generate-darwin-source-and-headers.py \ -+ libffi.xcodeproj/project.pbxproj src/arm/trampoline.S \ -+ libtool-ldflags ChangeLog.libffi-3.1 - - info_TEXINFOS = doc/libffi.texi - - ## ################################################################ - - ## - ## This section is for make and multilib madness. - ## - - # Work around what appears to be a GNU make bug handling MAKEFLAGS - # values defined in terms of make variables, as is the case for CC and - # friends when we are called from the top level Makefile. - AM_MAKEFLAGS = \ -- "AR_FLAGS=$(AR_FLAGS)" \ -- "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ -- "CFLAGS=$(CFLAGS)" \ -- "CXXFLAGS=$(CXXFLAGS)" \ -- "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ -- "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ -- "INSTALL=$(INSTALL)" \ -- "INSTALL_DATA=$(INSTALL_DATA)" \ -- "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ -- "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ -- "JC1FLAGS=$(JC1FLAGS)" \ -- "LDFLAGS=$(LDFLAGS)" \ -- "LIBCFLAGS=$(LIBCFLAGS)" \ -- "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ -- "MAKE=$(MAKE)" \ -- "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ -- "PICFLAG=$(PICFLAG)" \ -- "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ -- "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ -- "SHELL=$(SHELL)" \ -- "exec_prefix=$(exec_prefix)" \ -- "infodir=$(infodir)" \ -- "libdir=$(libdir)" \ -- "mandir=$(mandir)" \ -- "prefix=$(prefix)" \ -- "AR=$(AR)" \ -- "AS=$(AS)" \ -- "CC=$(CC)" \ -- "CXX=$(CXX)" \ -- "LD=$(LD)" \ -- "NM=$(NM)" \ -- "RANLIB=$(RANLIB)" \ -- "DESTDIR=$(DESTDIR)" -+ 'AR_FLAGS=$(AR_FLAGS)' \ -+ 'CC_FOR_BUILD=$(CC_FOR_BUILD)' \ -+ 'CFLAGS=$(CFLAGS)' \ -+ 'CXXFLAGS=$(CXXFLAGS)' \ -+ 'CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)' \ -+ 'CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)' \ -+ 'INSTALL=$(INSTALL)' \ -+ 'INSTALL_DATA=$(INSTALL_DATA)' \ -+ 'INSTALL_PROGRAM=$(INSTALL_PROGRAM)' \ -+ 'INSTALL_SCRIPT=$(INSTALL_SCRIPT)' \ -+ 'JC1FLAGS=$(JC1FLAGS)' \ -+ 'LDFLAGS=$(LDFLAGS)' \ -+ 'LIBCFLAGS=$(LIBCFLAGS)' \ -+ 'LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)' \ -+ 'MAKE=$(MAKE)' \ -+ 'MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)' \ -+ 'PICFLAG=$(PICFLAG)' \ -+ 'PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)' \ -+ 'RUNTESTFLAGS=$(RUNTESTFLAGS)' \ -+ 'SHELL=$(SHELL)' \ -+ 'exec_prefix=$(exec_prefix)' \ -+ 'infodir=$(infodir)' \ -+ 'libdir=$(libdir)' \ -+ 'mandir=$(mandir)' \ -+ 'prefix=$(prefix)' \ -+ 'AR=$(AR)' \ -+ 'AS=$(AS)' \ -+ 'CC=$(CC)' \ -+ 'CXX=$(CXX)' \ -+ 'LD=$(LD)' \ -+ 'NM=$(NM)' \ -+ 'RANLIB=$(RANLIB)' \ -+ 'DESTDIR=$(DESTDIR)' -+ -+# Subdir rules rely on $(FLAGS_TO_PASS) -+FLAGS_TO_PASS = $(AM_MAKEFLAGS) - - MAKEOVERRIDES= - --ACLOCAL_AMFLAGS=$(ACLOCAL_AMFLAGS) -I m4 -- --lib_LTLIBRARIES = libffi.la -+toolexeclib_LTLIBRARIES = libffi.la - noinst_LTLIBRARIES = libffi_convenience.la - --libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c \ -+libffi_la_SOURCES = src/prep_cif.c src/types.c \ - src/raw_api.c src/java_raw_api.c src/closures.c - - pkgconfigdir = $(libdir)/pkgconfig - pkgconfig_DATA = libffi.pc - - nodist_libffi_la_SOURCES = - -+if FFI_DEBUG -+nodist_libffi_la_SOURCES += src/debug.c -+endif -+ - if MIPS - nodist_libffi_la_SOURCES += src/mips/ffi.c src/mips/o32.S src/mips/n32.S - endif -+if BFIN -+nodist_libffi_la_SOURCES += src/bfin/ffi.c src/bfin/sysv.S -+endif - if X86 --nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/sysv.S -+nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/sysv.S src/x86/win32.S - endif - if X86_FREEBSD --nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/freebsd.S -+nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/freebsd.S src/x86/win32.S - endif - if X86_WIN32 - nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/win32.S - endif - if X86_WIN64 - nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/win64.S - endif - if X86_DARWIN - nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S -+if X86_DARWIN32 -+nodist_libffi_la_SOURCES += src/x86/win32.S -+endif - endif - if SPARC - nodist_libffi_la_SOURCES += src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S - endif - if ALPHA - nodist_libffi_la_SOURCES += src/alpha/ffi.c src/alpha/osf.S - endif - if IA64 - nodist_libffi_la_SOURCES += src/ia64/ffi.c src/ia64/unix.S - endif - if M32R - nodist_libffi_la_SOURCES += src/m32r/sysv.S src/m32r/ffi.c - endif - if M68K - nodist_libffi_la_SOURCES += src/m68k/ffi.c src/m68k/sysv.S - endif -+if M88K -+nodist_libffi_la_SOURCES += src/m88k/ffi.c src/m88k/obsd.S -+endif -+if MOXIE -+nodist_libffi_la_SOURCES += src/moxie/ffi.c src/moxie/eabi.S -+endif -+if MICROBLAZE -+nodist_libffi_la_SOURCES += src/microblaze/ffi.c src/microblaze/sysv.S -+endif -+if NIOS2 -+nodist_libffi_la_SOURCES += src/nios2/sysv.S src/nios2/ffi.c -+endif - if POWERPC --nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S -+nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S - endif - if POWERPC_AIX - nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S - endif - if POWERPC_DARWIN - nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S - endif - if POWERPC_FREEBSD --nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S -+nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/sysv.S src/powerpc/ppc_closure.S -+endif -+if AARCH64 -+nodist_libffi_la_SOURCES += src/aarch64/sysv.S src/aarch64/ffi.c -+endif -+if ARC -+nodist_libffi_la_SOURCES += src/arc/arcompact.S src/arc/ffi.c - endif - if ARM - nodist_libffi_la_SOURCES += src/arm/sysv.S src/arm/ffi.c -+if FFI_EXEC_TRAMPOLINE_TABLE -+nodist_libffi_la_SOURCES += src/arm/trampoline.S -+endif - endif - if AVR32 - nodist_libffi_la_SOURCES += src/avr32/sysv.S src/avr32/ffi.c - endif - if LIBFFI_CRIS - nodist_libffi_la_SOURCES += src/cris/sysv.S src/cris/ffi.c - endif - if FRV - nodist_libffi_la_SOURCES += src/frv/eabi.S src/frv/ffi.c - endif --if MOXIE --nodist_libffi_la_SOURCES += src/moxie/eabi.S src/moxie/ffi.c --endif - if S390 - nodist_libffi_la_SOURCES += src/s390/sysv.S src/s390/ffi.c - endif - if X86_64 - nodist_libffi_la_SOURCES += src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S - endif - if SH - nodist_libffi_la_SOURCES += src/sh/sysv.S src/sh/ffi.c -@@ -168,31 +215,40 @@ if SH64 - nodist_libffi_la_SOURCES += src/sh64/sysv.S src/sh64/ffi.c - endif - if PA_LINUX - nodist_libffi_la_SOURCES += src/pa/linux.S src/pa/ffi.c - endif - if PA_HPUX - nodist_libffi_la_SOURCES += src/pa/hpux32.S src/pa/ffi.c - endif -+if TILE -+nodist_libffi_la_SOURCES += src/tile/tile.S src/tile/ffi.c -+endif -+if XTENSA -+nodist_libffi_la_SOURCES += src/xtensa/sysv.S src/xtensa/ffi.c -+endif -+if METAG -+nodist_libffi_la_SOURCES += src/metag/sysv.S src/metag/ffi.c -+endif -+if VAX -+nodist_libffi_la_SOURCES += src/vax/elfbsd.S src/vax/ffi.c -+endif - - libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) - nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) - --AM_CFLAGS = -Wall -g -fexceptions -+LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS)) -+ -+AM_CFLAGS = - if FFI_DEBUG - # Build debug. Define FFI_DEBUG on the commandline so that, when building with - # MSVC, it can link against the debug CRT. - AM_CFLAGS += -DFFI_DEBUG --else --# Build opt. --AM_CFLAGS += -O2 - endif - --libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS) -+libffi_la_LDFLAGS = -no-undefined -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS) - - AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src - AM_CCASFLAGS = $(AM_CPPFLAGS) - --# No install-html or install-pdf support in automake yet --.PHONY: install-html install-pdf --install-html: --install-pdf: -+dist-hook: -+ if [ -d $(top_srcdir)/.git ] ; then git -C $(top_srcdir) log --no-decorate ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog -diff --git a/js/src/ctypes/libffi/Makefile.in b/js/src/ctypes/libffi/Makefile.in ---- a/js/src/ctypes/libffi/Makefile.in -+++ b/js/src/ctypes/libffi/Makefile.in -@@ -1,27 +1,71 @@ --# Makefile.in generated by automake 1.11.1 from Makefile.am. -+# Makefile.in generated by automake 1.13.4 from Makefile.am. - # @configure_input@ - --# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, --# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, --# Inc. -+# Copyright (C) 1994-2013 Free Software Foundation, Inc. -+ - # This Makefile.in is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - - # This program is distributed in the hope that it will be useful, - # but WITHOUT ANY WARRANTY, to the extent permitted by law; without - # even the implied warranty of MERCHANTABILITY or FITNESS FOR A - # PARTICULAR PURPOSE. - - @SET_MAKE@ - - - VPATH = @srcdir@ -+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -+am__make_running_with_option = \ -+ case $${target_option-} in \ -+ ?) ;; \ -+ *) echo "am__make_running_with_option: internal error: invalid" \ -+ "target option '$${target_option-}' specified" >&2; \ -+ exit 1;; \ -+ esac; \ -+ has_opt=no; \ -+ sane_makeflags=$$MAKEFLAGS; \ -+ if $(am__is_gnu_make); then \ -+ sane_makeflags=$$MFLAGS; \ -+ else \ -+ case $$MAKEFLAGS in \ -+ *\\[\ \ ]*) \ -+ bs=\\; \ -+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ -+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ -+ esac; \ -+ fi; \ -+ skip_next=no; \ -+ strip_trailopt () \ -+ { \ -+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ -+ }; \ -+ for flg in $$sane_makeflags; do \ -+ test $$skip_next = yes && { skip_next=no; continue; }; \ -+ case $$flg in \ -+ *=*|--*) continue;; \ -+ -*I) strip_trailopt 'I'; skip_next=yes;; \ -+ -*I?*) strip_trailopt 'I';; \ -+ -*O) strip_trailopt 'O'; skip_next=yes;; \ -+ -*O?*) strip_trailopt 'O';; \ -+ -*l) strip_trailopt 'l'; skip_next=yes;; \ -+ -*l?*) strip_trailopt 'l';; \ -+ -[dEDm]) skip_next=yes;; \ -+ -[JT]) skip_next=yes;; \ -+ esac; \ -+ case $$flg in \ -+ *$$target_option*) has_opt=yes; break;; \ -+ esac; \ -+ done; \ -+ test $$has_opt = yes -+am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -+am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) - pkgdatadir = $(datadir)/@PACKAGE@ - pkgincludedir = $(includedir)/@PACKAGE@ - pkglibdir = $(libdir)/@PACKAGE@ - pkglibexecdir = $(libexecdir)/@PACKAGE@ - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd - install_sh_DATA = $(install_sh) -c -m 644 - install_sh_PROGRAM = $(install_sh) -c - install_sh_SCRIPT = $(install_sh) -c -@@ -31,56 +75,79 @@ NORMAL_INSTALL = : - PRE_INSTALL = : - POST_INSTALL = : - NORMAL_UNINSTALL = : - PRE_UNINSTALL = : - POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ - target_triplet = @target@ --@MIPS_TRUE@am__append_1 = src/mips/ffi.c src/mips/o32.S src/mips/n32.S --@X86_TRUE@am__append_2 = src/x86/ffi.c src/x86/sysv.S --@X86_FREEBSD_TRUE@am__append_3 = src/x86/ffi.c src/x86/freebsd.S --@X86_WIN32_TRUE@am__append_4 = src/x86/ffi.c src/x86/win32.S --@X86_WIN64_TRUE@am__append_5 = src/x86/ffi.c src/x86/win64.S --@X86_DARWIN_TRUE@am__append_6 = src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S --@SPARC_TRUE@am__append_7 = src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S --@ALPHA_TRUE@am__append_8 = src/alpha/ffi.c src/alpha/osf.S --@IA64_TRUE@am__append_9 = src/ia64/ffi.c src/ia64/unix.S --@M32R_TRUE@am__append_10 = src/m32r/sysv.S src/m32r/ffi.c --@M68K_TRUE@am__append_11 = src/m68k/ffi.c src/m68k/sysv.S --@POWERPC_TRUE@am__append_12 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S --@POWERPC_AIX_TRUE@am__append_13 = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S --@POWERPC_DARWIN_TRUE@am__append_14 = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S --@POWERPC_FREEBSD_TRUE@am__append_15 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S --@ARM_TRUE@am__append_16 = src/arm/sysv.S src/arm/ffi.c --@AVR32_TRUE@am__append_17 = src/avr32/sysv.S src/avr32/ffi.c --@LIBFFI_CRIS_TRUE@am__append_18 = src/cris/sysv.S src/cris/ffi.c --@FRV_TRUE@am__append_19 = src/frv/eabi.S src/frv/ffi.c --@MOXIE_TRUE@am__append_20 = src/moxie/eabi.S src/moxie/ffi.c --@S390_TRUE@am__append_21 = src/s390/sysv.S src/s390/ffi.c --@X86_64_TRUE@am__append_22 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S --@SH_TRUE@am__append_23 = src/sh/sysv.S src/sh/ffi.c --@SH64_TRUE@am__append_24 = src/sh64/sysv.S src/sh64/ffi.c --@PA_LINUX_TRUE@am__append_25 = src/pa/linux.S src/pa/ffi.c --@PA_HPUX_TRUE@am__append_26 = src/pa/hpux32.S src/pa/ffi.c -+@FFI_DEBUG_TRUE@am__append_1 = src/debug.c -+@MIPS_TRUE@am__append_2 = src/mips/ffi.c src/mips/o32.S src/mips/n32.S -+@BFIN_TRUE@am__append_3 = src/bfin/ffi.c src/bfin/sysv.S -+@X86_TRUE@am__append_4 = src/x86/ffi.c src/x86/sysv.S src/x86/win32.S -+@X86_FREEBSD_TRUE@am__append_5 = src/x86/ffi.c src/x86/freebsd.S src/x86/win32.S -+@X86_WIN32_TRUE@am__append_6 = src/x86/ffi.c src/x86/win32.S -+@X86_WIN64_TRUE@am__append_7 = src/x86/ffi.c src/x86/win64.S -+@X86_DARWIN_TRUE@am__append_8 = src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S -+@X86_DARWIN32_TRUE@@X86_DARWIN_TRUE@am__append_9 = src/x86/win32.S -+@SPARC_TRUE@am__append_10 = src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S -+@ALPHA_TRUE@am__append_11 = src/alpha/ffi.c src/alpha/osf.S -+@IA64_TRUE@am__append_12 = src/ia64/ffi.c src/ia64/unix.S -+@M32R_TRUE@am__append_13 = src/m32r/sysv.S src/m32r/ffi.c -+@M68K_TRUE@am__append_14 = src/m68k/ffi.c src/m68k/sysv.S -+@M88K_TRUE@am__append_15 = src/m88k/ffi.c src/m88k/obsd.S -+@MOXIE_TRUE@am__append_16 = src/moxie/ffi.c src/moxie/eabi.S -+@MICROBLAZE_TRUE@am__append_17 = src/microblaze/ffi.c src/microblaze/sysv.S -+@NIOS2_TRUE@am__append_18 = src/nios2/sysv.S src/nios2/ffi.c -+@POWERPC_TRUE@am__append_19 = src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S -+@POWERPC_AIX_TRUE@am__append_20 = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S -+@POWERPC_DARWIN_TRUE@am__append_21 = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S -+@POWERPC_FREEBSD_TRUE@am__append_22 = src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/sysv.S src/powerpc/ppc_closure.S -+@AARCH64_TRUE@am__append_23 = src/aarch64/sysv.S src/aarch64/ffi.c -+@ARC_TRUE@am__append_24 = src/arc/arcompact.S src/arc/ffi.c -+@ARM_TRUE@am__append_25 = src/arm/sysv.S src/arm/ffi.c -+@ARM_TRUE@@FFI_EXEC_TRAMPOLINE_TABLE_TRUE@am__append_26 = src/arm/trampoline.S -+@AVR32_TRUE@am__append_27 = src/avr32/sysv.S src/avr32/ffi.c -+@LIBFFI_CRIS_TRUE@am__append_28 = src/cris/sysv.S src/cris/ffi.c -+@FRV_TRUE@am__append_29 = src/frv/eabi.S src/frv/ffi.c -+@S390_TRUE@am__append_30 = src/s390/sysv.S src/s390/ffi.c -+@X86_64_TRUE@am__append_31 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S -+@SH_TRUE@am__append_32 = src/sh/sysv.S src/sh/ffi.c -+@SH64_TRUE@am__append_33 = src/sh64/sysv.S src/sh64/ffi.c -+@PA_LINUX_TRUE@am__append_34 = src/pa/linux.S src/pa/ffi.c -+@PA_HPUX_TRUE@am__append_35 = src/pa/hpux32.S src/pa/ffi.c -+@TILE_TRUE@am__append_36 = src/tile/tile.S src/tile/ffi.c -+@XTENSA_TRUE@am__append_37 = src/xtensa/sysv.S src/xtensa/ffi.c -+@METAG_TRUE@am__append_38 = src/metag/sysv.S src/metag/ffi.c -+@VAX_TRUE@am__append_39 = src/vax/elfbsd.S src/vax/ffi.c - # Build debug. Define FFI_DEBUG on the commandline so that, when building with - # MSVC, it can link against the debug CRT. --@FFI_DEBUG_TRUE@am__append_27 = -DFFI_DEBUG --# Build opt. --@FFI_DEBUG_FALSE@am__append_28 = -O2 -+@FFI_DEBUG_TRUE@am__append_40 = -DFFI_DEBUG - subdir = . --DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ -- $(srcdir)/Makefile.in $(srcdir)/doc/stamp-vti \ -- $(srcdir)/doc/version.texi $(srcdir)/fficonfig.h.in \ -- $(srcdir)/libffi.pc.in $(top_srcdir)/configure ChangeLog \ -- compile config.guess config.sub depcomp install-sh ltmain.sh \ -- mdate-sh missing texinfo.tex -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ -+ $(top_srcdir)/configure $(am__configure_deps) \ -+ $(srcdir)/fficonfig.h.in $(srcdir)/libffi.pc.in depcomp \ -+ mdate-sh $(srcdir)/doc/version.texi $(srcdir)/doc/stamp-vti \ -+ texinfo.tex README compile config.guess config.sub install-sh \ -+ missing ltmain.sh - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 --am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ -+am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ -+ $(top_srcdir)/m4/ax_append_flag.m4 \ -+ $(top_srcdir)/m4/ax_cc_maxopt.m4 \ -+ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ -+ $(top_srcdir)/m4/ax_check_compile_flag.m4 \ -+ $(top_srcdir)/m4/ax_compiler_vendor.m4 \ -+ $(top_srcdir)/m4/ax_configure_args.m4 \ -+ $(top_srcdir)/m4/ax_enable_builddir.m4 \ -+ $(top_srcdir)/m4/ax_gcc_archflag.m4 \ -+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ -+ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ -+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ -+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac - am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) - am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno - mkinstalldirs = $(install_sh) -d - CONFIG_HEADER = fficonfig.h - CONFIG_CLEAN_FILES = libffi.pc -@@ -101,149 +168,272 @@ am__nobase_list = $(am__nobase_strip_set - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' - am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' --am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" \ -+am__uninstall_files_from_dir = { \ -+ test -z "$$files" \ -+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ -+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ -+ $(am__cd) "$$dir" && rm -f $$files; }; \ -+ } -+am__installdirs = "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(infodir)" \ - "$(DESTDIR)$(pkgconfigdir)" --LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) -+LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES) - libffi_la_LIBADD = - am__dirstamp = $(am__leading_dot)dirstamp --am_libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \ -- src/raw_api.lo src/java_raw_api.lo src/closures.lo --@MIPS_TRUE@am__objects_1 = src/mips/ffi.lo src/mips/o32.lo \ -+am_libffi_la_OBJECTS = src/prep_cif.lo src/types.lo src/raw_api.lo \ -+ src/java_raw_api.lo src/closures.lo -+@FFI_DEBUG_TRUE@am__objects_1 = src/debug.lo -+@MIPS_TRUE@am__objects_2 = src/mips/ffi.lo src/mips/o32.lo \ - @MIPS_TRUE@ src/mips/n32.lo --@X86_TRUE@am__objects_2 = src/x86/ffi.lo src/x86/sysv.lo --@X86_FREEBSD_TRUE@am__objects_3 = src/x86/ffi.lo src/x86/freebsd.lo --@X86_WIN32_TRUE@am__objects_4 = src/x86/ffi.lo src/x86/win32.lo --@X86_WIN64_TRUE@am__objects_5 = src/x86/ffi.lo src/x86/win64.lo --@X86_DARWIN_TRUE@am__objects_6 = src/x86/ffi.lo src/x86/darwin.lo \ -+@BFIN_TRUE@am__objects_3 = src/bfin/ffi.lo src/bfin/sysv.lo -+@X86_TRUE@am__objects_4 = src/x86/ffi.lo src/x86/sysv.lo \ -+@X86_TRUE@ src/x86/win32.lo -+@X86_FREEBSD_TRUE@am__objects_5 = src/x86/ffi.lo src/x86/freebsd.lo \ -+@X86_FREEBSD_TRUE@ src/x86/win32.lo -+@X86_WIN32_TRUE@am__objects_6 = src/x86/ffi.lo src/x86/win32.lo -+@X86_WIN64_TRUE@am__objects_7 = src/x86/ffi.lo src/x86/win64.lo -+@X86_DARWIN_TRUE@am__objects_8 = src/x86/ffi.lo src/x86/darwin.lo \ - @X86_DARWIN_TRUE@ src/x86/ffi64.lo src/x86/darwin64.lo --@SPARC_TRUE@am__objects_7 = src/sparc/ffi.lo src/sparc/v8.lo \ -+@X86_DARWIN32_TRUE@@X86_DARWIN_TRUE@am__objects_9 = src/x86/win32.lo -+@SPARC_TRUE@am__objects_10 = src/sparc/ffi.lo src/sparc/v8.lo \ - @SPARC_TRUE@ src/sparc/v9.lo --@ALPHA_TRUE@am__objects_8 = src/alpha/ffi.lo src/alpha/osf.lo --@IA64_TRUE@am__objects_9 = src/ia64/ffi.lo src/ia64/unix.lo --@M32R_TRUE@am__objects_10 = src/m32r/sysv.lo src/m32r/ffi.lo --@M68K_TRUE@am__objects_11 = src/m68k/ffi.lo src/m68k/sysv.lo --@POWERPC_TRUE@am__objects_12 = src/powerpc/ffi.lo src/powerpc/sysv.lo \ -+@ALPHA_TRUE@am__objects_11 = src/alpha/ffi.lo src/alpha/osf.lo -+@IA64_TRUE@am__objects_12 = src/ia64/ffi.lo src/ia64/unix.lo -+@M32R_TRUE@am__objects_13 = src/m32r/sysv.lo src/m32r/ffi.lo -+@M68K_TRUE@am__objects_14 = src/m68k/ffi.lo src/m68k/sysv.lo -+@M88K_TRUE@am__objects_15 = src/m88k/ffi.lo src/m88k/obsd.lo -+@MOXIE_TRUE@am__objects_16 = src/moxie/ffi.lo src/moxie/eabi.lo -+@MICROBLAZE_TRUE@am__objects_17 = src/microblaze/ffi.lo \ -+@MICROBLAZE_TRUE@ src/microblaze/sysv.lo -+@NIOS2_TRUE@am__objects_18 = src/nios2/sysv.lo src/nios2/ffi.lo -+@POWERPC_TRUE@am__objects_19 = src/powerpc/ffi.lo \ -+@POWERPC_TRUE@ src/powerpc/ffi_sysv.lo \ -+@POWERPC_TRUE@ src/powerpc/ffi_linux64.lo src/powerpc/sysv.lo \ - @POWERPC_TRUE@ src/powerpc/ppc_closure.lo \ - @POWERPC_TRUE@ src/powerpc/linux64.lo \ - @POWERPC_TRUE@ src/powerpc/linux64_closure.lo --@POWERPC_AIX_TRUE@am__objects_13 = src/powerpc/ffi_darwin.lo \ -+@POWERPC_AIX_TRUE@am__objects_20 = src/powerpc/ffi_darwin.lo \ - @POWERPC_AIX_TRUE@ src/powerpc/aix.lo \ - @POWERPC_AIX_TRUE@ src/powerpc/aix_closure.lo --@POWERPC_DARWIN_TRUE@am__objects_14 = src/powerpc/ffi_darwin.lo \ -+@POWERPC_DARWIN_TRUE@am__objects_21 = src/powerpc/ffi_darwin.lo \ - @POWERPC_DARWIN_TRUE@ src/powerpc/darwin.lo \ - @POWERPC_DARWIN_TRUE@ src/powerpc/darwin_closure.lo --@POWERPC_FREEBSD_TRUE@am__objects_15 = src/powerpc/ffi.lo \ -+@POWERPC_FREEBSD_TRUE@am__objects_22 = src/powerpc/ffi.lo \ -+@POWERPC_FREEBSD_TRUE@ src/powerpc/ffi_sysv.lo \ - @POWERPC_FREEBSD_TRUE@ src/powerpc/sysv.lo \ - @POWERPC_FREEBSD_TRUE@ src/powerpc/ppc_closure.lo --@ARM_TRUE@am__objects_16 = src/arm/sysv.lo src/arm/ffi.lo --@AVR32_TRUE@am__objects_17 = src/avr32/sysv.lo src/avr32/ffi.lo --@LIBFFI_CRIS_TRUE@am__objects_18 = src/cris/sysv.lo src/cris/ffi.lo --@FRV_TRUE@am__objects_19 = src/frv/eabi.lo src/frv/ffi.lo --@MOXIE_TRUE@am__objects_20 = src/moxie/eabi.lo src/moxie/ffi.lo --@S390_TRUE@am__objects_21 = src/s390/sysv.lo src/s390/ffi.lo --@X86_64_TRUE@am__objects_22 = src/x86/ffi64.lo src/x86/unix64.lo \ -+@AARCH64_TRUE@am__objects_23 = src/aarch64/sysv.lo src/aarch64/ffi.lo -+@ARC_TRUE@am__objects_24 = src/arc/arcompact.lo src/arc/ffi.lo -+@ARM_TRUE@am__objects_25 = src/arm/sysv.lo src/arm/ffi.lo -+@ARM_TRUE@@FFI_EXEC_TRAMPOLINE_TABLE_TRUE@am__objects_26 = src/arm/trampoline.lo -+@AVR32_TRUE@am__objects_27 = src/avr32/sysv.lo src/avr32/ffi.lo -+@LIBFFI_CRIS_TRUE@am__objects_28 = src/cris/sysv.lo src/cris/ffi.lo -+@FRV_TRUE@am__objects_29 = src/frv/eabi.lo src/frv/ffi.lo -+@S390_TRUE@am__objects_30 = src/s390/sysv.lo src/s390/ffi.lo -+@X86_64_TRUE@am__objects_31 = src/x86/ffi64.lo src/x86/unix64.lo \ - @X86_64_TRUE@ src/x86/ffi.lo src/x86/sysv.lo --@SH_TRUE@am__objects_23 = src/sh/sysv.lo src/sh/ffi.lo --@SH64_TRUE@am__objects_24 = src/sh64/sysv.lo src/sh64/ffi.lo --@PA_LINUX_TRUE@am__objects_25 = src/pa/linux.lo src/pa/ffi.lo --@PA_HPUX_TRUE@am__objects_26 = src/pa/hpux32.lo src/pa/ffi.lo -+@SH_TRUE@am__objects_32 = src/sh/sysv.lo src/sh/ffi.lo -+@SH64_TRUE@am__objects_33 = src/sh64/sysv.lo src/sh64/ffi.lo -+@PA_LINUX_TRUE@am__objects_34 = src/pa/linux.lo src/pa/ffi.lo -+@PA_HPUX_TRUE@am__objects_35 = src/pa/hpux32.lo src/pa/ffi.lo -+@TILE_TRUE@am__objects_36 = src/tile/tile.lo src/tile/ffi.lo -+@XTENSA_TRUE@am__objects_37 = src/xtensa/sysv.lo src/xtensa/ffi.lo -+@METAG_TRUE@am__objects_38 = src/metag/sysv.lo src/metag/ffi.lo -+@VAX_TRUE@am__objects_39 = src/vax/elfbsd.lo src/vax/ffi.lo - nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \ - $(am__objects_3) $(am__objects_4) $(am__objects_5) \ - $(am__objects_6) $(am__objects_7) $(am__objects_8) \ - $(am__objects_9) $(am__objects_10) $(am__objects_11) \ - $(am__objects_12) $(am__objects_13) $(am__objects_14) \ - $(am__objects_15) $(am__objects_16) $(am__objects_17) \ - $(am__objects_18) $(am__objects_19) $(am__objects_20) \ - $(am__objects_21) $(am__objects_22) $(am__objects_23) \ -- $(am__objects_24) $(am__objects_25) $(am__objects_26) -+ $(am__objects_24) $(am__objects_25) $(am__objects_26) \ -+ $(am__objects_27) $(am__objects_28) $(am__objects_29) \ -+ $(am__objects_30) $(am__objects_31) $(am__objects_32) \ -+ $(am__objects_33) $(am__objects_34) $(am__objects_35) \ -+ $(am__objects_36) $(am__objects_37) $(am__objects_38) \ -+ $(am__objects_39) - libffi_la_OBJECTS = $(am_libffi_la_OBJECTS) \ - $(nodist_libffi_la_OBJECTS) --libffi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ -+AM_V_lt = $(am__v_lt_@AM_V@) -+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -+am__v_lt_0 = --silent -+am__v_lt_1 = -+libffi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libffi_la_LDFLAGS) $(LDFLAGS) -o $@ - libffi_convenience_la_LIBADD = --am__objects_27 = src/debug.lo src/prep_cif.lo src/types.lo \ -- src/raw_api.lo src/java_raw_api.lo src/closures.lo --am_libffi_convenience_la_OBJECTS = $(am__objects_27) --am__objects_28 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \ -+am__objects_40 = src/prep_cif.lo src/types.lo src/raw_api.lo \ -+ src/java_raw_api.lo src/closures.lo -+am_libffi_convenience_la_OBJECTS = $(am__objects_40) -+am__objects_41 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \ - $(am__objects_4) $(am__objects_5) $(am__objects_6) \ - $(am__objects_7) $(am__objects_8) $(am__objects_9) \ - $(am__objects_10) $(am__objects_11) $(am__objects_12) \ - $(am__objects_13) $(am__objects_14) $(am__objects_15) \ - $(am__objects_16) $(am__objects_17) $(am__objects_18) \ - $(am__objects_19) $(am__objects_20) $(am__objects_21) \ - $(am__objects_22) $(am__objects_23) $(am__objects_24) \ -- $(am__objects_25) $(am__objects_26) --nodist_libffi_convenience_la_OBJECTS = $(am__objects_28) -+ $(am__objects_25) $(am__objects_26) $(am__objects_27) \ -+ $(am__objects_28) $(am__objects_29) $(am__objects_30) \ -+ $(am__objects_31) $(am__objects_32) $(am__objects_33) \ -+ $(am__objects_34) $(am__objects_35) $(am__objects_36) \ -+ $(am__objects_37) $(am__objects_38) $(am__objects_39) -+nodist_libffi_convenience_la_OBJECTS = $(am__objects_41) - libffi_convenience_la_OBJECTS = $(am_libffi_convenience_la_OBJECTS) \ - $(nodist_libffi_convenience_la_OBJECTS) -+AM_V_P = $(am__v_P_@AM_V@) -+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -+am__v_P_0 = false -+am__v_P_1 = : -+AM_V_GEN = $(am__v_GEN_@AM_V@) -+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -+am__v_GEN_0 = @echo " GEN " $@; -+am__v_GEN_1 = -+AM_V_at = $(am__v_at_@AM_V@) -+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -+am__v_at_0 = @ -+am__v_at_1 = - DEFAULT_INCLUDES = -I.@am__isrc@ - depcomp = $(SHELL) $(top_srcdir)/depcomp - am__depfiles_maybe = depfiles - am__mv = mv -f - CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) --LTCPPASCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ -- --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ -- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -+LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \ -+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ -+ $(AM_CCASFLAGS) $(CCASFLAGS) -+AM_V_CPPAS = $(am__v_CPPAS_@AM_V@) -+am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@) -+am__v_CPPAS_0 = @echo " CPPAS " $@; -+am__v_CPPAS_1 = - COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) --LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ -- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ -- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ -+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ -+ $(AM_CFLAGS) $(CFLAGS) -+AM_V_CC = $(am__v_CC_@AM_V@) -+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -+am__v_CC_0 = @echo " CC " $@; -+am__v_CC_1 = - CCLD = $(CC) --LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ -- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ -- $(LDFLAGS) -o $@ -+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -+ $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+AM_V_CCLD = $(am__v_CCLD_@AM_V@) -+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -+am__v_CCLD_0 = @echo " CCLD " $@; -+am__v_CCLD_1 = - SOURCES = $(libffi_la_SOURCES) $(nodist_libffi_la_SOURCES) \ - $(libffi_convenience_la_SOURCES) \ - $(nodist_libffi_convenience_la_SOURCES) - DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES) --INFO_DEPS = -+AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) -+am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) -+am__v_DVIPS_0 = @echo " DVIPS " $@; -+am__v_DVIPS_1 = -+AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) -+am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) -+am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; -+am__v_MAKEINFO_1 = -+AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) -+am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) -+am__v_INFOHTML_0 = @echo " INFOHTML" $@; -+am__v_INFOHTML_1 = -+AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) -+am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) -+am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; -+am__v_TEXI2DVI_1 = -+AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) -+am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) -+am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; -+am__v_TEXI2PDF_1 = -+AM_V_texinfo = $(am__v_texinfo_@AM_V@) -+am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) -+am__v_texinfo_0 = -q -+am__v_texinfo_1 = -+AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) -+am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) -+am__v_texidevnull_0 = > /dev/null -+am__v_texidevnull_1 = -+INFO_DEPS = $(srcdir)/doc/libffi.info - am__TEXINFO_TEX_DIR = $(srcdir) - DVIS = doc/libffi.dvi - PDFS = doc/libffi.pdf - PSS = doc/libffi.ps - HTMLS = doc/libffi.html - TEXINFOS = doc/libffi.texi - TEXI2DVI = texi2dvi - TEXI2PDF = $(TEXI2DVI) --pdf --batch - MAKEINFOHTML = $(MAKEINFO) --html - AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) - DVIPS = dvips --RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ -- html-recursive info-recursive install-data-recursive \ -- install-dvi-recursive install-exec-recursive \ -- install-html-recursive install-info-recursive \ -- install-pdf-recursive install-ps-recursive install-recursive \ -- installcheck-recursive installdirs-recursive pdf-recursive \ -- ps-recursive uninstall-recursive -+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ -+ ctags-recursive dvi-recursive html-recursive info-recursive \ -+ install-data-recursive install-dvi-recursive \ -+ install-exec-recursive install-html-recursive \ -+ install-info-recursive install-pdf-recursive \ -+ install-ps-recursive install-recursive installcheck-recursive \ -+ installdirs-recursive pdf-recursive ps-recursive \ -+ tags-recursive uninstall-recursive -+am__can_run_installinfo = \ -+ case $$AM_UPDATE_INFO_DIR in \ -+ n|no|NO) false;; \ -+ *) (install-info --version) >/dev/null 2>&1;; \ -+ esac - DATA = $(pkgconfig_DATA) - RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive --AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ -- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ -- distdir dist dist-all distcheck -+am__recursive_targets = \ -+ $(RECURSIVE_TARGETS) \ -+ $(RECURSIVE_CLEAN_TARGETS) \ -+ $(am__extra_recursive_targets) -+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ -+ cscope distdir dist dist-all distcheck -+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ -+ $(LISP)fficonfig.h.in -+# Read a list of newline-separated strings from the standard input, -+# and print each of them once, without duplicates. Input order is -+# *not* preserved. -+am__uniquify_input = $(AWK) '\ -+ BEGIN { nonempty = 0; } \ -+ { items[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in items) print i; }; } \ -+' -+# Make sure the list of sources is unique. This is necessary because, -+# e.g., the same source file might be shared among _SOURCES variables -+# for different programs/libraries. -+am__define_uniq_tagged_files = \ -+ list='$(am__tagged_files)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | $(am__uniquify_input)` - ETAGS = etags - CTAGS = ctags -+CSCOPE = cscope - DIST_SUBDIRS = $(SUBDIRS) - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - distdir = $(PACKAGE)-$(VERSION) - top_distdir = $(distdir) - am__remove_distdir = \ -- { test ! -d "$(distdir)" \ -- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ -- && rm -fr "$(distdir)"; }; } -+ if test -d "$(distdir)"; then \ -+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ -+ && rm -rf "$(distdir)" \ -+ || { sleep 5 && rm -rf "$(distdir)"; }; \ -+ else :; fi -+am__post_remove_distdir = $(am__remove_distdir) - am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ -@@ -261,21 +451,25 @@ am__relativize = \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" - DIST_ARCHIVES = $(distdir).tar.gz - GZIP_ENV = --best -+DIST_TARGETS = dist-gzip - distuninstallcheck_listfiles = find . -type f -print -+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ -+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' - distcleancheck_listfiles = find . -type f -print - ACLOCAL = @ACLOCAL@ - ALLOCA = @ALLOCA@ - AMTAR = @AMTAR@ -+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ - AM_LTLDFLAGS = @AM_LTLDFLAGS@ - AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@ - AR = @AR@ - AUTOCONF = @AUTOCONF@ - AUTOHEADER = @AUTOHEADER@ - AUTOMAKE = @AUTOMAKE@ - AWK = @AWK@ - CC = @CC@ -@@ -284,75 +478,82 @@ CCASDEPMODE = @CCASDEPMODE@ - CCASFLAGS = @CCASFLAGS@ - CCDEPMODE = @CCDEPMODE@ - CFLAGS = @CFLAGS@ - CPP = @CPP@ - CPPFLAGS = @CPPFLAGS@ - CYGPATH_W = @CYGPATH_W@ - DEFS = @DEFS@ - DEPDIR = @DEPDIR@ -+DLLTOOL = @DLLTOOL@ - DSYMUTIL = @DSYMUTIL@ - DUMPBIN = @DUMPBIN@ - ECHO_C = @ECHO_C@ - ECHO_N = @ECHO_N@ - ECHO_T = @ECHO_T@ - EGREP = @EGREP@ - EXEEXT = @EXEEXT@ -+FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ - FGREP = @FGREP@ - GREP = @GREP@ - HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ -+HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ - INSTALL = @INSTALL@ - INSTALL_DATA = @INSTALL_DATA@ - INSTALL_PROGRAM = @INSTALL_PROGRAM@ - INSTALL_SCRIPT = @INSTALL_SCRIPT@ - INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ - LD = @LD@ - LDFLAGS = @LDFLAGS@ - LIBOBJS = @LIBOBJS@ - LIBS = @LIBS@ - LIBTOOL = @LIBTOOL@ - LIPO = @LIPO@ - LN_S = @LN_S@ - LTLIBOBJS = @LTLIBOBJS@ - MAINT = @MAINT@ - MAKEINFO = @MAKEINFO@ -+MANIFEST_TOOL = @MANIFEST_TOOL@ - MKDIR_P = @MKDIR_P@ - NM = @NM@ - NMEDIT = @NMEDIT@ - OBJDUMP = @OBJDUMP@ - OBJEXT = @OBJEXT@ - OTOOL = @OTOOL@ - OTOOL64 = @OTOOL64@ - PACKAGE = @PACKAGE@ - PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ - PACKAGE_NAME = @PACKAGE_NAME@ - PACKAGE_STRING = @PACKAGE_STRING@ - PACKAGE_TARNAME = @PACKAGE_TARNAME@ - PACKAGE_URL = @PACKAGE_URL@ - PACKAGE_VERSION = @PACKAGE_VERSION@ - PATH_SEPARATOR = @PATH_SEPARATOR@ -+PRTDIAG = @PRTDIAG@ - RANLIB = @RANLIB@ - SED = @SED@ - SET_MAKE = @SET_MAKE@ - SHELL = @SHELL@ - STRIP = @STRIP@ - TARGET = @TARGET@ - TARGETDIR = @TARGETDIR@ - VERSION = @VERSION@ - abs_builddir = @abs_builddir@ - abs_srcdir = @abs_srcdir@ - abs_top_builddir = @abs_top_builddir@ - abs_top_srcdir = @abs_top_srcdir@ -+ac_ct_AR = @ac_ct_AR@ - ac_ct_CC = @ac_ct_CC@ - ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ - am__include = @am__include@ - am__leading_dot = @am__leading_dot@ - am__quote = @am__quote@ - am__tar = @am__tar@ - am__untar = @am__untar@ -+ax_enable_builddir_sed = @ax_enable_builddir_sed@ - bindir = @bindir@ - build = @build@ - build_alias = @build_alias@ - build_cpu = @build_cpu@ - build_os = @build_os@ - build_vendor = @build_vendor@ - builddir = @builddir@ - datadir = @datadir@ -@@ -368,69 +569,86 @@ host_vendor = @host_vendor@ - htmldir = @htmldir@ - includedir = @includedir@ - infodir = @infodir@ - install_sh = @install_sh@ - libdir = @libdir@ - libexecdir = @libexecdir@ - localedir = @localedir@ - localstatedir = @localstatedir@ --lt_ECHO = @lt_ECHO@ - mandir = @mandir@ - mkdir_p = @mkdir_p@ - oldincludedir = @oldincludedir@ - pdfdir = @pdfdir@ - prefix = @prefix@ - program_transform_name = @program_transform_name@ - psdir = @psdir@ - sbindir = @sbindir@ - sharedstatedir = @sharedstatedir@ - srcdir = @srcdir@ -+sys_symbol_underscore = @sys_symbol_underscore@ - sysconfdir = @sysconfdir@ - target = @target@ - target_alias = @target_alias@ - target_cpu = @target_cpu@ - target_os = @target_os@ - target_vendor = @target_vendor@ - toolexecdir = @toolexecdir@ - toolexeclibdir = @toolexeclibdir@ - top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ - AUTOMAKE_OPTIONS = foreign subdir-objects -+ACLOCAL_AMFLAGS = -I m4 - SUBDIRS = include testsuite man --EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \ -- src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \ -- src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h \ -- src/avr32/ffi.c src/avr32/sysv.S src/avr32/ffitarget.h \ -- src/cris/ffi.c src/cris/sysv.S src/cris/ffitarget.h \ -- src/ia64/ffi.c src/ia64/ffitarget.h src/ia64/ia64_flags.h \ -- src/ia64/unix.S \ -- src/mips/ffi.c src/mips/n32.S src/mips/o32.S \ -- src/mips/ffitarget.h \ -- src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \ -- src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \ -- src/powerpc/ffi.c src/powerpc/sysv.S \ -- src/powerpc/linux64.S src/powerpc/linux64_closure.S \ -- src/powerpc/ppc_closure.S src/powerpc/asm.h \ -- src/powerpc/aix.S src/powerpc/darwin.S \ -- src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \ -- src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \ -- src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \ -- src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h \ -- src/sh64/ffi.c src/sh64/sysv.S src/sh64/ffitarget.h \ -- src/sparc/v8.S src/sparc/v9.S src/sparc/ffitarget.h \ -- src/sparc/ffi.c src/x86/darwin64.S \ -- src/x86/ffi.c src/x86/sysv.S src/x86/win32.S src/x86/win64.S \ -- src/x86/darwin.S src/x86/freebsd.S \ -- src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h \ -- src/pa/ffitarget.h src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \ -- src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c \ -- libtool-version ChangeLog.libffi m4/libtool.m4 \ -- m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 -+EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj \ -+ src/aarch64/ffi.c src/aarch64/ffitarget.h src/aarch64/sysv.S \ -+ src/alpha/ffi.c src/alpha/osf.S \ -+ src/alpha/ffitarget.h src/arc/ffi.c src/arc/arcompact.S \ -+ src/arc/ffitarget.h src/arm/ffi.c src/arm/sysv.S \ -+ src/arm/ffitarget.h src/avr32/ffi.c src/avr32/sysv.S \ -+ src/avr32/ffitarget.h src/cris/ffi.c src/cris/sysv.S \ -+ src/cris/ffitarget.h src/ia64/ffi.c src/ia64/ffitarget.h \ -+ src/ia64/ia64_flags.h src/ia64/unix.S src/mips/ffi.c \ -+ src/mips/n32.S src/mips/o32.S src/metag/ffi.c \ -+ src/metag/ffitarget.h src/metag/sysv.S src/moxie/ffi.c \ -+ src/moxie/ffitarget.h src/moxie/eabi.S src/mips/ffitarget.h \ -+ src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \ -+ src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \ -+ src/m88k/ffi.c src/m88k/obsd.S src/m88k/ffitarget.h \ -+ src/microblaze/ffi.c src/microblaze/sysv.S \ -+ src/microblaze/ffitarget.h \ -+ src/nios2/ffi.c src/nios2/ffitarget.h src/nios2/sysv.S \ -+ src/powerpc/ffi.c src/powerpc/ffi_powerpc.h \ -+ src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c \ -+ src/powerpc/sysv.S src/powerpc/linux64.S \ -+ src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S \ -+ src/powerpc/asm.h src/powerpc/aix.S src/powerpc/darwin.S \ -+ src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \ -+ src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \ -+ src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \ -+ src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h src/sh64/ffi.c \ -+ src/sh64/sysv.S src/sh64/ffitarget.h src/sparc/v8.S \ -+ src/sparc/v9.S src/sparc/ffitarget.h src/sparc/ffi.c \ -+ src/x86/darwin64.S src/x86/ffi.c src/x86/sysv.S \ -+ src/x86/win32.S src/x86/darwin.S src/x86/win64.S \ -+ src/x86/freebsd.S src/x86/ffi64.c src/x86/unix64.S \ -+ src/x86/ffitarget.h src/pa/ffitarget.h src/pa/ffi.c \ -+ src/pa/linux.S src/pa/hpux32.S src/frv/ffi.c src/bfin/ffi.c \ -+ src/bfin/ffitarget.h src/bfin/sysv.S src/frv/eabi.S \ -+ src/frv/ffitarget.h src/dlmalloc.c src/tile/ffi.c \ -+ src/tile/ffitarget.h src/tile/tile.S libtool-version \ -+ src/vax/ffi.c src/vax/ffitarget.h src/vax/elfbsd.S \ -+ src/xtensa/ffitarget.h src/xtensa/ffi.c src/xtensa/sysv.S \ -+ ChangeLog.libffi m4/libtool.m4 m4/lt~obsolete.m4 \ -+ m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 \ -+ m4/ltversion.m4 src/arm/gentramp.sh src/debug.c msvcc.sh \ -+ generate-darwin-source-and-headers.py \ -+ libffi.xcodeproj/project.pbxproj src/arm/trampoline.S \ -+ libtool-ldflags ChangeLog.libffi-3.1 - - info_TEXINFOS = doc/libffi.texi - - # Work around what appears to be a GNU make bug handling MAKEFLAGS - # values defined in terms of make variables, as is the case for CC and - # friends when we are called from the top level Makefile. - AM_MAKEFLAGS = \ - 'AR_FLAGS=$(AR_FLAGS)' \ -@@ -462,46 +680,54 @@ AM_MAKEFLAGS = \ - 'AS=$(AS)' \ - 'CC=$(CC)' \ - 'CXX=$(CXX)' \ - 'LD=$(LD)' \ - 'NM=$(NM)' \ - 'RANLIB=$(RANLIB)' \ - 'DESTDIR=$(DESTDIR)' - -+ -+# Subdir rules rely on $(FLAGS_TO_PASS) -+FLAGS_TO_PASS = $(AM_MAKEFLAGS) - MAKEOVERRIDES = --ACLOCAL_AMFLAGS = $(ACLOCAL_AMFLAGS) -I m4 --lib_LTLIBRARIES = libffi.la -+toolexeclib_LTLIBRARIES = libffi.la - noinst_LTLIBRARIES = libffi_convenience.la --libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c \ -+libffi_la_SOURCES = src/prep_cif.c src/types.c \ - src/raw_api.c src/java_raw_api.c src/closures.c - - pkgconfigdir = $(libdir)/pkgconfig - pkgconfig_DATA = libffi.pc - nodist_libffi_la_SOURCES = $(am__append_1) $(am__append_2) \ - $(am__append_3) $(am__append_4) $(am__append_5) \ - $(am__append_6) $(am__append_7) $(am__append_8) \ - $(am__append_9) $(am__append_10) $(am__append_11) \ - $(am__append_12) $(am__append_13) $(am__append_14) \ - $(am__append_15) $(am__append_16) $(am__append_17) \ - $(am__append_18) $(am__append_19) $(am__append_20) \ - $(am__append_21) $(am__append_22) $(am__append_23) \ -- $(am__append_24) $(am__append_25) $(am__append_26) -+ $(am__append_24) $(am__append_25) $(am__append_26) \ -+ $(am__append_27) $(am__append_28) $(am__append_29) \ -+ $(am__append_30) $(am__append_31) $(am__append_32) \ -+ $(am__append_33) $(am__append_34) $(am__append_35) \ -+ $(am__append_36) $(am__append_37) $(am__append_38) \ -+ $(am__append_39) - libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) - nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) --AM_CFLAGS = -Wall -g -fexceptions $(am__append_27) $(am__append_28) --libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS) -+LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS)) -+AM_CFLAGS = $(am__append_40) -+libffi_la_LDFLAGS = -no-undefined -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS) - AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src - AM_CCASFLAGS = $(AM_CPPFLAGS) - all: fficonfig.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - - .SUFFIXES: - .SUFFIXES: .S .c .dvi .lo .o .obj .ps --am--refresh: -+am--refresh: Makefile - @: - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ -@@ -527,111 +753,125 @@ Makefile: $(srcdir)/Makefile.in $(top_bu - - $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) - $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - $(am__aclocal_m4_deps): - - fficonfig.h: stamp-h1 -- @if test ! -f $@; then \ -- rm -f stamp-h1; \ -- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ -- else :; fi -+ @if test ! -f $@; then rm -f stamp-h1; else :; fi -+ @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi - - stamp-h1: $(srcdir)/fficonfig.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status fficonfig.h - $(srcdir)/fficonfig.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - - distclean-hdr: - -rm -f fficonfig.h stamp-h1 - libffi.pc: $(top_builddir)/config.status $(srcdir)/libffi.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ --install-libLTLIBRARIES: $(lib_LTLIBRARIES) -+ -+clean-noinstLTLIBRARIES: -+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) -+ @list='$(noinst_LTLIBRARIES)'; \ -+ locs=`for p in $$list; do echo $$p; done | \ -+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ -+ sort -u`; \ -+ test -z "$$locs" || { \ -+ echo rm -f $${locs}; \ -+ rm -f $${locs}; \ -+ } -+ -+install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES) - @$(NORMAL_INSTALL) -- test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" -- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ -+ @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ -- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ -- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \ -+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \ -+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \ - } - --uninstall-libLTLIBRARIES: -+uninstall-toolexeclibLTLIBRARIES: - @$(NORMAL_UNINSTALL) -- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ -+ @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ -- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ -- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ -+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \ -+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \ - done - --clean-libLTLIBRARIES: -- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) -- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ -- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ -- test "$$dir" != "$$p" || dir=.; \ -- echo "rm -f \"$${dir}/so_locations\""; \ -- rm -f "$${dir}/so_locations"; \ -- done -- --clean-noinstLTLIBRARIES: -- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) -- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ -- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ -- test "$$dir" != "$$p" || dir=.; \ -- echo "rm -f \"$${dir}/so_locations\""; \ -- rm -f "$${dir}/so_locations"; \ -- done -+clean-toolexeclibLTLIBRARIES: -+ -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES) -+ @list='$(toolexeclib_LTLIBRARIES)'; \ -+ locs=`for p in $$list; do echo $$p; done | \ -+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ -+ sort -u`; \ -+ test -z "$$locs" || { \ -+ echo rm -f $${locs}; \ -+ rm -f $${locs}; \ -+ } - src/$(am__dirstamp): - @$(MKDIR_P) src - @: > src/$(am__dirstamp) - src/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/$(DEPDIR) - @: > src/$(DEPDIR)/$(am__dirstamp) --src/debug.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) - src/prep_cif.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) - src/types.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) - src/raw_api.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) - src/java_raw_api.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) - src/closures.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -+src/debug.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) - src/mips/$(am__dirstamp): - @$(MKDIR_P) src/mips - @: > src/mips/$(am__dirstamp) - src/mips/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/mips/$(DEPDIR) - @: > src/mips/$(DEPDIR)/$(am__dirstamp) - src/mips/ffi.lo: src/mips/$(am__dirstamp) \ - src/mips/$(DEPDIR)/$(am__dirstamp) - src/mips/o32.lo: src/mips/$(am__dirstamp) \ - src/mips/$(DEPDIR)/$(am__dirstamp) - src/mips/n32.lo: src/mips/$(am__dirstamp) \ - src/mips/$(DEPDIR)/$(am__dirstamp) -+src/bfin/$(am__dirstamp): -+ @$(MKDIR_P) src/bfin -+ @: > src/bfin/$(am__dirstamp) -+src/bfin/$(DEPDIR)/$(am__dirstamp): -+ @$(MKDIR_P) src/bfin/$(DEPDIR) -+ @: > src/bfin/$(DEPDIR)/$(am__dirstamp) -+src/bfin/ffi.lo: src/bfin/$(am__dirstamp) \ -+ src/bfin/$(DEPDIR)/$(am__dirstamp) -+src/bfin/sysv.lo: src/bfin/$(am__dirstamp) \ -+ src/bfin/$(DEPDIR)/$(am__dirstamp) - src/x86/$(am__dirstamp): - @$(MKDIR_P) src/x86 - @: > src/x86/$(am__dirstamp) - src/x86/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/x86/$(DEPDIR) - @: > src/x86/$(DEPDIR)/$(am__dirstamp) - src/x86/ffi.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) - src/x86/sysv.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) -+src/x86/win32.lo: src/x86/$(am__dirstamp) \ -+ src/x86/$(DEPDIR)/$(am__dirstamp) - src/x86/freebsd.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) --src/x86/win32.lo: src/x86/$(am__dirstamp) \ -- src/x86/$(DEPDIR)/$(am__dirstamp) - src/x86/win64.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) - src/x86/darwin.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) - src/x86/ffi64.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) - src/x86/darwin64.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) -@@ -682,24 +922,68 @@ src/m68k/$(am__dirstamp): - @: > src/m68k/$(am__dirstamp) - src/m68k/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/m68k/$(DEPDIR) - @: > src/m68k/$(DEPDIR)/$(am__dirstamp) - src/m68k/ffi.lo: src/m68k/$(am__dirstamp) \ - src/m68k/$(DEPDIR)/$(am__dirstamp) - src/m68k/sysv.lo: src/m68k/$(am__dirstamp) \ - src/m68k/$(DEPDIR)/$(am__dirstamp) -+src/m88k/$(am__dirstamp): -+ @$(MKDIR_P) src/m88k -+ @: > src/m88k/$(am__dirstamp) -+src/m88k/$(DEPDIR)/$(am__dirstamp): -+ @$(MKDIR_P) src/m88k/$(DEPDIR) -+ @: > src/m88k/$(DEPDIR)/$(am__dirstamp) -+src/m88k/ffi.lo: src/m88k/$(am__dirstamp) \ -+ src/m88k/$(DEPDIR)/$(am__dirstamp) -+src/m88k/obsd.lo: src/m88k/$(am__dirstamp) \ -+ src/m88k/$(DEPDIR)/$(am__dirstamp) -+src/moxie/$(am__dirstamp): -+ @$(MKDIR_P) src/moxie -+ @: > src/moxie/$(am__dirstamp) -+src/moxie/$(DEPDIR)/$(am__dirstamp): -+ @$(MKDIR_P) src/moxie/$(DEPDIR) -+ @: > src/moxie/$(DEPDIR)/$(am__dirstamp) -+src/moxie/ffi.lo: src/moxie/$(am__dirstamp) \ -+ src/moxie/$(DEPDIR)/$(am__dirstamp) -+src/moxie/eabi.lo: src/moxie/$(am__dirstamp) \ -+ src/moxie/$(DEPDIR)/$(am__dirstamp) -+src/microblaze/$(am__dirstamp): -+ @$(MKDIR_P) src/microblaze -+ @: > src/microblaze/$(am__dirstamp) -+src/microblaze/$(DEPDIR)/$(am__dirstamp): -+ @$(MKDIR_P) src/microblaze/$(DEPDIR) -+ @: > src/microblaze/$(DEPDIR)/$(am__dirstamp) -+src/microblaze/ffi.lo: src/microblaze/$(am__dirstamp) \ -+ src/microblaze/$(DEPDIR)/$(am__dirstamp) -+src/microblaze/sysv.lo: src/microblaze/$(am__dirstamp) \ -+ src/microblaze/$(DEPDIR)/$(am__dirstamp) -+src/nios2/$(am__dirstamp): -+ @$(MKDIR_P) src/nios2 -+ @: > src/nios2/$(am__dirstamp) -+src/nios2/$(DEPDIR)/$(am__dirstamp): -+ @$(MKDIR_P) src/nios2/$(DEPDIR) -+ @: > src/nios2/$(DEPDIR)/$(am__dirstamp) -+src/nios2/sysv.lo: src/nios2/$(am__dirstamp) \ -+ src/nios2/$(DEPDIR)/$(am__dirstamp) -+src/nios2/ffi.lo: src/nios2/$(am__dirstamp) \ -+ src/nios2/$(DEPDIR)/$(am__dirstamp) - src/powerpc/$(am__dirstamp): - @$(MKDIR_P) src/powerpc - @: > src/powerpc/$(am__dirstamp) - src/powerpc/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/powerpc/$(DEPDIR) - @: > src/powerpc/$(DEPDIR)/$(am__dirstamp) - src/powerpc/ffi.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -+src/powerpc/ffi_sysv.lo: src/powerpc/$(am__dirstamp) \ -+ src/powerpc/$(DEPDIR)/$(am__dirstamp) -+src/powerpc/ffi_linux64.lo: src/powerpc/$(am__dirstamp) \ -+ src/powerpc/$(DEPDIR)/$(am__dirstamp) - src/powerpc/sysv.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) - src/powerpc/ppc_closure.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) - src/powerpc/linux64.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) - src/powerpc/linux64_closure.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -@@ -708,26 +992,48 @@ src/powerpc/ffi_darwin.lo: src/powerpc/$ - src/powerpc/aix.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) - src/powerpc/aix_closure.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) - src/powerpc/darwin.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) - src/powerpc/darwin_closure.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -+src/aarch64/$(am__dirstamp): -+ @$(MKDIR_P) src/aarch64 -+ @: > src/aarch64/$(am__dirstamp) -+src/aarch64/$(DEPDIR)/$(am__dirstamp): -+ @$(MKDIR_P) src/aarch64/$(DEPDIR) -+ @: > src/aarch64/$(DEPDIR)/$(am__dirstamp) -+src/aarch64/sysv.lo: src/aarch64/$(am__dirstamp) \ -+ src/aarch64/$(DEPDIR)/$(am__dirstamp) -+src/aarch64/ffi.lo: src/aarch64/$(am__dirstamp) \ -+ src/aarch64/$(DEPDIR)/$(am__dirstamp) -+src/arc/$(am__dirstamp): -+ @$(MKDIR_P) src/arc -+ @: > src/arc/$(am__dirstamp) -+src/arc/$(DEPDIR)/$(am__dirstamp): -+ @$(MKDIR_P) src/arc/$(DEPDIR) -+ @: > src/arc/$(DEPDIR)/$(am__dirstamp) -+src/arc/arcompact.lo: src/arc/$(am__dirstamp) \ -+ src/arc/$(DEPDIR)/$(am__dirstamp) -+src/arc/ffi.lo: src/arc/$(am__dirstamp) \ -+ src/arc/$(DEPDIR)/$(am__dirstamp) - src/arm/$(am__dirstamp): - @$(MKDIR_P) src/arm - @: > src/arm/$(am__dirstamp) - src/arm/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/arm/$(DEPDIR) - @: > src/arm/$(DEPDIR)/$(am__dirstamp) - src/arm/sysv.lo: src/arm/$(am__dirstamp) \ - src/arm/$(DEPDIR)/$(am__dirstamp) - src/arm/ffi.lo: src/arm/$(am__dirstamp) \ - src/arm/$(DEPDIR)/$(am__dirstamp) -+src/arm/trampoline.lo: src/arm/$(am__dirstamp) \ -+ src/arm/$(DEPDIR)/$(am__dirstamp) - src/avr32/$(am__dirstamp): - @$(MKDIR_P) src/avr32 - @: > src/avr32/$(am__dirstamp) - src/avr32/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/avr32/$(DEPDIR) - @: > src/avr32/$(DEPDIR)/$(am__dirstamp) - src/avr32/sysv.lo: src/avr32/$(am__dirstamp) \ - src/avr32/$(DEPDIR)/$(am__dirstamp) -@@ -748,26 +1054,16 @@ src/frv/$(am__dirstamp): - @: > src/frv/$(am__dirstamp) - src/frv/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/frv/$(DEPDIR) - @: > src/frv/$(DEPDIR)/$(am__dirstamp) - src/frv/eabi.lo: src/frv/$(am__dirstamp) \ - src/frv/$(DEPDIR)/$(am__dirstamp) - src/frv/ffi.lo: src/frv/$(am__dirstamp) \ - src/frv/$(DEPDIR)/$(am__dirstamp) --src/moxie/$(am__dirstamp): -- @$(MKDIR_P) src/moxie -- @: > src/moxie/$(am__dirstamp) --src/moxie/$(DEPDIR)/$(am__dirstamp): -- @$(MKDIR_P) src/moxie/$(DEPDIR) -- @: > src/moxie/$(DEPDIR)/$(am__dirstamp) --src/moxie/eabi.lo: src/moxie/$(am__dirstamp) \ -- src/moxie/$(DEPDIR)/$(am__dirstamp) --src/moxie/ffi.lo: src/moxie/$(am__dirstamp) \ -- src/moxie/$(DEPDIR)/$(am__dirstamp) - src/s390/$(am__dirstamp): - @$(MKDIR_P) src/s390 - @: > src/s390/$(am__dirstamp) - src/s390/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/s390/$(DEPDIR) - @: > src/s390/$(DEPDIR)/$(am__dirstamp) - src/s390/sysv.lo: src/s390/$(am__dirstamp) \ - src/s390/$(DEPDIR)/$(am__dirstamp) -@@ -800,282 +1096,297 @@ src/pa/$(am__dirstamp): - src/pa/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/pa/$(DEPDIR) - @: > src/pa/$(DEPDIR)/$(am__dirstamp) - src/pa/linux.lo: src/pa/$(am__dirstamp) \ - src/pa/$(DEPDIR)/$(am__dirstamp) - src/pa/ffi.lo: src/pa/$(am__dirstamp) src/pa/$(DEPDIR)/$(am__dirstamp) - src/pa/hpux32.lo: src/pa/$(am__dirstamp) \ - src/pa/$(DEPDIR)/$(am__dirstamp) --libffi.la: $(libffi_la_OBJECTS) $(libffi_la_DEPENDENCIES) -- $(libffi_la_LINK) -rpath $(libdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS) --libffi_convenience.la: $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_DEPENDENCIES) -- $(LINK) $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_LIBADD) $(LIBS) -+src/tile/$(am__dirstamp): -+ @$(MKDIR_P) src/tile -+ @: > src/tile/$(am__dirstamp) -+src/tile/$(DEPDIR)/$(am__dirstamp): -+ @$(MKDIR_P) src/tile/$(DEPDIR) -+ @: > src/tile/$(DEPDIR)/$(am__dirstamp) -+src/tile/tile.lo: src/tile/$(am__dirstamp) \ -+ src/tile/$(DEPDIR)/$(am__dirstamp) -+src/tile/ffi.lo: src/tile/$(am__dirstamp) \ -+ src/tile/$(DEPDIR)/$(am__dirstamp) -+src/xtensa/$(am__dirstamp): -+ @$(MKDIR_P) src/xtensa -+ @: > src/xtensa/$(am__dirstamp) -+src/xtensa/$(DEPDIR)/$(am__dirstamp): -+ @$(MKDIR_P) src/xtensa/$(DEPDIR) -+ @: > src/xtensa/$(DEPDIR)/$(am__dirstamp) -+src/xtensa/sysv.lo: src/xtensa/$(am__dirstamp) \ -+ src/xtensa/$(DEPDIR)/$(am__dirstamp) -+src/xtensa/ffi.lo: src/xtensa/$(am__dirstamp) \ -+ src/xtensa/$(DEPDIR)/$(am__dirstamp) -+src/metag/$(am__dirstamp): -+ @$(MKDIR_P) src/metag -+ @: > src/metag/$(am__dirstamp) -+src/metag/$(DEPDIR)/$(am__dirstamp): -+ @$(MKDIR_P) src/metag/$(DEPDIR) -+ @: > src/metag/$(DEPDIR)/$(am__dirstamp) -+src/metag/sysv.lo: src/metag/$(am__dirstamp) \ -+ src/metag/$(DEPDIR)/$(am__dirstamp) -+src/metag/ffi.lo: src/metag/$(am__dirstamp) \ -+ src/metag/$(DEPDIR)/$(am__dirstamp) -+src/vax/$(am__dirstamp): -+ @$(MKDIR_P) src/vax -+ @: > src/vax/$(am__dirstamp) -+src/vax/$(DEPDIR)/$(am__dirstamp): -+ @$(MKDIR_P) src/vax/$(DEPDIR) -+ @: > src/vax/$(DEPDIR)/$(am__dirstamp) -+src/vax/elfbsd.lo: src/vax/$(am__dirstamp) \ -+ src/vax/$(DEPDIR)/$(am__dirstamp) -+src/vax/ffi.lo: src/vax/$(am__dirstamp) \ -+ src/vax/$(DEPDIR)/$(am__dirstamp) -+ -+libffi.la: $(libffi_la_OBJECTS) $(libffi_la_DEPENDENCIES) $(EXTRA_libffi_la_DEPENDENCIES) -+ $(AM_V_CCLD)$(libffi_la_LINK) -rpath $(toolexeclibdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS) -+ -+libffi_convenience.la: $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_DEPENDENCIES) $(EXTRA_libffi_convenience_la_DEPENDENCIES) -+ $(AM_V_CCLD)$(LINK) $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_LIBADD) $(LIBS) - - mostlyclean-compile: - -rm -f *.$(OBJEXT) -- -rm -f src/alpha/ffi.$(OBJEXT) -- -rm -f src/alpha/ffi.lo -- -rm -f src/alpha/osf.$(OBJEXT) -- -rm -f src/alpha/osf.lo -- -rm -f src/arm/ffi.$(OBJEXT) -- -rm -f src/arm/ffi.lo -- -rm -f src/arm/sysv.$(OBJEXT) -- -rm -f src/arm/sysv.lo -- -rm -f src/avr32/ffi.$(OBJEXT) -- -rm -f src/avr32/ffi.lo -- -rm -f src/avr32/sysv.$(OBJEXT) -- -rm -f src/avr32/sysv.lo -- -rm -f src/closures.$(OBJEXT) -- -rm -f src/closures.lo -- -rm -f src/cris/ffi.$(OBJEXT) -- -rm -f src/cris/ffi.lo -- -rm -f src/cris/sysv.$(OBJEXT) -- -rm -f src/cris/sysv.lo -- -rm -f src/debug.$(OBJEXT) -- -rm -f src/debug.lo -- -rm -f src/frv/eabi.$(OBJEXT) -- -rm -f src/frv/eabi.lo -- -rm -f src/frv/ffi.$(OBJEXT) -- -rm -f src/frv/ffi.lo -- -rm -f src/ia64/ffi.$(OBJEXT) -- -rm -f src/ia64/ffi.lo -- -rm -f src/ia64/unix.$(OBJEXT) -- -rm -f src/ia64/unix.lo -- -rm -f src/java_raw_api.$(OBJEXT) -- -rm -f src/java_raw_api.lo -- -rm -f src/m32r/ffi.$(OBJEXT) -- -rm -f src/m32r/ffi.lo -- -rm -f src/m32r/sysv.$(OBJEXT) -- -rm -f src/m32r/sysv.lo -- -rm -f src/m68k/ffi.$(OBJEXT) -- -rm -f src/m68k/ffi.lo -- -rm -f src/m68k/sysv.$(OBJEXT) -- -rm -f src/m68k/sysv.lo -- -rm -f src/mips/ffi.$(OBJEXT) -- -rm -f src/mips/ffi.lo -- -rm -f src/mips/n32.$(OBJEXT) -- -rm -f src/mips/n32.lo -- -rm -f src/mips/o32.$(OBJEXT) -- -rm -f src/mips/o32.lo -- -rm -f src/moxie/eabi.$(OBJEXT) -- -rm -f src/moxie/eabi.lo -- -rm -f src/moxie/ffi.$(OBJEXT) -- -rm -f src/moxie/ffi.lo -- -rm -f src/pa/ffi.$(OBJEXT) -- -rm -f src/pa/ffi.lo -- -rm -f src/pa/hpux32.$(OBJEXT) -- -rm -f src/pa/hpux32.lo -- -rm -f src/pa/linux.$(OBJEXT) -- -rm -f src/pa/linux.lo -- -rm -f src/powerpc/aix.$(OBJEXT) -- -rm -f src/powerpc/aix.lo -- -rm -f src/powerpc/aix_closure.$(OBJEXT) -- -rm -f src/powerpc/aix_closure.lo -- -rm -f src/powerpc/darwin.$(OBJEXT) -- -rm -f src/powerpc/darwin.lo -- -rm -f src/powerpc/darwin_closure.$(OBJEXT) -- -rm -f src/powerpc/darwin_closure.lo -- -rm -f src/powerpc/ffi.$(OBJEXT) -- -rm -f src/powerpc/ffi.lo -- -rm -f src/powerpc/ffi_darwin.$(OBJEXT) -- -rm -f src/powerpc/ffi_darwin.lo -- -rm -f src/powerpc/linux64.$(OBJEXT) -- -rm -f src/powerpc/linux64.lo -- -rm -f src/powerpc/linux64_closure.$(OBJEXT) -- -rm -f src/powerpc/linux64_closure.lo -- -rm -f src/powerpc/ppc_closure.$(OBJEXT) -- -rm -f src/powerpc/ppc_closure.lo -- -rm -f src/powerpc/sysv.$(OBJEXT) -- -rm -f src/powerpc/sysv.lo -- -rm -f src/prep_cif.$(OBJEXT) -- -rm -f src/prep_cif.lo -- -rm -f src/raw_api.$(OBJEXT) -- -rm -f src/raw_api.lo -- -rm -f src/s390/ffi.$(OBJEXT) -- -rm -f src/s390/ffi.lo -- -rm -f src/s390/sysv.$(OBJEXT) -- -rm -f src/s390/sysv.lo -- -rm -f src/sh/ffi.$(OBJEXT) -- -rm -f src/sh/ffi.lo -- -rm -f src/sh/sysv.$(OBJEXT) -- -rm -f src/sh/sysv.lo -- -rm -f src/sh64/ffi.$(OBJEXT) -- -rm -f src/sh64/ffi.lo -- -rm -f src/sh64/sysv.$(OBJEXT) -- -rm -f src/sh64/sysv.lo -- -rm -f src/sparc/ffi.$(OBJEXT) -- -rm -f src/sparc/ffi.lo -- -rm -f src/sparc/v8.$(OBJEXT) -- -rm -f src/sparc/v8.lo -- -rm -f src/sparc/v9.$(OBJEXT) -- -rm -f src/sparc/v9.lo -- -rm -f src/types.$(OBJEXT) -- -rm -f src/types.lo -- -rm -f src/x86/darwin.$(OBJEXT) -- -rm -f src/x86/darwin.lo -- -rm -f src/x86/darwin64.$(OBJEXT) -- -rm -f src/x86/darwin64.lo -- -rm -f src/x86/ffi.$(OBJEXT) -- -rm -f src/x86/ffi.lo -- -rm -f src/x86/ffi64.$(OBJEXT) -- -rm -f src/x86/ffi64.lo -- -rm -f src/x86/freebsd.$(OBJEXT) -- -rm -f src/x86/freebsd.lo -- -rm -f src/x86/sysv.$(OBJEXT) -- -rm -f src/x86/sysv.lo -- -rm -f src/x86/unix64.$(OBJEXT) -- -rm -f src/x86/unix64.lo -- -rm -f src/x86/win32.$(OBJEXT) -- -rm -f src/x86/win32.lo -- -rm -f src/x86/win64.$(OBJEXT) -- -rm -f src/x86/win64.lo -+ -rm -f src/*.$(OBJEXT) -+ -rm -f src/*.lo -+ -rm -f src/aarch64/*.$(OBJEXT) -+ -rm -f src/aarch64/*.lo -+ -rm -f src/alpha/*.$(OBJEXT) -+ -rm -f src/alpha/*.lo -+ -rm -f src/arc/*.$(OBJEXT) -+ -rm -f src/arc/*.lo -+ -rm -f src/arm/*.$(OBJEXT) -+ -rm -f src/arm/*.lo -+ -rm -f src/avr32/*.$(OBJEXT) -+ -rm -f src/avr32/*.lo -+ -rm -f src/bfin/*.$(OBJEXT) -+ -rm -f src/bfin/*.lo -+ -rm -f src/cris/*.$(OBJEXT) -+ -rm -f src/cris/*.lo -+ -rm -f src/frv/*.$(OBJEXT) -+ -rm -f src/frv/*.lo -+ -rm -f src/ia64/*.$(OBJEXT) -+ -rm -f src/ia64/*.lo -+ -rm -f src/m32r/*.$(OBJEXT) -+ -rm -f src/m32r/*.lo -+ -rm -f src/m68k/*.$(OBJEXT) -+ -rm -f src/m68k/*.lo -+ -rm -f src/m88k/*.$(OBJEXT) -+ -rm -f src/m88k/*.lo -+ -rm -f src/metag/*.$(OBJEXT) -+ -rm -f src/metag/*.lo -+ -rm -f src/microblaze/*.$(OBJEXT) -+ -rm -f src/microblaze/*.lo -+ -rm -f src/mips/*.$(OBJEXT) -+ -rm -f src/mips/*.lo -+ -rm -f src/moxie/*.$(OBJEXT) -+ -rm -f src/moxie/*.lo -+ -rm -f src/nios2/*.$(OBJEXT) -+ -rm -f src/nios2/*.lo -+ -rm -f src/pa/*.$(OBJEXT) -+ -rm -f src/pa/*.lo -+ -rm -f src/powerpc/*.$(OBJEXT) -+ -rm -f src/powerpc/*.lo -+ -rm -f src/s390/*.$(OBJEXT) -+ -rm -f src/s390/*.lo -+ -rm -f src/sh/*.$(OBJEXT) -+ -rm -f src/sh/*.lo -+ -rm -f src/sh64/*.$(OBJEXT) -+ -rm -f src/sh64/*.lo -+ -rm -f src/sparc/*.$(OBJEXT) -+ -rm -f src/sparc/*.lo -+ -rm -f src/tile/*.$(OBJEXT) -+ -rm -f src/tile/*.lo -+ -rm -f src/vax/*.$(OBJEXT) -+ -rm -f src/vax/*.lo -+ -rm -f src/x86/*.$(OBJEXT) -+ -rm -f src/x86/*.lo -+ -rm -f src/xtensa/*.$(OBJEXT) -+ -rm -f src/xtensa/*.lo - - distclean-compile: - -rm -f *.tab.c - - @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/closures.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/debug.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/java_raw_api.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/prep_cif.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/raw_api.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/types.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/aarch64/$(DEPDIR)/ffi.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/aarch64/$(DEPDIR)/sysv.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/alpha/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/alpha/$(DEPDIR)/osf.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/arc/$(DEPDIR)/arcompact.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/arc/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/sysv.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/trampoline.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/avr32/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/avr32/$(DEPDIR)/sysv.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/bfin/$(DEPDIR)/ffi.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/bfin/$(DEPDIR)/sysv.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/cris/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/cris/$(DEPDIR)/sysv.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/frv/$(DEPDIR)/eabi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/frv/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/ia64/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/ia64/$(DEPDIR)/unix.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/m32r/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/m32r/$(DEPDIR)/sysv.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/m68k/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/m68k/$(DEPDIR)/sysv.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/m88k/$(DEPDIR)/ffi.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/m88k/$(DEPDIR)/obsd.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/metag/$(DEPDIR)/ffi.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/metag/$(DEPDIR)/sysv.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/microblaze/$(DEPDIR)/ffi.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/microblaze/$(DEPDIR)/sysv.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/n32.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/o32.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/eabi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/ffi.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/nios2/$(DEPDIR)/ffi.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/nios2/$(DEPDIR)/sysv.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/hpux32.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/linux.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/aix.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/aix_closure.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/darwin.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/darwin_closure.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_darwin.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_linux64.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_sysv.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/linux64.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/linux64_closure.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ppc_closure.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/sysv.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/s390/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/s390/$(DEPDIR)/sysv.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/sh/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/sh/$(DEPDIR)/sysv.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/sh64/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/sh64/$(DEPDIR)/sysv.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/v8.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/v9.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/tile/$(DEPDIR)/ffi.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/tile/$(DEPDIR)/tile.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/vax/$(DEPDIR)/elfbsd.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/vax/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/darwin.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/darwin64.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi64.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/freebsd.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/sysv.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/unix64.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win32.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win64.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/xtensa/$(DEPDIR)/ffi.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@src/xtensa/$(DEPDIR)/sysv.Plo@am__quote@ - --%.o: %.S --@am__fastdepCCAS_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -+.S.o: -+@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ - @am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ - @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po --@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ --@am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ $< -+@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $< - --%.obj: %.S --@am__fastdepCCAS_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -+.S.obj: -+@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ - @am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ - @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po --@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ --@am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` -+@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - --%.lo: %.S --@am__fastdepCCAS_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -+.S.lo: -+@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ - @am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ - @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo --@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ --@am__fastdepCCAS_FALSE@ $(LTCPPASCOMPILE) -c -o $@ $< -+@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o $@ $< - --%.o: %.c --@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -+.c.o: -+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ - @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ - @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po --@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ --@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - --%.obj: %.c --@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -+.c.obj: -+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ - @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ - @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po --@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ --@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - --%.lo: %.c --@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -+.c.lo: -+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ - @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ - @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo --@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ --@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - - mostlyclean-libtool: - -rm -f *.lo - - clean-libtool: - -rm -rf .libs _libs - -rm -rf src/.libs src/_libs -+ -rm -rf src/aarch64/.libs src/aarch64/_libs - -rm -rf src/alpha/.libs src/alpha/_libs -+ -rm -rf src/arc/.libs src/arc/_libs - -rm -rf src/arm/.libs src/arm/_libs - -rm -rf src/avr32/.libs src/avr32/_libs -+ -rm -rf src/bfin/.libs src/bfin/_libs - -rm -rf src/cris/.libs src/cris/_libs - -rm -rf src/frv/.libs src/frv/_libs - -rm -rf src/ia64/.libs src/ia64/_libs - -rm -rf src/m32r/.libs src/m32r/_libs - -rm -rf src/m68k/.libs src/m68k/_libs -+ -rm -rf src/m88k/.libs src/m88k/_libs -+ -rm -rf src/metag/.libs src/metag/_libs -+ -rm -rf src/microblaze/.libs src/microblaze/_libs - -rm -rf src/mips/.libs src/mips/_libs - -rm -rf src/moxie/.libs src/moxie/_libs -+ -rm -rf src/nios2/.libs src/nios2/_libs - -rm -rf src/pa/.libs src/pa/_libs - -rm -rf src/powerpc/.libs src/powerpc/_libs - -rm -rf src/s390/.libs src/s390/_libs - -rm -rf src/sh/.libs src/sh/_libs - -rm -rf src/sh64/.libs src/sh64/_libs - -rm -rf src/sparc/.libs src/sparc/_libs -+ -rm -rf src/tile/.libs src/tile/_libs -+ -rm -rf src/vax/.libs src/vax/_libs - -rm -rf src/x86/.libs src/x86/_libs -+ -rm -rf src/xtensa/.libs src/xtensa/_libs - - distclean-libtool: - -rm -f libtool config.lt - doc/$(am__dirstamp): - @$(MKDIR_P) doc - @: > doc/$(am__dirstamp) - - $(srcdir)/doc/libffi.info: doc/libffi.texi $(srcdir)/doc/version.texi -- restore=: && backupdir="$(am__leading_dot)am$$$$" && \ -+ $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ - am__cwd=`pwd` && $(am__cd) $(srcdir) && \ - rm -rf $$backupdir && mkdir $$backupdir && \ - if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ - for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ - if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ - done; \ - else :; fi && \ - cd "$$am__cwd"; \ -@@ -1087,28 +1398,30 @@ doc/$(am__dirstamp): - else \ - rc=$$?; \ - $(am__cd) $(srcdir) && \ - $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ - fi; \ - rm -rf $$backupdir; exit $$rc - - doc/libffi.dvi: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp) -- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ -+ $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ - MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \ -- $(TEXI2DVI) -o $@ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi -+ $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ -+ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi - - doc/libffi.pdf: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp) -- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ -+ $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ - MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \ -- $(TEXI2PDF) -o $@ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi -+ $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ -+ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi - - doc/libffi.html: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp) -- rm -rf $(@:.html=.htp) -- if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \ -+ $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) -+ $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \ - -o $(@:.html=.htp) `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi; \ - then \ - rm -rf $@; \ - if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ - mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ - else \ - if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ - rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ -@@ -1129,19 +1442,19 @@ doc/libffi.html: doc/libffi.texi $(srcdi - -@rm -f vti.tmp - @cp $(srcdir)/doc/version.texi $@ - - mostlyclean-vti: - -rm -f vti.tmp - - maintainer-clean-vti: - @MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/doc/stamp-vti $(srcdir)/doc/version.texi --%.ps: %.dvi -- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ -- $(DVIPS) -o $@ $< -+.dvi.ps: -+ $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ -+ $(DVIPS) $(AM_V_texinfo) -o $@ $< - - uninstall-dvi-am: - @$(NORMAL_UNINSTALL) - @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ - rm -f "$(DESTDIR)$(dvidir)/$$f"; \ -@@ -1153,19 +1466,17 @@ uninstall-html-am: - for p in $$list; do \ - $(am__strip_dir) \ - echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ - rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ - done - - uninstall-info-am: - @$(PRE_UNINSTALL) -- @if test -d '$(DESTDIR)$(infodir)' && \ -- (install-info --version && \ -- install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ -+ @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - relfile=`echo "$$file" | sed 's|^.*/||'`; \ - echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ - if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ - then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ - done; \ - else :; fi -@@ -1212,184 +1523,155 @@ dist-info: $(INFO_DEPS) - relfile=`expr "$$file" : "$$d/\(.*\)"`; \ - test -f "$(distdir)/$$relfile" || \ - cp -p $$file "$(distdir)/$$relfile"; \ - else :; fi; \ - done; \ - done - - mostlyclean-aminfo: -- -rm -rf libffi.aux libffi.cp libffi.cps libffi.fn libffi.ky libffi.log \ -- libffi.pg libffi.tmp libffi.toc libffi.tp libffi.vr -+ -rm -rf doc/libffi.t2d doc/libffi.t2p - - clean-aminfo: - -test -z "doc/libffi.dvi doc/libffi.pdf doc/libffi.ps doc/libffi.html" \ - || rm -rf doc/libffi.dvi doc/libffi.pdf doc/libffi.ps doc/libffi.html - - maintainer-clean-aminfo: - @list='$(INFO_DEPS)'; for i in $$list; do \ - i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ - echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ - rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ - done - install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) -- test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ -+ if test -n "$$list"; then \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ -+ fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - - uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ -- test -n "$$files" || exit 0; \ -- echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \ -- cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files -+ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) - - # This directory's subdirectories are mostly independent; you can cd --# into them and run `make' without going through this Makefile. --# To change the values of `make' variables: instead of editing Makefiles, --# (1) if the variable is set in `config.status', edit `config.status' --# (which will cause the Makefiles to be regenerated when you run `make'); --# (2) otherwise, pass the desired values on the `make' command line. --$(RECURSIVE_TARGETS): -- @fail= failcom='exit 1'; \ -- for f in x $$MAKEFLAGS; do \ -- case $$f in \ -- *=* | --[!k]*);; \ -- *k*) failcom='fail=yes';; \ -- esac; \ -- done; \ -+# into them and run 'make' without going through this Makefile. -+# To change the values of 'make' variables: instead of editing Makefiles, -+# (1) if the variable is set in 'config.status', edit 'config.status' -+# (which will cause the Makefiles to be regenerated when you run 'make'); -+# (2) otherwise, pass the desired values on the 'make' command line. -+$(am__recursive_targets): -+ @fail=; \ -+ if $(am__make_keepgoing); then \ -+ failcom='fail=yes'; \ -+ else \ -+ failcom='exit 1'; \ -+ fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ -- list='$(SUBDIRS)'; for subdir in $$list; do \ -+ case "$@" in \ -+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ -+ *) list='$(SUBDIRS)' ;; \ -+ esac; \ -+ for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - --$(RECURSIVE_CLEAN_TARGETS): -- @fail= failcom='exit 1'; \ -- for f in x $$MAKEFLAGS; do \ -- case $$f in \ -- *=* | --[!k]*);; \ -- *k*) failcom='fail=yes';; \ -- esac; \ -- done; \ -- dot_seen=no; \ -- case "$@" in \ -- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ -- *) list='$(SUBDIRS)' ;; \ -- esac; \ -- rev=''; for subdir in $$list; do \ -- if test "$$subdir" = "."; then :; else \ -- rev="$$subdir $$rev"; \ -- fi; \ -- done; \ -- rev="$$rev ."; \ -- target=`echo $@ | sed s/-recursive//`; \ -- for subdir in $$rev; do \ -- echo "Making $$target in $$subdir"; \ -- if test "$$subdir" = "."; then \ -- local_target="$$target-am"; \ -- else \ -- local_target="$$target"; \ -- fi; \ -- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -- || eval $$failcom; \ -- done && test -z "$$fail" --tags-recursive: -- list='$(SUBDIRS)'; for subdir in $$list; do \ -- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ -- done --ctags-recursive: -- list='$(SUBDIRS)'; for subdir in $$list; do \ -- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ -- done -+ID: $(am__tagged_files) -+ $(am__define_uniq_tagged_files); mkid -fID $$unique -+tags: tags-recursive -+TAGS: tags - --ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -- unique=`for i in $$list; do \ -- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -- done | \ -- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -- END { if (nonempty) { for (i in files) print i; }; }'`; \ -- mkid -fID $$unique --tags: TAGS -- --TAGS: tags-recursive $(HEADERS) $(SOURCES) fficonfig.h.in $(TAGS_DEPENDENCIES) \ -- $(TAGS_FILES) $(LISP) -+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ -- list='$(SOURCES) $(HEADERS) fficonfig.h.in $(LISP) $(TAGS_FILES)'; \ -- unique=`for i in $$list; do \ -- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -- done | \ -- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -- END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi --ctags: CTAGS --CTAGS: ctags-recursive $(HEADERS) $(SOURCES) fficonfig.h.in $(TAGS_DEPENDENCIES) \ -- $(TAGS_FILES) $(LISP) -- list='$(SOURCES) $(HEADERS) fficonfig.h.in $(LISP) $(TAGS_FILES)'; \ -- unique=`for i in $$list; do \ -- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -- done | \ -- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -- END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ctags: ctags-recursive -+ -+CTAGS: ctags -+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) -+ $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - - GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -+cscope: cscope.files -+ test ! -s cscope.files \ -+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) -+clean-cscope: -+ -rm -f cscope.files -+cscope.files: clean-cscope cscopelist -+cscopelist: cscopelist-recursive -+ -+cscopelist-am: $(am__tagged_files) -+ list='$(am__tagged_files)'; \ -+ case "$(srcdir)" in \ -+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ -+ *) sdir=$(subdir)/$(srcdir) ;; \ -+ esac; \ -+ for i in $$list; do \ -+ if test -f "$$i"; then \ -+ echo "$(subdir)/$$i"; \ -+ else \ -+ echo "$$sdir/$$i"; \ -+ fi; \ -+ done >> $(top_builddir)/cscope.files - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - - distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ -@@ -1415,23 +1697,20 @@ distdir: $(DISTFILES) - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ -- test -d "$(distdir)/$$subdir" \ -- || $(MKDIR_P) "$(distdir)/$$subdir" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -+ $(am__make_dryrun) \ -+ || test -d "$(distdir)/$$subdir" \ -+ || $(MKDIR_P) "$(distdir)/$$subdir" \ -+ || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ -@@ -1443,87 +1722,88 @@ distdir: $(DISTFILES) - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ -- dist-info -+ dist-info dist-hook - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" - dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -- $(am__remove_distdir) -+ $(am__post_remove_distdir) - - dist-bzip2: distdir -- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 -- $(am__remove_distdir) -+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 -+ $(am__post_remove_distdir) - --dist-lzma: distdir -- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma -- $(am__remove_distdir) -+dist-lzip: distdir -+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz -+ $(am__post_remove_distdir) - - dist-xz: distdir -- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz -- $(am__remove_distdir) -+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz -+ $(am__post_remove_distdir) - - dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z -- $(am__remove_distdir) -+ $(am__post_remove_distdir) - - dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz -- $(am__remove_distdir) -+ $(am__post_remove_distdir) - - dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) -- $(am__remove_distdir) -+ $(am__post_remove_distdir) - --dist dist-all: distdir -- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -- $(am__remove_distdir) -+dist dist-all: -+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' -+ $(am__post_remove_distdir) - - # This target untars the dist file and tries a VPATH configuration. Then - # it guarantees that the distribution is self-contained by making another - # tarfile. - distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ -- *.tar.lzma*) \ -- lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ -+ *.tar.lz*) \ -+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac -- chmod -R a-w $(distdir); chmod a+w $(distdir) -- mkdir $(distdir)/_build -- mkdir $(distdir)/_inst -+ chmod -R a-w $(distdir) -+ chmod u+w $(distdir) -+ mkdir $(distdir)/_build $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ -+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ -@@ -1537,23 +1817,31 @@ distcheck: dist - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 -- $(am__remove_distdir) -+ $(am__post_remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' - distuninstallcheck: -- @$(am__cd) '$(distuninstallcheck_dir)' \ -- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ -+ @test -n '$(distuninstallcheck_dir)' || { \ -+ echo 'ERROR: trying to run $@ with an empty' \ -+ '$$(distuninstallcheck_dir)' >&2; \ -+ exit 1; \ -+ }; \ -+ $(am__cd) '$(distuninstallcheck_dir)' || { \ -+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ -+ exit 1; \ -+ }; \ -+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 - distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ -@@ -1564,89 +1852,115 @@ distcleancheck: distclean - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 - check-am: all-am - check: check-recursive - all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) $(DATA) fficonfig.h - installdirs: installdirs-recursive - installdirs-am: -- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(pkgconfigdir)"; do \ -+ for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(pkgconfigdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done - install: install-recursive - install-exec: install-exec-recursive - install-data: install-data-recursive - uninstall: uninstall-recursive - - install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - - installcheck: installcheck-recursive - install-strip: -- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -- `test -z '$(STRIP)' || \ -- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+ if test -z '$(STRIP)'; then \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ install; \ -+ else \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ -+ fi - mostlyclean-generic: - - clean-generic: - - distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -rm -f doc/$(am__dirstamp) - -rm -f src/$(DEPDIR)/$(am__dirstamp) - -rm -f src/$(am__dirstamp) -+ -rm -f src/aarch64/$(DEPDIR)/$(am__dirstamp) -+ -rm -f src/aarch64/$(am__dirstamp) - -rm -f src/alpha/$(DEPDIR)/$(am__dirstamp) - -rm -f src/alpha/$(am__dirstamp) -+ -rm -f src/arc/$(DEPDIR)/$(am__dirstamp) -+ -rm -f src/arc/$(am__dirstamp) - -rm -f src/arm/$(DEPDIR)/$(am__dirstamp) - -rm -f src/arm/$(am__dirstamp) - -rm -f src/avr32/$(DEPDIR)/$(am__dirstamp) - -rm -f src/avr32/$(am__dirstamp) -+ -rm -f src/bfin/$(DEPDIR)/$(am__dirstamp) -+ -rm -f src/bfin/$(am__dirstamp) - -rm -f src/cris/$(DEPDIR)/$(am__dirstamp) - -rm -f src/cris/$(am__dirstamp) - -rm -f src/frv/$(DEPDIR)/$(am__dirstamp) - -rm -f src/frv/$(am__dirstamp) - -rm -f src/ia64/$(DEPDIR)/$(am__dirstamp) - -rm -f src/ia64/$(am__dirstamp) - -rm -f src/m32r/$(DEPDIR)/$(am__dirstamp) - -rm -f src/m32r/$(am__dirstamp) - -rm -f src/m68k/$(DEPDIR)/$(am__dirstamp) - -rm -f src/m68k/$(am__dirstamp) -+ -rm -f src/m88k/$(DEPDIR)/$(am__dirstamp) -+ -rm -f src/m88k/$(am__dirstamp) -+ -rm -f src/metag/$(DEPDIR)/$(am__dirstamp) -+ -rm -f src/metag/$(am__dirstamp) -+ -rm -f src/microblaze/$(DEPDIR)/$(am__dirstamp) -+ -rm -f src/microblaze/$(am__dirstamp) - -rm -f src/mips/$(DEPDIR)/$(am__dirstamp) - -rm -f src/mips/$(am__dirstamp) - -rm -f src/moxie/$(DEPDIR)/$(am__dirstamp) - -rm -f src/moxie/$(am__dirstamp) -+ -rm -f src/nios2/$(DEPDIR)/$(am__dirstamp) -+ -rm -f src/nios2/$(am__dirstamp) - -rm -f src/pa/$(DEPDIR)/$(am__dirstamp) - -rm -f src/pa/$(am__dirstamp) - -rm -f src/powerpc/$(DEPDIR)/$(am__dirstamp) - -rm -f src/powerpc/$(am__dirstamp) - -rm -f src/s390/$(DEPDIR)/$(am__dirstamp) - -rm -f src/s390/$(am__dirstamp) - -rm -f src/sh/$(DEPDIR)/$(am__dirstamp) - -rm -f src/sh/$(am__dirstamp) - -rm -f src/sh64/$(DEPDIR)/$(am__dirstamp) - -rm -f src/sh64/$(am__dirstamp) - -rm -f src/sparc/$(DEPDIR)/$(am__dirstamp) - -rm -f src/sparc/$(am__dirstamp) -+ -rm -f src/tile/$(DEPDIR)/$(am__dirstamp) -+ -rm -f src/tile/$(am__dirstamp) -+ -rm -f src/vax/$(DEPDIR)/$(am__dirstamp) -+ -rm -f src/vax/$(am__dirstamp) - -rm -f src/x86/$(DEPDIR)/$(am__dirstamp) - -rm -f src/x86/$(am__dirstamp) -+ -rm -f src/xtensa/$(DEPDIR)/$(am__dirstamp) -+ -rm -f src/xtensa/$(am__dirstamp) - - maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - clean: clean-recursive - --clean-am: clean-aminfo clean-generic clean-libLTLIBRARIES \ -- clean-libtool clean-noinstLTLIBRARIES mostlyclean-am -+clean-am: clean-aminfo clean-generic clean-libtool \ -+ clean-noinstLTLIBRARIES clean-toolexeclibLTLIBRARIES \ -+ mostlyclean-am - - distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) -- -rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR) -+ -rm -rf src/$(DEPDIR) src/aarch64/$(DEPDIR) src/alpha/$(DEPDIR) src/arc/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/m88k/$(DEPDIR) src/metag/$(DEPDIR) src/microblaze/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/nios2/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/tile/$(DEPDIR) src/vax/$(DEPDIR) src/x86/$(DEPDIR) src/xtensa/$(DEPDIR) - -rm -f Makefile - distclean-am: clean-am distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-tags - - dvi: dvi-recursive - - dvi-am: $(DVIS) - -@@ -1659,56 +1973,68 @@ info: info-recursive - info-am: $(INFO_DEPS) - - install-data-am: install-info-am install-pkgconfigDATA - - install-dvi: install-dvi-recursive - - install-dvi-am: $(DVIS) - @$(NORMAL_INSTALL) -- test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)" - @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ -+ if test -n "$$list"; then \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \ -+ fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ - done --install-exec-am: install-libLTLIBRARIES -+install-exec-am: install-toolexeclibLTLIBRARIES -+ -+install-html: install-html-recursive - - install-html-am: $(HTMLS) - @$(NORMAL_INSTALL) -- test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)" - @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ -+ if test -n "$$list"; then \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ -+ fi; \ - for p in $$list; do \ - if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ - $(am__strip_dir) \ -- if test -d "$$d$$p"; then \ -+ d2=$$d$$p; \ -+ if test -d "$$d2"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ - $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ -- echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ -- $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ -+ echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ -+ $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ - else \ -- list2="$$list2 $$d$$p"; \ -+ list2="$$list2 $$d2"; \ - fi; \ - done; \ - test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ - done; } - install-info: install-info-recursive - - install-info-am: $(INFO_DEPS) - @$(NORMAL_INSTALL) -- test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ -+ if test -n "$$list"; then \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ -+ fi; \ - for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - esac; \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ - for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ - $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ -@@ -1716,57 +2042,64 @@ install-info-am: $(INFO_DEPS) - echo "$$ifile"; \ - else : ; fi; \ - done; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done - @$(POST_INSTALL) -- @if (install-info --version && \ -- install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ -+ @if $(am__can_run_installinfo); then \ - list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ - for file in $$list; do \ - relfile=`echo "$$file" | sed 's|^.*/||'`; \ - echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ - install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ - done; \ - else : ; fi - install-man: - -+install-pdf: install-pdf-recursive -+ - install-pdf-am: $(PDFS) - @$(NORMAL_INSTALL) -- test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)" - @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ -+ if test -n "$$list"; then \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \ -+ fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done - install-ps: install-ps-recursive - - install-ps-am: $(PSS) - @$(NORMAL_INSTALL) -- test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)" - @list='$(PSS)'; test -n "$(psdir)" || list=; \ -+ if test -n "$$list"; then \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \ -+ fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done - installcheck-am: - - maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache -- -rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR) -+ -rm -rf src/$(DEPDIR) src/aarch64/$(DEPDIR) src/alpha/$(DEPDIR) src/arc/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/m88k/$(DEPDIR) src/metag/$(DEPDIR) src/microblaze/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/nios2/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/tile/$(DEPDIR) src/vax/$(DEPDIR) src/x86/$(DEPDIR) src/xtensa/$(DEPDIR) - -rm -f Makefile - maintainer-clean-am: distclean-am maintainer-clean-aminfo \ - maintainer-clean-generic maintainer-clean-vti - - mostlyclean: mostlyclean-recursive - - mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool mostlyclean-vti -@@ -1775,46 +2108,44 @@ pdf: pdf-recursive - - pdf-am: $(PDFS) - - ps: ps-recursive - - ps-am: $(PSS) - - uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ -- uninstall-libLTLIBRARIES uninstall-pdf-am \ -- uninstall-pkgconfigDATA uninstall-ps-am -+ uninstall-pdf-am uninstall-pkgconfigDATA uninstall-ps-am \ -+ uninstall-toolexeclibLTLIBRARIES - --.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ -- ctags-recursive install-am install-strip tags-recursive -+.MAKE: $(am__recursive_targets) all install-am install-strip - --.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ -- all all-am am--refresh check check-am clean clean-aminfo \ -- clean-generic clean-libLTLIBRARIES clean-libtool \ -- clean-noinstLTLIBRARIES ctags ctags-recursive dist dist-all \ -- dist-bzip2 dist-gzip dist-info dist-lzma dist-shar dist-tarZ \ -- dist-xz dist-zip distcheck distclean distclean-compile \ -- distclean-generic distclean-hdr distclean-libtool \ -- distclean-tags distcleancheck distdir distuninstallcheck dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-dvi install-dvi-am \ -- install-exec install-exec-am install-html install-html-am \ -- install-info install-info-am install-libLTLIBRARIES \ -+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ -+ am--refresh check check-am clean clean-aminfo clean-cscope \ -+ clean-generic clean-libtool clean-noinstLTLIBRARIES \ -+ clean-toolexeclibLTLIBRARIES cscope cscopelist-am ctags \ -+ ctags-am dist dist-all dist-bzip2 dist-gzip dist-hook \ -+ dist-info dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ -+ distcheck distclean distclean-compile distclean-generic \ -+ distclean-hdr distclean-libtool distclean-tags distcleancheck \ -+ distdir distuninstallcheck dvi dvi-am html html-am info \ -+ info-am install install-am install-data install-data-am \ -+ install-dvi install-dvi-am install-exec install-exec-am \ -+ install-html install-html-am install-info install-info-am \ - install-man install-pdf install-pdf-am install-pkgconfigDATA \ -- install-ps install-ps-am install-strip installcheck \ -- installcheck-am installdirs installdirs-am maintainer-clean \ -+ install-ps install-ps-am install-strip \ -+ install-toolexeclibLTLIBRARIES installcheck installcheck-am \ -+ installdirs installdirs-am maintainer-clean \ - maintainer-clean-aminfo maintainer-clean-generic \ - maintainer-clean-vti mostlyclean mostlyclean-aminfo \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ -- mostlyclean-vti pdf pdf-am ps ps-am tags tags-recursive \ -- uninstall uninstall-am uninstall-dvi-am uninstall-html-am \ -- uninstall-info-am uninstall-libLTLIBRARIES uninstall-pdf-am \ -- uninstall-pkgconfigDATA uninstall-ps-am -+ mostlyclean-vti pdf pdf-am ps ps-am tags tags-am uninstall \ -+ uninstall-am uninstall-dvi-am uninstall-html-am \ -+ uninstall-info-am uninstall-pdf-am uninstall-pkgconfigDATA \ -+ uninstall-ps-am uninstall-toolexeclibLTLIBRARIES - - --# No install-html or install-pdf support in automake yet --.PHONY: install-html install-pdf --install-html: --install-pdf: -+dist-hook: -+ if [ -d $(top_srcdir)/.git ] ; then git -C $(top_srcdir) log --no-decorate ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog - - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. - .NOEXPORT: -diff --git a/js/src/ctypes/libffi/README b/js/src/ctypes/libffi/README ---- a/js/src/ctypes/libffi/README -+++ b/js/src/ctypes/libffi/README -@@ -1,12 +1,12 @@ - Status - ====== - --libffi-3.0.10 was released on XXXXXXXXXX, 2010. Check the libffi web -+libffi-3.1 was released on TBD. Check the libffi web - page for updates: . - - - What is libffi? - =============== - - Compilers for high level languages generate code that follow certain - conventions. These conventions are necessary, in part, for separate -@@ -38,70 +38,102 @@ between the two languages. - - Supported Platforms - =================== - - Libffi has been ported to many different platforms. - For specific configuration details and testing status, please - refer to the wiki page here: - -- http://www.moxielogic.org/wiki/index.php?title=Libffi_3.0.10 -+ http://www.moxielogic.org/wiki/index.php?title=Libffi_3.1 - - At the time of release, the following basic configurations have been - tested: - --|--------------+------------------| --| Architecture | Operating System | --|--------------+------------------| --| Alpha | Linux | --| Alpha | Tru64 | --| ARM | Linux | --| AVR32 | Linux | --| HPPA | HPUX | --| IA-64 | Linux | --| MIPS | IRIX | --| MIPS | Linux | --| MIPS64 | Linux | --| PowerPC | Linux | --| PowerPC | Mac OSX | --| PowerPC | FreeBSD | --| PowerPC64 | Linux | --| S390 | Linux | --| S390X | Linux | --| SPARC | Linux | --| SPARC | Solaris | --| SPARC64 | Linux | --| SPARC64 | FreeBSD | --| X86 | FreeBSD | --| X86 | kFreeBSD | --| X86 | Linux | --| X86 | Mac OSX | --| X86 | OpenBSD | --| X86 | OS/2 | --| X86 | Solaris | --| X86 | Windows/Cygwin | --| X86 | Windows/MingW | --| X86-64 | FreeBSD | --| X86-64 | Linux | --| X86-64 | OpenBSD | --| X86-64 | Windows/MingW | --|--------------+------------------| -+|-----------------+------------------+-------------------------| -+| Architecture | Operating System | Compiler | -+|-----------------+------------------+-------------------------| -+| AArch64 (ARM64) | iOS | Clang | -+| AArch64 | Linux | GCC | -+| Alpha | Linux | GCC | -+| Alpha | Tru64 | GCC | -+| ARC | Linux | GCC | -+| ARM | Linux | GCC | -+| ARM | iOS | GCC | -+| AVR32 | Linux | GCC | -+| Blackfin | uClinux | GCC | -+| HPPA | HPUX | GCC | -+| IA-64 | Linux | GCC | -+| M68K | FreeMiNT | GCC | -+| M68K | Linux | GCC | -+| M68K | RTEMS | GCC | -+| M88K | OpenBSD/mvme88k | GCC | -+| Meta | Linux | GCC | -+| MicroBlaze | Linux | GCC | -+| MIPS | IRIX | GCC | -+| MIPS | Linux | GCC | -+| MIPS | RTEMS | GCC | -+| MIPS64 | Linux | GCC | -+| Moxie | Bare metal | GCC | -+| Nios II | Linux | GCC | -+| PowerPC 32-bit | AIX | IBM XL C | -+| PowerPC 64-bit | AIX | IBM XL C | -+| PowerPC | AMIGA | GCC | -+| PowerPC | Linux | GCC | -+| PowerPC | Mac OSX | GCC | -+| PowerPC | FreeBSD | GCC | -+| PowerPC 64-bit | FreeBSD | GCC | -+| PowerPC 64-bit | Linux ELFv1 | GCC | -+| PowerPC 64-bit | Linux ELFv2 | GCC | -+| S390 | Linux | GCC | -+| S390X | Linux | GCC | -+| SPARC | Linux | GCC | -+| SPARC | Solaris | GCC | -+| SPARC | Solaris | Oracle Solaris Studio C | -+| SPARC64 | Linux | GCC | -+| SPARC64 | FreeBSD | GCC | -+| SPARC64 | Solaris | Oracle Solaris Studio C | -+| TILE-Gx/TILEPro | Linux | GCC | -+| VAX | OpenBSD/vax | GCC | -+| X86 | FreeBSD | GCC | -+| X86 | GNU HURD | GCC | -+| X86 | Interix | GCC | -+| X86 | kFreeBSD | GCC | -+| X86 | Linux | GCC | -+| X86 | Mac OSX | GCC | -+| X86 | OpenBSD | GCC | -+| X86 | OS/2 | GCC | -+| X86 | Solaris | GCC | -+| X86 | Solaris | Oracle Solaris Studio C | -+| X86 | Windows/Cygwin | GCC | -+| X86 | Windows/MingW | GCC | -+| X86-64 | FreeBSD | GCC | -+| X86-64 | Linux | GCC | -+| X86-64 | Linux/x32 | GCC | -+| X86-64 | OpenBSD | GCC | -+| X86-64 | Solaris | Oracle Solaris Studio C | -+| X86-64 | Windows/MingW | GCC | -+| Xtensa | Linux | GCC | -+|-----------------+------------------+-------------------------| - - Please send additional platform test results to - libffi-discuss@sourceware.org and feel free to update the wiki page - above. - - Installing libffi - ================= - - First you must configure the distribution for your particular - system. Go to the directory you wish to build libffi in and run the - "configure" program found in the root directory of the libffi source - distribution. - -+If you're building libffi directly from version control, configure won't -+exist yet; run ./autogen.sh first. -+ - You may want to tell configure where to install the libffi library and - header files. To do that, use the --prefix configure switch. Libffi - will install under /usr/local by default. - - If you want to enable extra run-time debugging checks use the the - --enable-debug configure switch. This is useful when your program dies - mysteriously while using libffi. - -@@ -117,37 +149,93 @@ wrapper script during configuration like - path/to/configure CC=path/to/msvcc.sh LD=link CPP=\"cl -nologo -EP\" - - For 64-bit Windows builds, use CC="path/to/msvcc.sh -m64". - You may also need to specify --build appropriately. When building with MSVC - under a MingW environment, you may need to remove the line in configure - that sets 'fix_srcfile_path' to a 'cygpath' command. ('cygpath' is not - present in MingW, and is not required when using MingW-style paths.) - -+For iOS builds, the 'libffi.xcodeproj' Xcode project is available. -+ - Configure has many other options. Use "configure --help" to see them all. - - Once configure has finished, type "make". Note that you must be using --GNU make. You can ftp GNU make from prep.ai.mit.edu:/pub/gnu. -+GNU make. You can ftp GNU make from ftp.gnu.org:/pub/gnu/make . - - To ensure that libffi is working as advertised, type "make check". - This will require that you have DejaGNU installed. - - To install the library and header files, type "make install". - - - History - ======= - --See the ChangeLog files for details. -+See the git log for details at http://github.com/atgreen/libffi. - --3.0.10 ???-??-?? -- Fix the N64 build on mips-sgi-irix6.5. -+3.1 TBD -+ Add AArch64 (ARM64) iOS support. -+ Add Nios II support. -+ Add m88k and DEC VAX support. -+ Add support for stdcall, thiscall, and fastcall on non-Windows -+ 32-bit x86 targets such as Linux. -+ Various Android, MIPS N32, x86, FreeBSD and UltraSPARC IIi -+ fixes. -+ Make the testsuite more robust: eliminated several spurious -+ failures. -+ Archive off the manually maintained ChangeLog in favor of git -+ log. -+ -+3.0.13 Mar-17-13 -+ Add Meta support. -+ Add missing Moxie bits. -+ Fix stack alignment bug on 32-bit x86. -+ Build fix for m68000 targets. -+ Build fix for soft-float Power targets. -+ Fix the install dir location for some platforms when building -+ with GCC (OS X, Solaris). -+ Fix Cygwin regression. -+ -+3.0.12 Feb-11-13 -+ Add Moxie support. -+ Add AArch64 support. -+ Add Blackfin support. -+ Add TILE-Gx/TILEPro support. -+ Add MicroBlaze support. -+ Add Xtensa support. -+ Add support for PaX enabled kernels with MPROTECT. -+ Add support for native vendor compilers on -+ Solaris and AIX. -+ Work around LLVM/GCC interoperability issue on x86_64. -+ -+3.0.11 Apr-11-12 -+ Lots of build fixes. -+ Add support for variadic functions (ffi_prep_cif_var). -+ Add Linux/x32 support. -+ Add thiscall, fastcall and MSVC cdecl support on Windows. -+ Add Amiga and newer MacOS support. -+ Add m68k FreeMiNT support. -+ Integration with iOS' xcode build tools. -+ Fix Octeon and MC68881 support. -+ Fix code pessimizations. -+ -+3.0.10 Aug-23-11 -+ Add support for Apple's iOS. -+ Add support for ARM VFP ABI. -+ Add RTEMS support for MIPS and M68K. -+ Fix instruction cache clearing problems on -+ ARM and SPARC. -+ Fix the N64 build on mips-sgi-irix6.5. -+ Enable builds with Microsoft's compiler. -+ Enable x86 builds with Oracle's Solaris compiler. -+ Fix support for calling code compiled with Oracle's Sparc -+ Solaris compiler. - Testsuite fixes for Tru64 Unix. -- Enable builds with Microsoft's compiler. -- Enable x86 builds with Sun's compiler. -+ Additional platform support. - - 3.0.9 Dec-31-09 - Add AVR32 and win64 ports. Add ARM softfp support. - Many fixes for AIX, Solaris, HP-UX, *BSD. - Several PowerPC and x86-64 bug fixes. - Build DLL for windows. - - 3.0.8 Dec-19-08 -@@ -267,50 +355,59 @@ 1.01 Oct-8-96 - - 1.00 Oct-7-96 - First release. No public announcement. - - - Authors & Credits - ================= - --libffi was originally written by Anthony Green . -+libffi was originally written by Anthony Green . - - The developers of the GNU Compiler Collection project have made - innumerable valuable contributions. See the ChangeLog file for - details. - - Some of the ideas behind libffi were inspired by Gianni Mariani's free - gencall library for Silicon Graphics machines. - - The closure mechanism was designed and implemented by Kresten Krab - Thorup. - - Major processor architecture ports were contributed by the following - developers: - -+aarch64 Marcus Shawcroft, James Greenhalgh - alpha Richard Henderson - arm Raffaele Sena -+blackfin Alexandre Keunecke I. de Mendonca - cris Simon Posnjak, Hans-Peter Nilsson - frv Anthony Green - ia64 Hans Boehm - m32r Kazuhiro Inaoka - m68k Andreas Schwab -+m88k Miod Vallat -+microblaze Nathan Rossi - mips Anthony Green, Casey Marshall - mips64 David Daney -+moxie Anthony Green -+nios ii Sandra Loosemore - pa Randolph Chung, Dave Anglin, Andreas Tobler - powerpc Geoffrey Keating, Andreas Tobler, - David Edelsohn, John Hornkvist - powerpc64 Jakub Jelinek - s390 Gerhard Tonn, Ulrich Weigand - sh Kaz Kojima - sh64 Kaz Kojima - sparc Anthony Green, Gordon Irlam -+tile-gx/tilepro Walter Lee -+vax Miod Vallat - x86 Anthony Green, Jon Beniston - x86-64 Bo Thorsen -+xtensa Chris Zankel - - Jesper Skov and Andrew Haley both did more than their fair share of - stepping through the code and tracking down bugs. - - Thanks also to Tom Tromey for bug fixes, documentation and - configuration help. - - Thanks to Jim Blandy, who provided some useful feedback on the libffi -@@ -318,10 +415,11 @@ interface. - - Andreas Tobler has done a tremendous amount of work on the testsuite. - - Alex Oliva solved the executable page problem for SElinux. - - The list above is almost certainly incomplete and inaccurate. I'm - happy to make corrections or additions upon request. - --If you have a problem, or have found a bug, please send a note to --green@redhat.com. -+If you have a problem, or have found a bug, please send a note to the -+author at green@moxielogic.com, or the project mailing list at -+libffi-discuss@sourceware.org. -diff --git a/js/src/ctypes/libffi/aclocal.m4 b/js/src/ctypes/libffi/aclocal.m4 ---- a/js/src/ctypes/libffi/aclocal.m4 -+++ b/js/src/ctypes/libffi/aclocal.m4 -@@ -1,7390 +1,40 @@ --# generated automatically by aclocal 1.11.1 -*- Autoconf -*- -+# generated automatically by aclocal 1.13.4 -*- Autoconf -*- - --# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, --# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -+# Copyright (C) 1996-2013 Free Software Foundation, Inc. -+ - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - - # This program is distributed in the hope that it will be useful, - # but WITHOUT ANY WARRANTY, to the extent permitted by law; without - # even the implied warranty of MERCHANTABILITY or FITNESS FOR A - # PARTICULAR PURPOSE. - -+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) - m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl --m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],, --[m4_warning([this file was generated for autoconf 2.65. -+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -+[m4_warning([this file was generated for autoconf 2.69. - You have another version of autoconf. It may work, but is not guaranteed to. - If you have problems, you may need to regenerate the build system entirely. --To do so, use the procedure documented by the package, typically `autoreconf'.])]) -- --# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- --# --# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, --# 2006, 2007, 2008 Free Software Foundation, Inc. --# Written by Gordon Matzigkeit, 1996 --# --# This file is free software; the Free Software Foundation gives --# unlimited permission to copy and/or distribute it, with or without --# modifications, as long as this notice is preserved. -- --m4_define([_LT_COPYING], [dnl --# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, --# 2006, 2007, 2008 Free Software Foundation, Inc. --# Written by Gordon Matzigkeit, 1996 --# --# This file is part of GNU Libtool. --# --# GNU Libtool is free software; you can redistribute it and/or --# modify it under the terms of the GNU General Public License as --# published by the Free Software Foundation; either version 2 of --# the License, or (at your option) any later version. --# --# As a special exception to the GNU General Public License, --# if you distribute this file as part of a program or library that --# is built using GNU Libtool, you may include this file under the --# same distribution terms that you use for the rest of that program. --# --# GNU Libtool is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. --# --# You should have received a copy of the GNU General Public License --# along with GNU Libtool; see the file COPYING. If not, a copy --# can be downloaded from http://www.gnu.org/licenses/gpl.html, or --# obtained by writing to the Free Software Foundation, Inc., --# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --]) -- --# serial 56 LT_INIT -- -- --# LT_PREREQ(VERSION) --# ------------------ --# Complain and exit if this libtool version is less that VERSION. --m4_defun([LT_PREREQ], --[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, -- [m4_default([$3], -- [m4_fatal([Libtool version $1 or higher is required], -- 63)])], -- [$2])]) -- -- --# _LT_CHECK_BUILDDIR --# ------------------ --# Complain if the absolute build directory name contains unusual characters --m4_defun([_LT_CHECK_BUILDDIR], --[case `pwd` in -- *\ * | *\ *) -- AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; --esac --]) -- -- --# LT_INIT([OPTIONS]) --# ------------------ --AC_DEFUN([LT_INIT], --[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT --AC_BEFORE([$0], [LT_LANG])dnl --AC_BEFORE([$0], [LT_OUTPUT])dnl --AC_BEFORE([$0], [LTDL_INIT])dnl --m4_require([_LT_CHECK_BUILDDIR])dnl -- --dnl Autoconf doesn't catch unexpanded LT_ macros by default: --m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl --m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl --dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 --dnl unless we require an AC_DEFUNed macro: --AC_REQUIRE([LTOPTIONS_VERSION])dnl --AC_REQUIRE([LTSUGAR_VERSION])dnl --AC_REQUIRE([LTVERSION_VERSION])dnl --AC_REQUIRE([LTOBSOLETE_VERSION])dnl --m4_require([_LT_PROG_LTMAIN])dnl -- --dnl Parse OPTIONS --_LT_SET_OPTIONS([$0], [$1]) -- --# This can be used to rebuild libtool when needed --LIBTOOL_DEPS="$ltmain" -- --# Always use our own libtool. --LIBTOOL='$(SHELL) $(top_builddir)/libtool' --AC_SUBST(LIBTOOL)dnl -- --_LT_SETUP -- --# Only expand once: --m4_define([LT_INIT]) --])# LT_INIT -- --# Old names: --AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) --AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_PROG_LIBTOOL], []) --dnl AC_DEFUN([AM_PROG_LIBTOOL], []) -- -- --# _LT_CC_BASENAME(CC) --# ------------------- --# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. --m4_defun([_LT_CC_BASENAME], --[for cc_temp in $1""; do -- case $cc_temp in -- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; -- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; -- \-*) ;; -- *) break;; -- esac --done --cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` --]) -- -- --# _LT_FILEUTILS_DEFAULTS --# ---------------------- --# It is okay to use these file commands and assume they have been set --# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. --m4_defun([_LT_FILEUTILS_DEFAULTS], --[: ${CP="cp -f"} --: ${MV="mv -f"} --: ${RM="rm -f"} --])# _LT_FILEUTILS_DEFAULTS -- -- --# _LT_SETUP --# --------- --m4_defun([_LT_SETUP], --[AC_REQUIRE([AC_CANONICAL_HOST])dnl --AC_REQUIRE([AC_CANONICAL_BUILD])dnl --_LT_DECL([], [host_alias], [0], [The host system])dnl --_LT_DECL([], [host], [0])dnl --_LT_DECL([], [host_os], [0])dnl --dnl --_LT_DECL([], [build_alias], [0], [The build system])dnl --_LT_DECL([], [build], [0])dnl --_LT_DECL([], [build_os], [0])dnl --dnl --AC_REQUIRE([AC_PROG_CC])dnl --AC_REQUIRE([LT_PATH_LD])dnl --AC_REQUIRE([LT_PATH_NM])dnl --dnl --AC_REQUIRE([AC_PROG_LN_S])dnl --test -z "$LN_S" && LN_S="ln -s" --_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl --dnl --AC_REQUIRE([LT_CMD_MAX_LEN])dnl --_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl --_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl --dnl --m4_require([_LT_FILEUTILS_DEFAULTS])dnl --m4_require([_LT_CHECK_SHELL_FEATURES])dnl --m4_require([_LT_CMD_RELOAD])dnl --m4_require([_LT_CHECK_MAGIC_METHOD])dnl --m4_require([_LT_CMD_OLD_ARCHIVE])dnl --m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -- --_LT_CONFIG_LIBTOOL_INIT([ --# See if we are running on zsh, and set the options which allow our --# commands through without removal of \ escapes INIT. --if test -n "\${ZSH_VERSION+set}" ; then -- setopt NO_GLOB_SUBST --fi --]) --if test -n "${ZSH_VERSION+set}" ; then -- setopt NO_GLOB_SUBST --fi -- --_LT_CHECK_OBJDIR -- --m4_require([_LT_TAG_COMPILER])dnl --_LT_PROG_ECHO_BACKSLASH -- --case $host_os in --aix3*) -- # AIX sometimes has problems with the GCC collect2 program. For some -- # reason, if we set the COLLECT_NAMES environment variable, the problems -- # vanish in a puff of smoke. -- if test "X${COLLECT_NAMES+set}" != Xset; then -- COLLECT_NAMES= -- export COLLECT_NAMES -- fi -- ;; --esac -- --# Sed substitution that helps us do robust quoting. It backslashifies --# metacharacters that are still active within double-quoted strings. --sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' -- --# Same as above, but do not quote variable references. --double_quote_subst='s/\([["`\\]]\)/\\\1/g' -- --# Sed substitution to delay expansion of an escaped shell variable in a --# double_quote_subst'ed string. --delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -- --# Sed substitution to delay expansion of an escaped single quote. --delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' -- --# Sed substitution to avoid accidental globbing in evaled expressions --no_glob_subst='s/\*/\\\*/g' -- --# Global variables: --ofile=libtool --can_build_shared=yes -- --# All known linkers require a `.a' archive for static linking (except MSVC, --# which needs '.lib'). --libext=a -- --with_gnu_ld="$lt_cv_prog_gnu_ld" -- --old_CC="$CC" --old_CFLAGS="$CFLAGS" -- --# Set sane defaults for various variables --test -z "$CC" && CC=cc --test -z "$LTCC" && LTCC=$CC --test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS --test -z "$LD" && LD=ld --test -z "$ac_objext" && ac_objext=o -- --_LT_CC_BASENAME([$compiler]) -- --# Only perform the check for file, if the check method requires it --test -z "$MAGIC_CMD" && MAGIC_CMD=file --case $deplibs_check_method in --file_magic*) -- if test "$file_magic_cmd" = '$MAGIC_CMD'; then -- _LT_PATH_MAGIC -- fi -- ;; --esac -- --# Use C for the default configuration in the libtool script --LT_SUPPORTED_TAG([CC]) --_LT_LANG_C_CONFIG --_LT_LANG_DEFAULT_CONFIG --_LT_CONFIG_COMMANDS --])# _LT_SETUP -- -- --# _LT_PROG_LTMAIN --# --------------- --# Note that this code is called both from `configure', and `config.status' --# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, --# `config.status' has no value for ac_aux_dir unless we are using Automake, --# so we pass a copy along to make sure it has a sensible value anyway. --m4_defun([_LT_PROG_LTMAIN], --[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl --_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) --ltmain="$ac_aux_dir/ltmain.sh" --])# _LT_PROG_LTMAIN -- -- -- --# So that we can recreate a full libtool script including additional --# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS --# in macros and then make a single call at the end using the `libtool' --# label. -- -- --# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) --# ---------------------------------------- --# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. --m4_define([_LT_CONFIG_LIBTOOL_INIT], --[m4_ifval([$1], -- [m4_append([_LT_OUTPUT_LIBTOOL_INIT], -- [$1 --])])]) -- --# Initialize. --m4_define([_LT_OUTPUT_LIBTOOL_INIT]) -- -- --# _LT_CONFIG_LIBTOOL([COMMANDS]) --# ------------------------------ --# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. --m4_define([_LT_CONFIG_LIBTOOL], --[m4_ifval([$1], -- [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], -- [$1 --])])]) -- --# Initialize. --m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) -- -- --# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) --# ----------------------------------------------------- --m4_defun([_LT_CONFIG_SAVE_COMMANDS], --[_LT_CONFIG_LIBTOOL([$1]) --_LT_CONFIG_LIBTOOL_INIT([$2]) --]) -- -- --# _LT_FORMAT_COMMENT([COMMENT]) --# ----------------------------- --# Add leading comment marks to the start of each line, and a trailing --# full-stop to the whole comment if one is not present already. --m4_define([_LT_FORMAT_COMMENT], --[m4_ifval([$1], [ --m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], -- [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) --)]) -- -- -- -- -- --# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) --# ------------------------------------------------------------------- --# CONFIGNAME is the name given to the value in the libtool script. --# VARNAME is the (base) name used in the configure script. --# VALUE may be 0, 1 or 2 for a computed quote escaped value based on --# VARNAME. Any other value will be used directly. --m4_define([_LT_DECL], --[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], -- [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], -- [m4_ifval([$1], [$1], [$2])]) -- lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) -- m4_ifval([$4], -- [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) -- lt_dict_add_subkey([lt_decl_dict], [$2], -- [tagged?], [m4_ifval([$5], [yes], [no])])]) --]) -- -- --# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) --# -------------------------------------------------------- --m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) -- -- --# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) --# ------------------------------------------------ --m4_define([lt_decl_tag_varnames], --[_lt_decl_filter([tagged?], [yes], $@)]) -- -- --# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) --# --------------------------------------------------------- --m4_define([_lt_decl_filter], --[m4_case([$#], -- [0], [m4_fatal([$0: too few arguments: $#])], -- [1], [m4_fatal([$0: too few arguments: $#: $1])], -- [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], -- [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], -- [lt_dict_filter([lt_decl_dict], $@)])[]dnl --]) -- -- --# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) --# -------------------------------------------------- --m4_define([lt_decl_quote_varnames], --[_lt_decl_filter([value], [1], $@)]) -- -- --# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) --# --------------------------------------------------- --m4_define([lt_decl_dquote_varnames], --[_lt_decl_filter([value], [2], $@)]) -- -- --# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) --# --------------------------------------------------- --m4_define([lt_decl_varnames_tagged], --[m4_assert([$# <= 2])dnl --_$0(m4_quote(m4_default([$1], [[, ]])), -- m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), -- m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) --m4_define([_lt_decl_varnames_tagged], --[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) -- -- --# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) --# ------------------------------------------------ --m4_define([lt_decl_all_varnames], --[_$0(m4_quote(m4_default([$1], [[, ]])), -- m4_if([$2], [], -- m4_quote(lt_decl_varnames), -- m4_quote(m4_shift($@))))[]dnl --]) --m4_define([_lt_decl_all_varnames], --[lt_join($@, lt_decl_varnames_tagged([$1], -- lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl --]) -- -- --# _LT_CONFIG_STATUS_DECLARE([VARNAME]) --# ------------------------------------ --# Quote a variable value, and forward it to `config.status' so that its --# declaration there will have the same value as in `configure'. VARNAME --# must have a single quote delimited value for this to work. --m4_define([_LT_CONFIG_STATUS_DECLARE], --[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) -- -- --# _LT_CONFIG_STATUS_DECLARATIONS --# ------------------------------ --# We delimit libtool config variables with single quotes, so when --# we write them to config.status, we have to be sure to quote all --# embedded single quotes properly. In configure, this macro expands --# each variable declared with _LT_DECL (and _LT_TAGDECL) into: --# --# ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' --m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], --[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), -- [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) -- -- --# _LT_LIBTOOL_TAGS --# ---------------- --# Output comment and list of tags supported by the script --m4_defun([_LT_LIBTOOL_TAGS], --[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl --available_tags="_LT_TAGS"dnl --]) -- -- --# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) --# ----------------------------------- --# Extract the dictionary values for VARNAME (optionally with TAG) and --# expand to a commented shell variable setting: --# --# # Some comment about what VAR is for. --# visible_name=$lt_internal_name --m4_define([_LT_LIBTOOL_DECLARE], --[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], -- [description])))[]dnl --m4_pushdef([_libtool_name], -- m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl --m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), -- [0], [_libtool_name=[$]$1], -- [1], [_libtool_name=$lt_[]$1], -- [2], [_libtool_name=$lt_[]$1], -- [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl --m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl --]) -- -- --# _LT_LIBTOOL_CONFIG_VARS --# ----------------------- --# Produce commented declarations of non-tagged libtool config variables --# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' --# script. Tagged libtool config variables (even for the LIBTOOL CONFIG --# section) are produced by _LT_LIBTOOL_TAG_VARS. --m4_defun([_LT_LIBTOOL_CONFIG_VARS], --[m4_foreach([_lt_var], -- m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), -- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) -- -- --# _LT_LIBTOOL_TAG_VARS(TAG) --# ------------------------- --m4_define([_LT_LIBTOOL_TAG_VARS], --[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), -- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) -- -- --# _LT_TAGVAR(VARNAME, [TAGNAME]) --# ------------------------------ --m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) -- -- --# _LT_CONFIG_COMMANDS --# ------------------- --# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of --# variables for single and double quote escaping we saved from calls --# to _LT_DECL, we can put quote escaped variables declarations --# into `config.status', and then the shell code to quote escape them in --# for loops in `config.status'. Finally, any additional code accumulated --# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. --m4_defun([_LT_CONFIG_COMMANDS], --[AC_PROVIDE_IFELSE([LT_OUTPUT], -- dnl If the libtool generation code has been placed in $CONFIG_LT, -- dnl instead of duplicating it all over again into config.status, -- dnl then we will have config.status run $CONFIG_LT later, so it -- dnl needs to know what name is stored there: -- [AC_CONFIG_COMMANDS([libtool], -- [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], -- dnl If the libtool generation code is destined for config.status, -- dnl expand the accumulated commands and init code now: -- [AC_CONFIG_COMMANDS([libtool], -- [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) --])#_LT_CONFIG_COMMANDS -- -- --# Initialize. --m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], --[ -- --# The HP-UX ksh and POSIX shell print the target directory to stdout --# if CDPATH is set. --(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -- --sed_quote_subst='$sed_quote_subst' --double_quote_subst='$double_quote_subst' --delay_variable_subst='$delay_variable_subst' --_LT_CONFIG_STATUS_DECLARATIONS --LTCC='$LTCC' --LTCFLAGS='$LTCFLAGS' --compiler='$compiler_DEFAULT' -- --# Quote evaled strings. --for var in lt_decl_all_varnames([[ \ --]], lt_decl_quote_varnames); do -- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in -- *[[\\\\\\\`\\"\\\$]]*) -- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" -- ;; -- *) -- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" -- ;; -- esac --done -- --# Double-quote double-evaled strings. --for var in lt_decl_all_varnames([[ \ --]], lt_decl_dquote_varnames); do -- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in -- *[[\\\\\\\`\\"\\\$]]*) -- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" -- ;; -- *) -- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" -- ;; -- esac --done -- --# Fix-up fallback echo if it was mangled by the above quoting rules. --case \$lt_ECHO in --*'\\\[$]0 --fallback-echo"')dnl " -- lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` -- ;; --esac -- --_LT_OUTPUT_LIBTOOL_INIT --]) -- -- --# LT_OUTPUT --# --------- --# This macro allows early generation of the libtool script (before --# AC_OUTPUT is called), incase it is used in configure for compilation --# tests. --AC_DEFUN([LT_OUTPUT], --[: ${CONFIG_LT=./config.lt} --AC_MSG_NOTICE([creating $CONFIG_LT]) --cat >"$CONFIG_LT" <<_LTEOF --#! $SHELL --# Generated by $as_me. --# Run this file to recreate a libtool stub with the current configuration. -- --lt_cl_silent=false --SHELL=\${CONFIG_SHELL-$SHELL} --_LTEOF -- --cat >>"$CONFIG_LT" <<\_LTEOF --AS_SHELL_SANITIZE --_AS_PREPARE -- --exec AS_MESSAGE_FD>&1 --exec AS_MESSAGE_LOG_FD>>config.log --{ -- echo -- AS_BOX([Running $as_me.]) --} >&AS_MESSAGE_LOG_FD -- --lt_cl_help="\ --\`$as_me' creates a local libtool stub from the current configuration, --for use in further configure time tests before the real libtool is --generated. -- --Usage: $[0] [[OPTIONS]] -- -- -h, --help print this help, then exit -- -V, --version print version number, then exit -- -q, --quiet do not print progress messages -- -d, --debug don't remove temporary files -- --Report bugs to ." -- --lt_cl_version="\ --m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl --m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) --configured by $[0], generated by m4_PACKAGE_STRING. -- --Copyright (C) 2008 Free Software Foundation, Inc. --This config.lt script is free software; the Free Software Foundation --gives unlimited permision to copy, distribute and modify it." -- --while test $[#] != 0 --do -- case $[1] in -- --version | --v* | -V ) -- echo "$lt_cl_version"; exit 0 ;; -- --help | --h* | -h ) -- echo "$lt_cl_help"; exit 0 ;; -- --debug | --d* | -d ) -- debug=: ;; -- --quiet | --q* | --silent | --s* | -q ) -- lt_cl_silent=: ;; -- -- -*) AC_MSG_ERROR([unrecognized option: $[1] --Try \`$[0] --help' for more information.]) ;; -- -- *) AC_MSG_ERROR([unrecognized argument: $[1] --Try \`$[0] --help' for more information.]) ;; -- esac -- shift --done -- --if $lt_cl_silent; then -- exec AS_MESSAGE_FD>/dev/null --fi --_LTEOF -- --cat >>"$CONFIG_LT" <<_LTEOF --_LT_OUTPUT_LIBTOOL_COMMANDS_INIT --_LTEOF -- --cat >>"$CONFIG_LT" <<\_LTEOF --AC_MSG_NOTICE([creating $ofile]) --_LT_OUTPUT_LIBTOOL_COMMANDS --AS_EXIT(0) --_LTEOF --chmod +x "$CONFIG_LT" -- --# configure is writing to config.log, but config.lt does its own redirection, --# appending to config.log, which fails on DOS, as config.log is still kept --# open by configure. Here we exec the FD to /dev/null, effectively closing --# config.log, so it can be properly (re)opened and appended to by config.lt. --if test "$no_create" != yes; then -- lt_cl_success=: -- test "$silent" = yes && -- lt_config_lt_args="$lt_config_lt_args --quiet" -- exec AS_MESSAGE_LOG_FD>/dev/null -- $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -- exec AS_MESSAGE_LOG_FD>>config.log -- $lt_cl_success || AS_EXIT(1) --fi --])# LT_OUTPUT -- -- --# _LT_CONFIG(TAG) --# --------------- --# If TAG is the built-in tag, create an initial libtool script with a --# default configuration from the untagged config vars. Otherwise add code --# to config.status for appending the configuration named by TAG from the --# matching tagged config vars. --m4_defun([_LT_CONFIG], --[m4_require([_LT_FILEUTILS_DEFAULTS])dnl --_LT_CONFIG_SAVE_COMMANDS([ -- m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl -- m4_if(_LT_TAG, [C], [ -- # See if we are running on zsh, and set the options which allow our -- # commands through without removal of \ escapes. -- if test -n "${ZSH_VERSION+set}" ; then -- setopt NO_GLOB_SUBST -- fi -- -- cfgfile="${ofile}T" -- trap "$RM \"$cfgfile\"; exit 1" 1 2 15 -- $RM "$cfgfile" -- -- cat <<_LT_EOF >> "$cfgfile" --#! $SHELL -- --# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. --# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION --# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: --# NOTE: Changes made to this file will be lost: look at ltmain.sh. --# --_LT_COPYING --_LT_LIBTOOL_TAGS -- --# ### BEGIN LIBTOOL CONFIG --_LT_LIBTOOL_CONFIG_VARS --_LT_LIBTOOL_TAG_VARS --# ### END LIBTOOL CONFIG -- --_LT_EOF -- -- case $host_os in -- aix3*) -- cat <<\_LT_EOF >> "$cfgfile" --# AIX sometimes has problems with the GCC collect2 program. For some --# reason, if we set the COLLECT_NAMES environment variable, the problems --# vanish in a puff of smoke. --if test "X${COLLECT_NAMES+set}" != Xset; then -- COLLECT_NAMES= -- export COLLECT_NAMES --fi --_LT_EOF -- ;; -- esac -- -- _LT_PROG_LTMAIN -- -- # We use sed instead of cat because bash on DJGPP gets confused if -- # if finds mixed CR/LF and LF-only lines. Since sed operates in -- # text mode, it properly converts lines to CR/LF. This bash problem -- # is reportedly fixed, but why not run on old versions too? -- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ -- || (rm -f "$cfgfile"; exit 1) -- -- _LT_PROG_XSI_SHELLFNS -- -- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ -- || (rm -f "$cfgfile"; exit 1) -- -- mv -f "$cfgfile" "$ofile" || -- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") -- chmod +x "$ofile" --], --[cat <<_LT_EOF >> "$ofile" -- --dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded --dnl in a comment (ie after a #). --# ### BEGIN LIBTOOL TAG CONFIG: $1 --_LT_LIBTOOL_TAG_VARS(_LT_TAG) --# ### END LIBTOOL TAG CONFIG: $1 --_LT_EOF --])dnl /m4_if --], --[m4_if([$1], [], [ -- PACKAGE='$PACKAGE' -- VERSION='$VERSION' -- TIMESTAMP='$TIMESTAMP' -- RM='$RM' -- ofile='$ofile'], []) --])dnl /_LT_CONFIG_SAVE_COMMANDS --])# _LT_CONFIG -- -- --# LT_SUPPORTED_TAG(TAG) --# --------------------- --# Trace this macro to discover what tags are supported by the libtool --# --tag option, using: --# autoconf --trace 'LT_SUPPORTED_TAG:$1' --AC_DEFUN([LT_SUPPORTED_TAG], []) -- -- --# C support is built-in for now --m4_define([_LT_LANG_C_enabled], []) --m4_define([_LT_TAGS], []) -- -- --# LT_LANG(LANG) --# ------------- --# Enable libtool support for the given language if not already enabled. --AC_DEFUN([LT_LANG], --[AC_BEFORE([$0], [LT_OUTPUT])dnl --m4_case([$1], -- [C], [_LT_LANG(C)], -- [C++], [_LT_LANG(CXX)], -- [Java], [_LT_LANG(GCJ)], -- [Fortran 77], [_LT_LANG(F77)], -- [Fortran], [_LT_LANG(FC)], -- [Windows Resource], [_LT_LANG(RC)], -- [m4_ifdef([_LT_LANG_]$1[_CONFIG], -- [_LT_LANG($1)], -- [m4_fatal([$0: unsupported language: "$1"])])])dnl --])# LT_LANG -- -- --# _LT_LANG(LANGNAME) --# ------------------ --m4_defun([_LT_LANG], --[m4_ifdef([_LT_LANG_]$1[_enabled], [], -- [LT_SUPPORTED_TAG([$1])dnl -- m4_append([_LT_TAGS], [$1 ])dnl -- m4_define([_LT_LANG_]$1[_enabled], [])dnl -- _LT_LANG_$1_CONFIG($1)])dnl --])# _LT_LANG -- -- --# _LT_LANG_DEFAULT_CONFIG --# ----------------------- --m4_defun([_LT_LANG_DEFAULT_CONFIG], --[AC_PROVIDE_IFELSE([AC_PROG_CXX], -- [LT_LANG(CXX)], -- [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) -- --AC_PROVIDE_IFELSE([AC_PROG_F77], -- [LT_LANG(F77)], -- [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) -- --AC_PROVIDE_IFELSE([AC_PROG_FC], -- [LT_LANG(FC)], -- [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) -- --dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal --dnl pulling things in needlessly. --AC_PROVIDE_IFELSE([AC_PROG_GCJ], -- [LT_LANG(GCJ)], -- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], -- [LT_LANG(GCJ)], -- [AC_PROVIDE_IFELSE([LT_PROG_GCJ], -- [LT_LANG(GCJ)], -- [m4_ifdef([AC_PROG_GCJ], -- [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) -- m4_ifdef([A][M_PROG_GCJ], -- [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) -- m4_ifdef([LT_PROG_GCJ], -- [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) -- --AC_PROVIDE_IFELSE([LT_PROG_RC], -- [LT_LANG(RC)], -- [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) --])# _LT_LANG_DEFAULT_CONFIG -- --# Obsolete macros: --AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) --AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) --AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) --AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_LIBTOOL_CXX], []) --dnl AC_DEFUN([AC_LIBTOOL_F77], []) --dnl AC_DEFUN([AC_LIBTOOL_FC], []) --dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -- -- --# _LT_TAG_COMPILER --# ---------------- --m4_defun([_LT_TAG_COMPILER], --[AC_REQUIRE([AC_PROG_CC])dnl -- --_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl --_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl --_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl --_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl -- --# If no C compiler was specified, use CC. --LTCC=${LTCC-"$CC"} -- --# If no C compiler flags were specified, use CFLAGS. --LTCFLAGS=${LTCFLAGS-"$CFLAGS"} -- --# Allow CC to be a program name with arguments. --compiler=$CC --])# _LT_TAG_COMPILER -- -- --# _LT_COMPILER_BOILERPLATE --# ------------------------ --# Check for compiler boilerplate output or warnings with --# the simple compiler test code. --m4_defun([_LT_COMPILER_BOILERPLATE], --[m4_require([_LT_DECL_SED])dnl --ac_outfile=conftest.$ac_objext --echo "$lt_simple_compile_test_code" >conftest.$ac_ext --eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err --_lt_compiler_boilerplate=`cat conftest.err` --$RM conftest* --])# _LT_COMPILER_BOILERPLATE -- -- --# _LT_LINKER_BOILERPLATE --# ---------------------- --# Check for linker boilerplate output or warnings with --# the simple link test code. --m4_defun([_LT_LINKER_BOILERPLATE], --[m4_require([_LT_DECL_SED])dnl --ac_outfile=conftest.$ac_objext --echo "$lt_simple_link_test_code" >conftest.$ac_ext --eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err --_lt_linker_boilerplate=`cat conftest.err` --$RM -r conftest* --])# _LT_LINKER_BOILERPLATE -- --# _LT_REQUIRED_DARWIN_CHECKS --# ------------------------- --m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ -- case $host_os in -- rhapsody* | darwin*) -- AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) -- AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) -- AC_CHECK_TOOL([LIPO], [lipo], [:]) -- AC_CHECK_TOOL([OTOOL], [otool], [:]) -- AC_CHECK_TOOL([OTOOL64], [otool64], [:]) -- _LT_DECL([], [DSYMUTIL], [1], -- [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) -- _LT_DECL([], [NMEDIT], [1], -- [Tool to change global to local symbols on Mac OS X]) -- _LT_DECL([], [LIPO], [1], -- [Tool to manipulate fat objects and archives on Mac OS X]) -- _LT_DECL([], [OTOOL], [1], -- [ldd/readelf like tool for Mach-O binaries on Mac OS X]) -- _LT_DECL([], [OTOOL64], [1], -- [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) -- -- AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], -- [lt_cv_apple_cc_single_mod=no -- if test -z "${LT_MULTI_MODULE}"; then -- # By default we will add the -single_module flag. You can override -- # by either setting the environment variable LT_MULTI_MODULE -- # non-empty at configure time, or by adding -multi_module to the -- # link flags. -- rm -rf libconftest.dylib* -- echo "int foo(void){return 1;}" > conftest.c -- echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ---dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD -- $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -- -dynamiclib -Wl,-single_module conftest.c 2>conftest.err -- _lt_result=$? -- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then -- lt_cv_apple_cc_single_mod=yes -- else -- cat conftest.err >&AS_MESSAGE_LOG_FD -- fi -- rm -rf libconftest.dylib* -- rm -f conftest.* -- fi]) -- AC_CACHE_CHECK([for -exported_symbols_list linker flag], -- [lt_cv_ld_exported_symbols_list], -- [lt_cv_ld_exported_symbols_list=no -- save_LDFLAGS=$LDFLAGS -- echo "_main" > conftest.sym -- LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" -- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], -- [lt_cv_ld_exported_symbols_list=yes], -- [lt_cv_ld_exported_symbols_list=no]) -- LDFLAGS="$save_LDFLAGS" -- ]) -- case $host_os in -- rhapsody* | darwin1.[[012]]) -- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; -- darwin1.*) -- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; -- darwin*) # darwin 5.x on -- # if running on 10.5 or later, the deployment target defaults -- # to the OS version, if on x86, and 10.4, the deployment -- # target defaults to 10.4. Don't you love it? -- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in -- 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) -- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; -- 10.[[012]]*) -- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; -- 10.*) -- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; -- esac -- ;; -- esac -- if test "$lt_cv_apple_cc_single_mod" = "yes"; then -- _lt_dar_single_mod='$single_module' -- fi -- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then -- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' -- else -- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' -- fi -- if test "$DSYMUTIL" != ":"; then -- _lt_dsymutil='~$DSYMUTIL $lib || :' -- else -- _lt_dsymutil= -- fi -- ;; -- esac --]) -- -- --# _LT_DARWIN_LINKER_FEATURES --# -------------------------- --# Checks for linker and compiler features on darwin --m4_defun([_LT_DARWIN_LINKER_FEATURES], --[ -- m4_require([_LT_REQUIRED_DARWIN_CHECKS]) -- _LT_TAGVAR(archive_cmds_need_lc, $1)=no -- _LT_TAGVAR(hardcode_direct, $1)=no -- _LT_TAGVAR(hardcode_automatic, $1)=yes -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -- _LT_TAGVAR(whole_archive_flag_spec, $1)='' -- _LT_TAGVAR(link_all_deplibs, $1)=yes -- _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" -- case $cc_basename in -- ifort*) _lt_dar_can_shared=yes ;; -- *) _lt_dar_can_shared=$GCC ;; -- esac -- if test "$_lt_dar_can_shared" = "yes"; then -- output_verbose_link_cmd=echo -- _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" -- _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" -- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" -- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" -- m4_if([$1], [CXX], --[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then -- _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" -- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" -- fi --],[]) -- else -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi --]) -- --# _LT_SYS_MODULE_PATH_AIX --# ----------------------- --# Links a minimal program and checks the executable --# for the system default hardcoded library path. In most cases, --# this is /usr/lib:/lib, but when the MPI compilers are used --# the location of the communication and MPI libs are included too. --# If we don't find anything, use the default library path according --# to the aix ld manual. --m4_defun([_LT_SYS_MODULE_PATH_AIX], --[m4_require([_LT_DECL_SED])dnl --AC_LINK_IFELSE(AC_LANG_PROGRAM,[ --lt_aix_libpath_sed=' -- /Import File Strings/,/^$/ { -- /^0/ { -- s/^0 *\(.*\)$/\1/ -- p -- } -- }' --aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` --# Check for a 64-bit object if we didn't find anything. --if test -z "$aix_libpath"; then -- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` --fi],[]) --if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi --])# _LT_SYS_MODULE_PATH_AIX -- -- --# _LT_SHELL_INIT(ARG) --# ------------------- --m4_define([_LT_SHELL_INIT], --[ifdef([AC_DIVERSION_NOTICE], -- [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], -- [AC_DIVERT_PUSH(NOTICE)]) --$1 --AC_DIVERT_POP --])# _LT_SHELL_INIT -- -- --# _LT_PROG_ECHO_BACKSLASH --# ----------------------- --# Add some code to the start of the generated configure script which --# will find an echo command which doesn't interpret backslashes. --m4_defun([_LT_PROG_ECHO_BACKSLASH], --[_LT_SHELL_INIT([ --# Check that we are running under the correct shell. --SHELL=${CONFIG_SHELL-/bin/sh} -- --case X$lt_ECHO in --X*--fallback-echo) -- # Remove one level of quotation (which was required for Make). -- ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` -- ;; --esac -- --ECHO=${lt_ECHO-echo} --if test "X[$]1" = X--no-reexec; then -- # Discard the --no-reexec flag, and continue. -- shift --elif test "X[$]1" = X--fallback-echo; then -- # Avoid inline document here, it may be left over -- : --elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then -- # Yippee, $ECHO works! -- : --else -- # Restart under the correct shell. -- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} --fi -- --if test "X[$]1" = X--fallback-echo; then -- # used as fallback echo -- shift -- cat <<_LT_EOF --[$]* --_LT_EOF -- exit 0 --fi -- --# The HP-UX ksh and POSIX shell print the target directory to stdout --# if CDPATH is set. --(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -- --if test -z "$lt_ECHO"; then -- if test "X${echo_test_string+set}" != Xset; then -- # find a string as large as possible, as long as the shell can cope with it -- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do -- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... -- if { echo_test_string=`eval $cmd`; } 2>/dev/null && -- { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null -- then -- break -- fi -- done -- fi -- -- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- : -- else -- # The Solaris, AIX, and Digital Unix default echo programs unquote -- # backslashes. This makes it impossible to quote backslashes using -- # echo "$something" | sed 's/\\/\\\\/g' -- # -- # So, first we look for a working echo in the user's PATH. -- -- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for dir in $PATH /usr/ucb; do -- IFS="$lt_save_ifs" -- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && -- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && -- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- ECHO="$dir/echo" -- break -- fi -- done -- IFS="$lt_save_ifs" -- -- if test "X$ECHO" = Xecho; then -- # We didn't find a better echo, so look for alternatives. -- if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- # This shell has a builtin print -r that does the trick. -- ECHO='print -r' -- elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && -- test "X$CONFIG_SHELL" != X/bin/ksh; then -- # If we have ksh, try running configure again with it. -- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -- export ORIGINAL_CONFIG_SHELL -- CONFIG_SHELL=/bin/ksh -- export CONFIG_SHELL -- exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} -- else -- # Try using printf. -- ECHO='printf %s\n' -- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- # Cool, printf works -- : -- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && -- test "X$echo_testing_string" = 'X\t' && -- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL -- export CONFIG_SHELL -- SHELL="$CONFIG_SHELL" -- export SHELL -- ECHO="$CONFIG_SHELL [$]0 --fallback-echo" -- elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && -- test "X$echo_testing_string" = 'X\t' && -- echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- ECHO="$CONFIG_SHELL [$]0 --fallback-echo" -- else -- # maybe with a smaller string... -- prev=: -- -- for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do -- if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null -- then -- break -- fi -- prev="$cmd" -- done -- -- if test "$prev" != 'sed 50q "[$]0"'; then -- echo_test_string=`eval $prev` -- export echo_test_string -- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} -- else -- # Oops. We lost completely, so just stick with echo. -- ECHO=echo -- fi -- fi -- fi -- fi -- fi --fi -- --# Copy echo and quote the copy suitably for passing to libtool from --# the Makefile, instead of quoting the original, which is used later. --lt_ECHO=$ECHO --if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then -- lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" --fi -- --AC_SUBST(lt_ECHO) --]) --_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) --_LT_DECL([], [ECHO], [1], -- [An echo program that does not interpret backslashes]) --])# _LT_PROG_ECHO_BACKSLASH -- -- --# _LT_ENABLE_LOCK --# --------------- --m4_defun([_LT_ENABLE_LOCK], --[AC_ARG_ENABLE([libtool-lock], -- [AS_HELP_STRING([--disable-libtool-lock], -- [avoid locking (might break parallel builds)])]) --test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes -- --# Some flags need to be propagated to the compiler or linker for good --# libtool support. --case $host in --ia64-*-hpux*) -- # Find out which ABI we are using. -- echo 'int i;' > conftest.$ac_ext -- if AC_TRY_EVAL(ac_compile); then -- case `/usr/bin/file conftest.$ac_objext` in -- *ELF-32*) -- HPUX_IA64_MODE="32" -- ;; -- *ELF-64*) -- HPUX_IA64_MODE="64" -- ;; -- esac -- fi -- rm -rf conftest* -- ;; --*-*-irix6*) -- # Find out which ABI we are using. -- echo '[#]line __oline__ "configure"' > conftest.$ac_ext -- if AC_TRY_EVAL(ac_compile); then -- if test "$lt_cv_prog_gnu_ld" = yes; then -- case `/usr/bin/file conftest.$ac_objext` in -- *32-bit*) -- LD="${LD-ld} -melf32bsmip" -- ;; -- *N32*) -- LD="${LD-ld} -melf32bmipn32" -- ;; -- *64-bit*) -- LD="${LD-ld} -melf64bmip" -- ;; -- esac -- else -- case `/usr/bin/file conftest.$ac_objext` in -- *32-bit*) -- LD="${LD-ld} -32" -- ;; -- *N32*) -- LD="${LD-ld} -n32" -- ;; -- *64-bit*) -- LD="${LD-ld} -64" -- ;; -- esac -- fi -- fi -- rm -rf conftest* -- ;; -- --x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ --s390*-*linux*|s390*-*tpf*|sparc*-*linux*) -- # Find out which ABI we are using. -- echo 'int i;' > conftest.$ac_ext -- if AC_TRY_EVAL(ac_compile); then -- case `/usr/bin/file conftest.o` in -- *32-bit*) -- case $host in -- x86_64-*kfreebsd*-gnu) -- LD="${LD-ld} -m elf_i386_fbsd" -- ;; -- x86_64-*linux*) -- LD="${LD-ld} -m elf_i386" -- ;; -- powerpc64le-*linux*) -- LD="${LD-ld} -m elf32lppclinux" -- ;; -- powerpc64-*linux*) -- LD="${LD-ld} -m elf32ppclinux" -- ;; -- s390x-*linux*) -- LD="${LD-ld} -m elf_s390" -- ;; -- sparc64-*linux*) -- LD="${LD-ld} -m elf32_sparc" -- ;; -- esac -- ;; -- *64-bit*) -- case $host in -- x86_64-*kfreebsd*-gnu) -- LD="${LD-ld} -m elf_x86_64_fbsd" -- ;; -- x86_64-*linux*) -- LD="${LD-ld} -m elf_x86_64" -- ;; -- powerpcle-*linux*) -- LD="${LD-ld} -m elf64lppc" -- ;; -- powerpc-*linux*) -- LD="${LD-ld} -m elf64ppc" -- ;; -- s390*-*linux*|s390*-*tpf*) -- LD="${LD-ld} -m elf64_s390" -- ;; -- sparc*-*linux*) -- LD="${LD-ld} -m elf64_sparc" -- ;; -- esac -- ;; -- esac -- fi -- rm -rf conftest* -- ;; -- --*-*-sco3.2v5*) -- # On SCO OpenServer 5, we need -belf to get full-featured binaries. -- SAVE_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -belf" -- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, -- [AC_LANG_PUSH(C) -- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) -- AC_LANG_POP]) -- if test x"$lt_cv_cc_needs_belf" != x"yes"; then -- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf -- CFLAGS="$SAVE_CFLAGS" -- fi -- ;; --sparc*-*solaris*) -- # Find out which ABI we are using. -- echo 'int i;' > conftest.$ac_ext -- if AC_TRY_EVAL(ac_compile); then -- case `/usr/bin/file conftest.o` in -- *64-bit*) -- case $lt_cv_prog_gnu_ld in -- yes*) LD="${LD-ld} -m elf64_sparc" ;; -- *) -- if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then -- LD="${LD-ld} -64" -- fi -- ;; -- esac -- ;; -- esac -- fi -- rm -rf conftest* -- ;; --esac -- --need_locks="$enable_libtool_lock" --])# _LT_ENABLE_LOCK -- -- --# _LT_CMD_OLD_ARCHIVE --# ------------------- --m4_defun([_LT_CMD_OLD_ARCHIVE], --[AC_CHECK_TOOL(AR, ar, false) --test -z "$AR" && AR=ar --test -z "$AR_FLAGS" && AR_FLAGS=cru --_LT_DECL([], [AR], [1], [The archiver]) --_LT_DECL([], [AR_FLAGS], [1]) -- --AC_CHECK_TOOL(STRIP, strip, :) --test -z "$STRIP" && STRIP=: --_LT_DECL([], [STRIP], [1], [A symbol stripping program]) -- --AC_CHECK_TOOL(RANLIB, ranlib, :) --test -z "$RANLIB" && RANLIB=: --_LT_DECL([], [RANLIB], [1], -- [Commands used to install an old-style archive]) -- --# Determine commands to create old-style static archives. --old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' --old_postinstall_cmds='chmod 644 $oldlib' --old_postuninstall_cmds= -- --if test -n "$RANLIB"; then -- case $host_os in -- openbsd*) -- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" -- ;; -- *) -- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" -- ;; -- esac -- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" --fi --_LT_DECL([], [old_postinstall_cmds], [2]) --_LT_DECL([], [old_postuninstall_cmds], [2]) --_LT_TAGDECL([], [old_archive_cmds], [2], -- [Commands used to build an old-style archive]) --])# _LT_CMD_OLD_ARCHIVE -- -- --# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, --# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) --# ---------------------------------------------------------------- --# Check whether the given compiler option works --AC_DEFUN([_LT_COMPILER_OPTION], --[m4_require([_LT_FILEUTILS_DEFAULTS])dnl --m4_require([_LT_DECL_SED])dnl --AC_CACHE_CHECK([$1], [$2], -- [$2=no -- m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) -- echo "$lt_simple_compile_test_code" > conftest.$ac_ext -- lt_compiler_flag="$3" -- # Insert the option either (1) after the last *FLAGS variable, or -- # (2) before a word containing "conftest.", or (3) at the end. -- # Note that $ac_compile itself does not contain backslashes and begins -- # with a dollar sign (not a hyphen), so the echo should work correctly. -- # The option is referenced via a variable to avoid confusing sed. -- lt_compile=`echo "$ac_compile" | $SED \ -- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -- -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) -- (eval "$lt_compile" 2>conftest.err) -- ac_status=$? -- cat conftest.err >&AS_MESSAGE_LOG_FD -- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD -- if (exit $ac_status) && test -s "$ac_outfile"; then -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings other than the usual output. -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -- $2=yes -- fi -- fi -- $RM conftest* --]) -- --if test x"[$]$2" = xyes; then -- m4_if([$5], , :, [$5]) --else -- m4_if([$6], , :, [$6]) --fi --])# _LT_COMPILER_OPTION -- --# Old name: --AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) -- -- --# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, --# [ACTION-SUCCESS], [ACTION-FAILURE]) --# ---------------------------------------------------- --# Check whether the given linker option works --AC_DEFUN([_LT_LINKER_OPTION], --[m4_require([_LT_FILEUTILS_DEFAULTS])dnl --m4_require([_LT_DECL_SED])dnl --AC_CACHE_CHECK([$1], [$2], -- [$2=no -- save_LDFLAGS="$LDFLAGS" -- LDFLAGS="$LDFLAGS $3" -- echo "$lt_simple_link_test_code" > conftest.$ac_ext -- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then -- # The linker can only warn and ignore the option if not recognized -- # So say no if there are warnings -- if test -s conftest.err; then -- # Append any errors to the config.log. -- cat conftest.err 1>&AS_MESSAGE_LOG_FD -- $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp -- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -- if diff conftest.exp conftest.er2 >/dev/null; then -- $2=yes -- fi -- else -- $2=yes -- fi -- fi -- $RM -r conftest* -- LDFLAGS="$save_LDFLAGS" --]) -- --if test x"[$]$2" = xyes; then -- m4_if([$4], , :, [$4]) --else -- m4_if([$5], , :, [$5]) --fi --])# _LT_LINKER_OPTION -- --# Old name: --AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) -- -- --# LT_CMD_MAX_LEN --#--------------- --AC_DEFUN([LT_CMD_MAX_LEN], --[AC_REQUIRE([AC_CANONICAL_HOST])dnl --# find the maximum length of command line arguments --AC_MSG_CHECKING([the maximum length of command line arguments]) --AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl -- i=0 -- teststring="ABCD" -- -- case $build_os in -- msdosdjgpp*) -- # On DJGPP, this test can blow up pretty badly due to problems in libc -- # (any single argument exceeding 2000 bytes causes a buffer overrun -- # during glob expansion). Even if it were fixed, the result of this -- # check would be larger than it should be. -- lt_cv_sys_max_cmd_len=12288; # 12K is about right -- ;; -- -- gnu*) -- # Under GNU Hurd, this test is not required because there is -- # no limit to the length of command line arguments. -- # Libtool will interpret -1 as no limit whatsoever -- lt_cv_sys_max_cmd_len=-1; -- ;; -- -- cygwin* | mingw* | cegcc*) -- # On Win9x/ME, this test blows up -- it succeeds, but takes -- # about 5 minutes as the teststring grows exponentially. -- # Worse, since 9x/ME are not pre-emptively multitasking, -- # you end up with a "frozen" computer, even though with patience -- # the test eventually succeeds (with a max line length of 256k). -- # Instead, let's just punt: use the minimum linelength reported by -- # all of the supported platforms: 8192 (on NT/2K/XP). -- lt_cv_sys_max_cmd_len=8192; -- ;; -- -- amigaos*) -- # On AmigaOS with pdksh, this test takes hours, literally. -- # So we just punt and use a minimum line length of 8192. -- lt_cv_sys_max_cmd_len=8192; -- ;; -- -- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) -- # This has been around since 386BSD, at least. Likely further. -- if test -x /sbin/sysctl; then -- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` -- elif test -x /usr/sbin/sysctl; then -- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` -- else -- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs -- fi -- # And add a safety zone -- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` -- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` -- ;; -- -- interix*) -- # We know the value 262144 and hardcode it with a safety zone (like BSD) -- lt_cv_sys_max_cmd_len=196608 -- ;; -- -- osf*) -- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure -- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not -- # nice to cause kernel panics so lets avoid the loop below. -- # First set a reasonable default. -- lt_cv_sys_max_cmd_len=16384 -- # -- if test -x /sbin/sysconfig; then -- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in -- *1*) lt_cv_sys_max_cmd_len=-1 ;; -- esac -- fi -- ;; -- sco3.2v5*) -- lt_cv_sys_max_cmd_len=102400 -- ;; -- sysv5* | sco5v6* | sysv4.2uw2*) -- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` -- if test -n "$kargmax"; then -- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` -- else -- lt_cv_sys_max_cmd_len=32768 -- fi -- ;; -- *) -- lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` -- if test -n "$lt_cv_sys_max_cmd_len"; then -- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` -- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` -- else -- # Make teststring a little bigger before we do anything with it. -- # a 1K string should be a reasonable start. -- for i in 1 2 3 4 5 6 7 8 ; do -- teststring=$teststring$teststring -- done -- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} -- # If test is not a shell built-in, we'll probably end up computing a -- # maximum length that is only half of the actual maximum length, but -- # we can't tell. -- while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ -- = "XX$teststring$teststring"; } >/dev/null 2>&1 && -- test $i != 17 # 1/2 MB should be enough -- do -- i=`expr $i + 1` -- teststring=$teststring$teststring -- done -- # Only check the string length outside the loop. -- lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` -- teststring= -- # Add a significant safety factor because C++ compilers can tack on -- # massive amounts of additional arguments before passing them to the -- # linker. It appears as though 1/2 is a usable value. -- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` -- fi -- ;; -- esac --]) --if test -n $lt_cv_sys_max_cmd_len ; then -- AC_MSG_RESULT($lt_cv_sys_max_cmd_len) --else -- AC_MSG_RESULT(none) --fi --max_cmd_len=$lt_cv_sys_max_cmd_len --_LT_DECL([], [max_cmd_len], [0], -- [What is the maximum length of a command?]) --])# LT_CMD_MAX_LEN -- --# Old name: --AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) -- -- --# _LT_HEADER_DLFCN --# ---------------- --m4_defun([_LT_HEADER_DLFCN], --[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl --])# _LT_HEADER_DLFCN -- -- --# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, --# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) --# ---------------------------------------------------------------- --m4_defun([_LT_TRY_DLOPEN_SELF], --[m4_require([_LT_HEADER_DLFCN])dnl --if test "$cross_compiling" = yes; then : -- [$4] --else -- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 -- lt_status=$lt_dlunknown -- cat > conftest.$ac_ext <<_LT_EOF --[#line __oline__ "configure" --#include "confdefs.h" -- --#if HAVE_DLFCN_H --#include --#endif -- --#include -- --#ifdef RTLD_GLOBAL --# define LT_DLGLOBAL RTLD_GLOBAL --#else --# ifdef DL_GLOBAL --# define LT_DLGLOBAL DL_GLOBAL --# else --# define LT_DLGLOBAL 0 --# endif --#endif -- --/* We may have to define LT_DLLAZY_OR_NOW in the command line if we -- find out it does not work in some platform. */ --#ifndef LT_DLLAZY_OR_NOW --# ifdef RTLD_LAZY --# define LT_DLLAZY_OR_NOW RTLD_LAZY --# else --# ifdef DL_LAZY --# define LT_DLLAZY_OR_NOW DL_LAZY --# else --# ifdef RTLD_NOW --# define LT_DLLAZY_OR_NOW RTLD_NOW --# else --# ifdef DL_NOW --# define LT_DLLAZY_OR_NOW DL_NOW --# else --# define LT_DLLAZY_OR_NOW 0 --# endif --# endif --# endif --# endif --#endif -- --void fnord() { int i=42;} --int main () --{ -- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); -- int status = $lt_dlunknown; -- -- if (self) -- { -- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; -- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -- /* dlclose (self); */ -- } -- else -- puts (dlerror ()); -- -- return status; --}] --_LT_EOF -- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then -- (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null -- lt_status=$? -- case x$lt_status in -- x$lt_dlno_uscore) $1 ;; -- x$lt_dlneed_uscore) $2 ;; -- x$lt_dlunknown|x*) $3 ;; -- esac -- else : -- # compilation failed -- $3 -- fi --fi --rm -fr conftest* --])# _LT_TRY_DLOPEN_SELF -- -- --# LT_SYS_DLOPEN_SELF --# ------------------ --AC_DEFUN([LT_SYS_DLOPEN_SELF], --[m4_require([_LT_HEADER_DLFCN])dnl --if test "x$enable_dlopen" != xyes; then -- enable_dlopen=unknown -- enable_dlopen_self=unknown -- enable_dlopen_self_static=unknown --else -- lt_cv_dlopen=no -- lt_cv_dlopen_libs= -- -- case $host_os in -- beos*) -- lt_cv_dlopen="load_add_on" -- lt_cv_dlopen_libs= -- lt_cv_dlopen_self=yes -- ;; -- -- mingw* | pw32* | cegcc*) -- lt_cv_dlopen="LoadLibrary" -- lt_cv_dlopen_libs= -- ;; -- -- cygwin*) -- lt_cv_dlopen="dlopen" -- lt_cv_dlopen_libs= -- ;; -- -- darwin*) -- # if libdl is installed we need to link against it -- AC_CHECK_LIB([dl], [dlopen], -- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ -- lt_cv_dlopen="dyld" -- lt_cv_dlopen_libs= -- lt_cv_dlopen_self=yes -- ]) -- ;; -- -- *) -- AC_CHECK_FUNC([shl_load], -- [lt_cv_dlopen="shl_load"], -- [AC_CHECK_LIB([dld], [shl_load], -- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], -- [AC_CHECK_FUNC([dlopen], -- [lt_cv_dlopen="dlopen"], -- [AC_CHECK_LIB([dl], [dlopen], -- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], -- [AC_CHECK_LIB([svld], [dlopen], -- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], -- [AC_CHECK_LIB([dld], [dld_link], -- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) -- ]) -- ]) -- ]) -- ]) -- ]) -- ;; -- esac -- -- if test "x$lt_cv_dlopen" != xno; then -- enable_dlopen=yes -- else -- enable_dlopen=no -- fi -- -- case $lt_cv_dlopen in -- dlopen) -- save_CPPFLAGS="$CPPFLAGS" -- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" -- -- save_LDFLAGS="$LDFLAGS" -- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" -- -- save_LIBS="$LIBS" -- LIBS="$lt_cv_dlopen_libs $LIBS" -- -- AC_CACHE_CHECK([whether a program can dlopen itself], -- lt_cv_dlopen_self, [dnl -- _LT_TRY_DLOPEN_SELF( -- lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, -- lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) -- ]) -- -- if test "x$lt_cv_dlopen_self" = xyes; then -- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" -- AC_CACHE_CHECK([whether a statically linked program can dlopen itself], -- lt_cv_dlopen_self_static, [dnl -- _LT_TRY_DLOPEN_SELF( -- lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, -- lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) -- ]) -- fi -- -- CPPFLAGS="$save_CPPFLAGS" -- LDFLAGS="$save_LDFLAGS" -- LIBS="$save_LIBS" -- ;; -- esac -- -- case $lt_cv_dlopen_self in -- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; -- *) enable_dlopen_self=unknown ;; -- esac -- -- case $lt_cv_dlopen_self_static in -- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; -- *) enable_dlopen_self_static=unknown ;; -- esac --fi --_LT_DECL([dlopen_support], [enable_dlopen], [0], -- [Whether dlopen is supported]) --_LT_DECL([dlopen_self], [enable_dlopen_self], [0], -- [Whether dlopen of programs is supported]) --_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], -- [Whether dlopen of statically linked programs is supported]) --])# LT_SYS_DLOPEN_SELF -- --# Old name: --AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) -- -- --# _LT_COMPILER_C_O([TAGNAME]) --# --------------------------- --# Check to see if options -c and -o are simultaneously supported by compiler. --# This macro does not hard code the compiler like AC_PROG_CC_C_O. --m4_defun([_LT_COMPILER_C_O], --[m4_require([_LT_DECL_SED])dnl --m4_require([_LT_FILEUTILS_DEFAULTS])dnl --m4_require([_LT_TAG_COMPILER])dnl --AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], -- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], -- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no -- $RM -r conftest 2>/dev/null -- mkdir conftest -- cd conftest -- mkdir out -- echo "$lt_simple_compile_test_code" > conftest.$ac_ext -- -- lt_compiler_flag="-o out/conftest2.$ac_objext" -- # Insert the option either (1) after the last *FLAGS variable, or -- # (2) before a word containing "conftest.", or (3) at the end. -- # Note that $ac_compile itself does not contain backslashes and begins -- # with a dollar sign (not a hyphen), so the echo should work correctly. -- lt_compile=`echo "$ac_compile" | $SED \ -- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -- -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) -- (eval "$lt_compile" 2>out/conftest.err) -- ac_status=$? -- cat out/conftest.err >&AS_MESSAGE_LOG_FD -- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD -- if (exit $ac_status) && test -s out/conftest2.$ac_objext -- then -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp -- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 -- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then -- _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes -- fi -- fi -- chmod u+w . 2>&AS_MESSAGE_LOG_FD -- $RM conftest* -- # SGI C++ compiler will create directory out/ii_files/ for -- # template instantiation -- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files -- $RM out/* && rmdir out -- cd .. -- $RM -r conftest -- $RM conftest* --]) --_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], -- [Does compiler simultaneously support -c and -o options?]) --])# _LT_COMPILER_C_O -- -- --# _LT_COMPILER_FILE_LOCKS([TAGNAME]) --# ---------------------------------- --# Check to see if we can do hard links to lock some files if needed --m4_defun([_LT_COMPILER_FILE_LOCKS], --[m4_require([_LT_ENABLE_LOCK])dnl --m4_require([_LT_FILEUTILS_DEFAULTS])dnl --_LT_COMPILER_C_O([$1]) -- --hard_links="nottested" --if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then -- # do not overwrite the value of need_locks provided by the user -- AC_MSG_CHECKING([if we can lock with hard links]) -- hard_links=yes -- $RM conftest* -- ln conftest.a conftest.b 2>/dev/null && hard_links=no -- touch conftest.a -- ln conftest.a conftest.b 2>&5 || hard_links=no -- ln conftest.a conftest.b 2>/dev/null && hard_links=no -- AC_MSG_RESULT([$hard_links]) -- if test "$hard_links" = no; then -- AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) -- need_locks=warn -- fi --else -- need_locks=no --fi --_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) --])# _LT_COMPILER_FILE_LOCKS -- -- --# _LT_CHECK_OBJDIR --# ---------------- --m4_defun([_LT_CHECK_OBJDIR], --[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], --[rm -f .libs 2>/dev/null --mkdir .libs 2>/dev/null --if test -d .libs; then -- lt_cv_objdir=.libs --else -- # MS-DOS does not allow filenames that begin with a dot. -- lt_cv_objdir=_libs --fi --rmdir .libs 2>/dev/null]) --objdir=$lt_cv_objdir --_LT_DECL([], [objdir], [0], -- [The name of the directory that contains temporary libtool files])dnl --m4_pattern_allow([LT_OBJDIR])dnl --AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", -- [Define to the sub-directory in which libtool stores uninstalled libraries.]) --])# _LT_CHECK_OBJDIR -- -- --# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) --# -------------------------------------- --# Check hardcoding attributes. --m4_defun([_LT_LINKER_HARDCODE_LIBPATH], --[AC_MSG_CHECKING([how to hardcode library paths into programs]) --_LT_TAGVAR(hardcode_action, $1)= --if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || -- test -n "$_LT_TAGVAR(runpath_var, $1)" || -- test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then -- -- # We can hardcode non-existent directories. -- if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && -- # If the only mechanism to avoid hardcoding is shlibpath_var, we -- # have to relink, otherwise we might link with an installed library -- # when we should be linking with a yet-to-be-installed one -- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && -- test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then -- # Linking always hardcodes the temporary library directory. -- _LT_TAGVAR(hardcode_action, $1)=relink -- else -- # We can link without hardcoding, and we can hardcode nonexisting dirs. -- _LT_TAGVAR(hardcode_action, $1)=immediate -- fi --else -- # We cannot hardcode anything, or else we can only hardcode existing -- # directories. -- _LT_TAGVAR(hardcode_action, $1)=unsupported --fi --AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) -- --if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || -- test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then -- # Fast installation is not supported -- enable_fast_install=no --elif test "$shlibpath_overrides_runpath" = yes || -- test "$enable_shared" = no; then -- # Fast installation is not necessary -- enable_fast_install=needless --fi --_LT_TAGDECL([], [hardcode_action], [0], -- [How to hardcode a shared library path into an executable]) --])# _LT_LINKER_HARDCODE_LIBPATH -- -- --# _LT_CMD_STRIPLIB --# ---------------- --m4_defun([_LT_CMD_STRIPLIB], --[m4_require([_LT_DECL_EGREP]) --striplib= --old_striplib= --AC_MSG_CHECKING([whether stripping libraries is possible]) --if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then -- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" -- test -z "$striplib" && striplib="$STRIP --strip-unneeded" -- AC_MSG_RESULT([yes]) --else --# FIXME - insert some real tests, host_os isn't really good enough -- case $host_os in -- darwin*) -- if test -n "$STRIP" ; then -- striplib="$STRIP -x" -- old_striplib="$STRIP -S" -- AC_MSG_RESULT([yes]) -- else -- AC_MSG_RESULT([no]) -- fi -- ;; -- *) -- AC_MSG_RESULT([no]) -- ;; -- esac --fi --_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) --_LT_DECL([], [striplib], [1]) --])# _LT_CMD_STRIPLIB -- -- --# _LT_SYS_DYNAMIC_LINKER([TAG]) --# ----------------------------- --# PORTME Fill in your ld.so characteristics --m4_defun([_LT_SYS_DYNAMIC_LINKER], --[AC_REQUIRE([AC_CANONICAL_HOST])dnl --m4_require([_LT_DECL_EGREP])dnl --m4_require([_LT_FILEUTILS_DEFAULTS])dnl --m4_require([_LT_DECL_OBJDUMP])dnl --m4_require([_LT_DECL_SED])dnl --AC_MSG_CHECKING([dynamic linker characteristics]) --m4_if([$1], -- [], [ --if test "$GCC" = yes; then -- case $host_os in -- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; -- *) lt_awk_arg="/^libraries:/" ;; -- esac -- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` -- if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then -- # if the path contains ";" then we assume it to be the separator -- # otherwise default to the standard path separator (i.e. ":") - it is -- # assumed that no part of a normal pathname contains ";" but that should -- # okay in the real world where ";" in dirpaths is itself problematic. -- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` -- else -- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -- fi -- # Ok, now we have the path, separated by spaces, we can step through it -- # and add multilib dir if necessary. -- lt_tmp_lt_search_path_spec= -- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` -- for lt_sys_path in $lt_search_path_spec; do -- if test -d "$lt_sys_path/$lt_multi_os_dir"; then -- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" -- else -- test -d "$lt_sys_path" && \ -- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" -- fi -- done -- lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' --BEGIN {RS=" "; FS="/|\n";} { -- lt_foo=""; -- lt_count=0; -- for (lt_i = NF; lt_i > 0; lt_i--) { -- if ($lt_i != "" && $lt_i != ".") { -- if ($lt_i == "..") { -- lt_count++; -- } else { -- if (lt_count == 0) { -- lt_foo="/" $lt_i lt_foo; -- } else { -- lt_count--; -- } -- } -- } -- } -- if (lt_foo != "") { lt_freq[[lt_foo]]++; } -- if (lt_freq[[lt_foo]] == 1) { print lt_foo; } --}'` -- sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` --else -- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" --fi]) --library_names_spec= --libname_spec='lib$name' --soname_spec= --shrext_cmds=".so" --postinstall_cmds= --postuninstall_cmds= --finish_cmds= --finish_eval= --shlibpath_var= --shlibpath_overrides_runpath=unknown --version_type=none --dynamic_linker="$host_os ld.so" --sys_lib_dlsearch_path_spec="/lib /usr/lib" --need_lib_prefix=unknown --hardcode_into_libs=no -- --# when you set need_version to no, make sure it does not cause -set_version --# flags to be left without arguments --need_version=unknown -- --case $host_os in --aix3*) -- version_type=linux -- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' -- shlibpath_var=LIBPATH -- -- # AIX 3 has no versioning support, so we append a major version to the name. -- soname_spec='${libname}${release}${shared_ext}$major' -- ;; -- --aix[[4-9]]*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- hardcode_into_libs=yes -- if test "$host_cpu" = ia64; then -- # AIX 5 supports IA64 -- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' -- shlibpath_var=LD_LIBRARY_PATH -- else -- # With GCC up to 2.95.x, collect2 would create an import file -- # for dependence libraries. The import file would start with -- # the line `#! .'. This would cause the generated library to -- # depend on `.', always an invalid library. This was fixed in -- # development snapshots of GCC prior to 3.0. -- case $host_os in -- aix4 | aix4.[[01]] | aix4.[[01]].*) -- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' -- echo ' yes ' -- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then -- : -- else -- can_build_shared=no -- fi -- ;; -- esac -- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct -- # soname into executable. Probably we can add versioning support to -- # collect2, so additional links can be useful in future. -- if test "$aix_use_runtimelinking" = yes; then -- # If using run time linking (on AIX 4.2 or later) use lib.so -- # instead of lib.a to let people know that these are not -- # typical AIX shared libraries. -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- else -- # We preserve .a as extension for shared libraries through AIX4.2 -- # and later when we are not doing run time linking. -- library_names_spec='${libname}${release}.a $libname.a' -- soname_spec='${libname}${release}${shared_ext}$major' -- fi -- shlibpath_var=LIBPATH -- fi -- ;; -- --amigaos*) -- case $host_cpu in -- powerpc) -- # Since July 2007 AmigaOS4 officially supports .so libraries. -- # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- ;; -- m68k) -- library_names_spec='$libname.ixlibrary $libname.a' -- # Create ${libname}_ixlibrary.a entries in /sys/libs. -- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' -- ;; -- esac -- ;; -- --beos*) -- library_names_spec='${libname}${shared_ext}' -- dynamic_linker="$host_os ld.so" -- shlibpath_var=LIBRARY_PATH -- ;; -- --bsdi[[45]]*) -- version_type=linux -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' -- shlibpath_var=LD_LIBRARY_PATH -- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" -- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" -- # the default ld.so.conf also contains /usr/contrib/lib and -- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow -- # libtool to hard-code these into programs -- ;; -- --cygwin* | mingw* | pw32* | cegcc*) -- version_type=windows -- shrext_cmds=".dll" -- need_version=no -- need_lib_prefix=no -- -- case $GCC,$host_os in -- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) -- library_names_spec='$libname.dll.a' -- # DLL is installed to $(libdir)/../bin by postinstall_cmds -- postinstall_cmds='base_file=`basename \${file}`~ -- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ -- dldir=$destdir/`dirname \$dlpath`~ -- test -d \$dldir || mkdir -p \$dldir~ -- $install_prog $dir/$dlname \$dldir/$dlname~ -- chmod a+x \$dldir/$dlname~ -- if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then -- eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; -- fi' -- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ -- dlpath=$dir/\$dldll~ -- $RM \$dlpath' -- shlibpath_overrides_runpath=yes -- -- case $host_os in -- cygwin*) -- # Cygwin DLLs use 'cyg' prefix rather than 'lib' -- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" -- ;; -- mingw* | cegcc*) -- # MinGW DLLs use traditional 'lib' prefix -- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -- sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -- if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then -- # It is most probably a Windows format PATH printed by -- # mingw gcc, but we are running on Cygwin. Gcc prints its search -- # path with ; separators, and with drive letters. We can handle the -- # drive letters (cygwin fileutils understands them), so leave them, -- # especially as we might pass files found there to a mingw objdump, -- # which wouldn't understand a cygwinified path. Ahh. -- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` -- else -- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -- fi -- ;; -- pw32*) -- # pw32 DLLs use 'pw' prefix rather than 'lib' -- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -- ;; -- esac -- ;; -- -- *) -- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' -- ;; -- esac -- dynamic_linker='Win32 ld.exe' -- # FIXME: first we should search . and the directory the executable is in -- shlibpath_var=PATH -- ;; -- --darwin* | rhapsody*) -- dynamic_linker="$host_os dyld" -- version_type=darwin -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' -- soname_spec='${libname}${release}${major}$shared_ext' -- shlibpath_overrides_runpath=yes -- shlibpath_var=DYLD_LIBRARY_PATH -- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' --m4_if([$1], [],[ -- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) -- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' -- ;; -- --dgux*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' -- soname_spec='${libname}${release}${shared_ext}$major' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -- --freebsd1*) -- dynamic_linker=no -- ;; -- --freebsd* | dragonfly*) -- # DragonFly does not have aout. When/if they implement a new -- # versioning mechanism, adjust this. -- if test -x /usr/bin/objformat; then -- objformat=`/usr/bin/objformat` -- else -- case $host_os in -- freebsd[[123]]*) objformat=aout ;; -- *) objformat=elf ;; -- esac -- fi -- version_type=freebsd-$objformat -- case $version_type in -- freebsd-elf*) -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' -- need_version=no -- need_lib_prefix=no -- ;; -- freebsd-*) -- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' -- need_version=yes -- ;; -- esac -- shlibpath_var=LD_LIBRARY_PATH -- case $host_os in -- freebsd2*) -- shlibpath_overrides_runpath=yes -- ;; -- freebsd3.[[01]]* | freebsdelf3.[[01]]*) -- shlibpath_overrides_runpath=yes -- hardcode_into_libs=yes -- ;; -- freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ -- freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) -- shlibpath_overrides_runpath=no -- hardcode_into_libs=yes -- ;; -- *) # from 4.6 on, and DragonFly -- shlibpath_overrides_runpath=yes -- hardcode_into_libs=yes -- ;; -- esac -- ;; -- --gnu*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- shlibpath_var=LD_LIBRARY_PATH -- hardcode_into_libs=yes -- ;; -- --hpux9* | hpux10* | hpux11*) -- # Give a soname corresponding to the major version so that dld.sl refuses to -- # link against other versions. -- version_type=sunos -- need_lib_prefix=no -- need_version=no -- case $host_cpu in -- ia64*) -- shrext_cmds='.so' -- hardcode_into_libs=yes -- dynamic_linker="$host_os dld.so" -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- if test "X$HPUX_IA64_MODE" = X32; then -- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" -- else -- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" -- fi -- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec -- ;; -- hppa*64*) -- shrext_cmds='.sl' -- hardcode_into_libs=yes -- dynamic_linker="$host_os dld.sl" -- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH -- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" -- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec -- ;; -- *) -- shrext_cmds='.sl' -- dynamic_linker="$host_os dld.sl" -- shlibpath_var=SHLIB_PATH -- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- ;; -- esac -- # HP-UX runs *really* slowly unless shared libraries are mode 555. -- postinstall_cmds='chmod 555 $lib' -- ;; -- --interix[[3-9]]*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=no -- hardcode_into_libs=yes -- ;; -- --irix5* | irix6* | nonstopux*) -- case $host_os in -- nonstopux*) version_type=nonstopux ;; -- *) -- if test "$lt_cv_prog_gnu_ld" = yes; then -- version_type=linux -- else -- version_type=irix -- fi ;; -- esac -- need_lib_prefix=no -- need_version=no -- soname_spec='${libname}${release}${shared_ext}$major' -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' -- case $host_os in -- irix5* | nonstopux*) -- libsuff= shlibsuff= -- ;; -- *) -- case $LD in # libtool.m4 will add one of these switches to LD -- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") -- libsuff= shlibsuff= libmagic=32-bit;; -- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") -- libsuff=32 shlibsuff=N32 libmagic=N32;; -- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") -- libsuff=64 shlibsuff=64 libmagic=64-bit;; -- *) libsuff= shlibsuff= libmagic=never-match;; -- esac -- ;; -- esac -- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH -- shlibpath_overrides_runpath=no -- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" -- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" -- hardcode_into_libs=yes -- ;; -- --# No shared lib support for Linux oldld, aout, or coff. --linux*oldld* | linux*aout* | linux*coff*) -- dynamic_linker=no -- ;; -- --# This must be Linux ELF. --linux* | k*bsd*-gnu) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=no -- # Some binutils ld are patched to set DT_RUNPATH -- save_LDFLAGS=$LDFLAGS -- save_libdir=$libdir -- eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ -- LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" -- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], -- [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], -- [shlibpath_overrides_runpath=yes])]) -- LDFLAGS=$save_LDFLAGS -- libdir=$save_libdir -- -- # This implies no fast_install, which is unacceptable. -- # Some rework will be needed to allow for fast_install -- # before this can be enabled. -- hardcode_into_libs=yes -- -- # Add ABI-specific directories to the system library path. -- sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" -- -- # Append ld.so.conf contents to the search path -- if test -f /etc/ld.so.conf; then -- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -- sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" -- fi -- -- # We used to test for /lib/ld.so.1 and disable shared libraries on -- # powerpc, because MkLinux only supported shared libraries with the -- # GNU dynamic linker. Since this was broken with cross compilers, -- # most powerpc-linux boxes support dynamic linking these days and -- # people can always --disable-shared, the test was removed, and we -- # assume the GNU/Linux dynamic linker is in use. -- dynamic_linker='GNU/Linux ld.so' -- ;; -- --netbsd*) -- version_type=sunos -- need_lib_prefix=no -- need_version=no -- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -- dynamic_linker='NetBSD (a.out) ld.so' -- else -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- dynamic_linker='NetBSD ld.elf_so' -- fi -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes -- hardcode_into_libs=yes -- ;; -- --newsos6) -- version_type=linux -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes -- ;; -- --*nto* | *qnx*) -- version_type=qnx -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=no -- hardcode_into_libs=yes -- dynamic_linker='ldqnx.so' -- ;; -- --openbsd*) -- version_type=sunos -- sys_lib_dlsearch_path_spec="/usr/lib" -- need_lib_prefix=no -- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. -- case $host_os in -- openbsd3.3 | openbsd3.3.*) need_version=yes ;; -- *) need_version=no ;; -- esac -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -- shlibpath_var=LD_LIBRARY_PATH -- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -- case $host_os in -- openbsd2.[[89]] | openbsd2.[[89]].*) -- shlibpath_overrides_runpath=no -- ;; -- *) -- shlibpath_overrides_runpath=yes -- ;; -- esac -- else -- shlibpath_overrides_runpath=yes -- fi -- ;; -- --os2*) -- libname_spec='$name' -- shrext_cmds=".dll" -- need_lib_prefix=no -- library_names_spec='$libname${shared_ext} $libname.a' -- dynamic_linker='OS/2 ld.exe' -- shlibpath_var=LIBPATH -- ;; -- --osf3* | osf4* | osf5*) -- version_type=osf -- need_lib_prefix=no -- need_version=no -- soname_spec='${libname}${release}${shared_ext}$major' -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- shlibpath_var=LD_LIBRARY_PATH -- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" -- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" -- ;; -- --rdos*) -- dynamic_linker=no -- ;; -- --solaris*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes -- hardcode_into_libs=yes -- # ldd complains unless libraries are executable -- postinstall_cmds='chmod +x $lib' -- ;; -- --sunos4*) -- version_type=sunos -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' -- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes -- if test "$with_gnu_ld" = yes; then -- need_lib_prefix=no -- fi -- need_version=yes -- ;; -- --sysv4 | sysv4.3*) -- version_type=linux -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- shlibpath_var=LD_LIBRARY_PATH -- case $host_vendor in -- sni) -- shlibpath_overrides_runpath=no -- need_lib_prefix=no -- runpath_var=LD_RUN_PATH -- ;; -- siemens) -- need_lib_prefix=no -- ;; -- motorola) -- need_lib_prefix=no -- need_version=no -- shlibpath_overrides_runpath=no -- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' -- ;; -- esac -- ;; -- --sysv4*MP*) -- if test -d /usr/nec ;then -- version_type=linux -- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' -- soname_spec='$libname${shared_ext}.$major' -- shlibpath_var=LD_LIBRARY_PATH -- fi -- ;; -- --sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) -- version_type=freebsd-elf -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes -- hardcode_into_libs=yes -- if test "$with_gnu_ld" = yes; then -- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' -- else -- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' -- case $host_os in -- sco3.2v5*) -- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" -- ;; -- esac -- fi -- sys_lib_dlsearch_path_spec='/usr/lib' -- ;; -- --tpf*) -- # TPF is a cross-target only. Preferred cross-host = GNU/Linux. -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=no -- hardcode_into_libs=yes -- ;; -- --uts4*) -- version_type=linux -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -- --*) -- dynamic_linker=no -- ;; --esac --AC_MSG_RESULT([$dynamic_linker]) --test "$dynamic_linker" = no && can_build_shared=no -- --variables_saved_for_relink="PATH $shlibpath_var $runpath_var" --if test "$GCC" = yes; then -- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" --fi -- --if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then -- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" --fi --if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then -- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" --fi -- --_LT_DECL([], [variables_saved_for_relink], [1], -- [Variables whose values should be saved in libtool wrapper scripts and -- restored at link time]) --_LT_DECL([], [need_lib_prefix], [0], -- [Do we need the "lib" prefix for modules?]) --_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) --_LT_DECL([], [version_type], [0], [Library versioning type]) --_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) --_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) --_LT_DECL([], [shlibpath_overrides_runpath], [0], -- [Is shlibpath searched before the hard-coded library search path?]) --_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) --_LT_DECL([], [library_names_spec], [1], -- [[List of archive names. First name is the real one, the rest are links. -- The last name is the one that the linker finds with -lNAME]]) --_LT_DECL([], [soname_spec], [1], -- [[The coded name of the library, if different from the real name]]) --_LT_DECL([], [postinstall_cmds], [2], -- [Command to use after installation of a shared archive]) --_LT_DECL([], [postuninstall_cmds], [2], -- [Command to use after uninstallation of a shared archive]) --_LT_DECL([], [finish_cmds], [2], -- [Commands used to finish a libtool library installation in a directory]) --_LT_DECL([], [finish_eval], [1], -- [[As "finish_cmds", except a single script fragment to be evaled but -- not shown]]) --_LT_DECL([], [hardcode_into_libs], [0], -- [Whether we should hardcode library paths into libraries]) --_LT_DECL([], [sys_lib_search_path_spec], [2], -- [Compile-time system search path for libraries]) --_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], -- [Run-time system search path for libraries]) --])# _LT_SYS_DYNAMIC_LINKER -- -- --# _LT_PATH_TOOL_PREFIX(TOOL) --# -------------------------- --# find a file program which can recognize shared library --AC_DEFUN([_LT_PATH_TOOL_PREFIX], --[m4_require([_LT_DECL_EGREP])dnl --AC_MSG_CHECKING([for $1]) --AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, --[case $MAGIC_CMD in --[[\\/*] | ?:[\\/]*]) -- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. -- ;; --*) -- lt_save_MAGIC_CMD="$MAGIC_CMD" -- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR --dnl $ac_dummy forces splitting on constant user-supplied paths. --dnl POSIX.2 word splitting is done only on the output of word expansions, --dnl not every word. This closes a longstanding sh security hole. -- ac_dummy="m4_if([$2], , $PATH, [$2])" -- for ac_dir in $ac_dummy; do -- IFS="$lt_save_ifs" -- test -z "$ac_dir" && ac_dir=. -- if test -f $ac_dir/$1; then -- lt_cv_path_MAGIC_CMD="$ac_dir/$1" -- if test -n "$file_magic_test_file"; then -- case $deplibs_check_method in -- "file_magic "*) -- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` -- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | -- $EGREP "$file_magic_regex" > /dev/null; then -- : -- else -- cat <<_LT_EOF 1>&2 -- --*** Warning: the command libtool uses to detect shared libraries, --*** $file_magic_cmd, produces output that libtool cannot recognize. --*** The result is that libtool may fail to recognize shared libraries --*** as such. This will affect the creation of libtool libraries that --*** depend on shared libraries, but programs linked with such libtool --*** libraries will work regardless of this problem. Nevertheless, you --*** may want to report the problem to your system manager and/or to --*** bug-libtool@gnu.org -- --_LT_EOF -- fi ;; -- esac -- fi -- break -- fi -- done -- IFS="$lt_save_ifs" -- MAGIC_CMD="$lt_save_MAGIC_CMD" -- ;; --esac]) --MAGIC_CMD="$lt_cv_path_MAGIC_CMD" --if test -n "$MAGIC_CMD"; then -- AC_MSG_RESULT($MAGIC_CMD) --else -- AC_MSG_RESULT(no) --fi --_LT_DECL([], [MAGIC_CMD], [0], -- [Used to examine libraries when file_magic_cmd begins with "file"])dnl --])# _LT_PATH_TOOL_PREFIX -- --# Old name: --AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) -- -- --# _LT_PATH_MAGIC --# -------------- --# find a file program which can recognize a shared library --m4_defun([_LT_PATH_MAGIC], --[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) --if test -z "$lt_cv_path_MAGIC_CMD"; then -- if test -n "$ac_tool_prefix"; then -- _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) -- else -- MAGIC_CMD=: -- fi --fi --])# _LT_PATH_MAGIC -- -- --# LT_PATH_LD --# ---------- --# find the pathname to the GNU or non-GNU linker --AC_DEFUN([LT_PATH_LD], --[AC_REQUIRE([AC_PROG_CC])dnl --AC_REQUIRE([AC_CANONICAL_HOST])dnl --AC_REQUIRE([AC_CANONICAL_BUILD])dnl --m4_require([_LT_DECL_SED])dnl --m4_require([_LT_DECL_EGREP])dnl -- --AC_ARG_WITH([gnu-ld], -- [AS_HELP_STRING([--with-gnu-ld], -- [assume the C compiler uses GNU ld @<:@default=no@:>@])], -- [test "$withval" = no || with_gnu_ld=yes], -- [with_gnu_ld=no])dnl -- --ac_prog=ld --if test "$GCC" = yes; then -- # Check if gcc -print-prog-name=ld gives a path. -- AC_MSG_CHECKING([for ld used by $CC]) -- case $host in -- *-*-mingw*) -- # gcc leaves a trailing carriage return which upsets mingw -- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; -- *) -- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; -- esac -- case $ac_prog in -- # Accept absolute paths. -- [[\\/]]* | ?:[[\\/]]*) -- re_direlt='/[[^/]][[^/]]*/\.\./' -- # Canonicalize the pathname of ld -- ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` -- while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do -- ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` -- done -- test -z "$LD" && LD="$ac_prog" -- ;; -- "") -- # If it fails, then pretend we aren't using GCC. -- ac_prog=ld -- ;; -- *) -- # If it is relative, then search for the first ld in PATH. -- with_gnu_ld=unknown -- ;; -- esac --elif test "$with_gnu_ld" = yes; then -- AC_MSG_CHECKING([for GNU ld]) --else -- AC_MSG_CHECKING([for non-GNU ld]) --fi --AC_CACHE_VAL(lt_cv_path_LD, --[if test -z "$LD"; then -- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for ac_dir in $PATH; do -- IFS="$lt_save_ifs" -- test -z "$ac_dir" && ac_dir=. -- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then -- lt_cv_path_LD="$ac_dir/$ac_prog" -- # Check to see if the program is GNU ld. I'd rather use --version, -- # but apparently some variants of GNU ld only accept -v. -- # Break only if it was the GNU/non-GNU ld that we prefer. -- case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then -- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' -- lt_cv_file_magic_cmd='func_win32_libid' -- else -- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' -- lt_cv_file_magic_cmd='$OBJDUMP -f' -- fi -- ;; -- --cegcc) -- # use the weaker test based on 'objdump'. See mingw*. -- lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' -- lt_cv_file_magic_cmd='$OBJDUMP -f' -- ;; -- --darwin* | rhapsody*) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --freebsd* | dragonfly*) -- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then -- case $host_cpu in -- i*86 ) -- # Not sure whether the presence of OpenBSD here was a mistake. -- # Let's accept both of them until this is cleared up. -- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' -- lt_cv_file_magic_cmd=/usr/bin/file -- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` -- ;; -- esac -- else -- lt_cv_deplibs_check_method=pass_all -- fi -- ;; -- --gnu*) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --hpux10.20* | hpux11*) -- lt_cv_file_magic_cmd=/usr/bin/file -- case $host_cpu in -- ia64*) -- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' -- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so -- ;; -- hppa*64*) -- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] -- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl -- ;; -- *) -- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' -- lt_cv_file_magic_test_file=/usr/lib/libc.sl -- ;; -- esac -- ;; -- --interix[[3-9]]*) -- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here -- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' -- ;; -- --irix5* | irix6* | nonstopux*) -- case $LD in -- *-32|*"-32 ") libmagic=32-bit;; -- *-n32|*"-n32 ") libmagic=N32;; -- *-64|*"-64 ") libmagic=64-bit;; -- *) libmagic=never-match;; -- esac -- lt_cv_deplibs_check_method=pass_all -- ;; -- --# This must be Linux ELF. --linux* | k*bsd*-gnu) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --netbsd*) -- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then -- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' -- else -- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' -- fi -- ;; -- --newos6*) -- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' -- lt_cv_file_magic_cmd=/usr/bin/file -- lt_cv_file_magic_test_file=/usr/lib/libnls.so -- ;; -- --*nto* | *qnx*) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --openbsd*) -- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' -- else -- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' -- fi -- ;; -- --osf3* | osf4* | osf5*) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --rdos*) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --solaris*) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --sysv4 | sysv4.3*) -- case $host_vendor in -- motorola) -- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' -- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` -- ;; -- ncr) -- lt_cv_deplibs_check_method=pass_all -- ;; -- sequent) -- lt_cv_file_magic_cmd='/bin/file' -- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' -- ;; -- sni) -- lt_cv_file_magic_cmd='/bin/file' -- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" -- lt_cv_file_magic_test_file=/lib/libc.so -- ;; -- siemens) -- lt_cv_deplibs_check_method=pass_all -- ;; -- pc) -- lt_cv_deplibs_check_method=pass_all -- ;; -- esac -- ;; -- --tpf*) -- lt_cv_deplibs_check_method=pass_all -- ;; --esac --]) --file_magic_cmd=$lt_cv_file_magic_cmd --deplibs_check_method=$lt_cv_deplibs_check_method --test -z "$deplibs_check_method" && deplibs_check_method=unknown -- --_LT_DECL([], [deplibs_check_method], [1], -- [Method to check whether dependent libraries are shared objects]) --_LT_DECL([], [file_magic_cmd], [1], -- [Command to use when deplibs_check_method == "file_magic"]) --])# _LT_CHECK_MAGIC_METHOD -- -- --# LT_PATH_NM --# ---------- --# find the pathname to a BSD- or MS-compatible name lister --AC_DEFUN([LT_PATH_NM], --[AC_REQUIRE([AC_PROG_CC])dnl --AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, --[if test -n "$NM"; then -- # Let the user override the test. -- lt_cv_path_NM="$NM" --else -- lt_nm_to_check="${ac_tool_prefix}nm" -- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then -- lt_nm_to_check="$lt_nm_to_check nm" -- fi -- for lt_tmp_nm in $lt_nm_to_check; do -- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do -- IFS="$lt_save_ifs" -- test -z "$ac_dir" && ac_dir=. -- tmp_nm="$ac_dir/$lt_tmp_nm" -- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then -- # Check to see if the nm accepts a BSD-compat flag. -- # Adding the `sed 1q' prevents false positives on HP-UX, which says: -- # nm: unknown option "B" ignored -- # Tru64's nm complains that /dev/null is an invalid object file -- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in -- */dev/null* | *'Invalid file or object type'*) -- lt_cv_path_NM="$tmp_nm -B" -- break -- ;; -- *) -- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in -- */dev/null*) -- lt_cv_path_NM="$tmp_nm -p" -- break -- ;; -- *) -- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but -- continue # so that we can try to find one that supports BSD flags -- ;; -- esac -- ;; -- esac -- fi -- done -- IFS="$lt_save_ifs" -- done -- : ${lt_cv_path_NM=no} --fi]) --if test "$lt_cv_path_NM" != "no"; then -- NM="$lt_cv_path_NM" --else -- # Didn't find any BSD compatible name lister, look for dumpbin. -- AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) -- AC_SUBST([DUMPBIN]) -- if test "$DUMPBIN" != ":"; then -- NM="$DUMPBIN" -- fi --fi --test -z "$NM" && NM=nm --AC_SUBST([NM]) --_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl -- --AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], -- [lt_cv_nm_interface="BSD nm" -- echo "int some_variable = 0;" > conftest.$ac_ext -- (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) -- (eval "$ac_compile" 2>conftest.err) -- cat conftest.err >&AS_MESSAGE_LOG_FD -- (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) -- (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) -- cat conftest.err >&AS_MESSAGE_LOG_FD -- (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) -- cat conftest.out >&AS_MESSAGE_LOG_FD -- if $GREP 'External.*some_variable' conftest.out > /dev/null; then -- lt_cv_nm_interface="MS dumpbin" -- fi -- rm -f conftest*]) --])# LT_PATH_NM -- --# Old names: --AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) --AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AM_PROG_NM], []) --dnl AC_DEFUN([AC_PROG_NM], []) -- -- --# LT_LIB_M --# -------- --# check for math library --AC_DEFUN([LT_LIB_M], --[AC_REQUIRE([AC_CANONICAL_HOST])dnl --LIBM= --case $host in --*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) -- # These system don't have libm, or don't need it -- ;; --*-ncr-sysv4.3*) -- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") -- AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") -- ;; --*) -- AC_CHECK_LIB(m, cos, LIBM="-lm") -- ;; --esac --AC_SUBST([LIBM]) --])# LT_LIB_M -- --# Old name: --AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_CHECK_LIBM], []) -- -- --# _LT_COMPILER_NO_RTTI([TAGNAME]) --# ------------------------------- --m4_defun([_LT_COMPILER_NO_RTTI], --[m4_require([_LT_TAG_COMPILER])dnl -- --_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -- --if test "$GCC" = yes; then -- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -- -- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], -- lt_cv_prog_compiler_rtti_exceptions, -- [-fno-rtti -fno-exceptions], [], -- [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) --fi --_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], -- [Compiler flag to turn off builtin functions]) --])# _LT_COMPILER_NO_RTTI -- -- --# _LT_CMD_GLOBAL_SYMBOLS --# ---------------------- --m4_defun([_LT_CMD_GLOBAL_SYMBOLS], --[AC_REQUIRE([AC_CANONICAL_HOST])dnl --AC_REQUIRE([AC_PROG_CC])dnl --AC_REQUIRE([LT_PATH_NM])dnl --AC_REQUIRE([LT_PATH_LD])dnl --m4_require([_LT_DECL_SED])dnl --m4_require([_LT_DECL_EGREP])dnl --m4_require([_LT_TAG_COMPILER])dnl -- --# Check for command to grab the raw symbol name followed by C symbol from nm. --AC_MSG_CHECKING([command to parse $NM output from $compiler object]) --AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], --[ --# These are sane defaults that work on at least a few old systems. --# [They come from Ultrix. What could be older than Ultrix?!! ;)] -- --# Character class describing NM global symbol codes. --symcode='[[BCDEGRST]]' -- --# Regexp to match symbols that can be accessed directly from C. --sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' -- --# Define system-specific variables. --case $host_os in --aix*) -- symcode='[[BCDT]]' -- ;; --cygwin* | mingw* | pw32* | cegcc*) -- symcode='[[ABCDGISTW]]' -- ;; --hpux*) -- if test "$host_cpu" = ia64; then -- symcode='[[ABCDEGRST]]' -- fi -- ;; --irix* | nonstopux*) -- symcode='[[BCDEGRST]]' -- ;; --osf*) -- symcode='[[BCDEGQRST]]' -- ;; --solaris*) -- symcode='[[BDRT]]' -- ;; --sco3.2v5*) -- symcode='[[DT]]' -- ;; --sysv4.2uw2*) -- symcode='[[DT]]' -- ;; --sysv5* | sco5v6* | unixware* | OpenUNIX*) -- symcode='[[ABDT]]' -- ;; --sysv4) -- symcode='[[DFNSTU]]' -- ;; --esac -- --# If we're using GNU nm, then use its standard symbol codes. --case `$NM -V 2>&1` in --*GNU* | *'with BFD'*) -- symcode='[[ABCDGIRSTW]]' ;; --esac -- --# Transform an extracted symbol line into a proper C declaration. --# Some systems (esp. on ia64) link data and code symbols differently, --# so use this general approach. --lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" -- --# Transform an extracted symbol line into symbol name and symbol address --lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" --lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" -- --# Handle CRLF in mingw tool chain --opt_cr= --case $build_os in --mingw*) -- opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp -- ;; --esac -- --# Try without a prefix underscore, then with it. --for ac_symprfx in "" "_"; do -- -- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. -- symxfrm="\\1 $ac_symprfx\\2 \\2" -- -- # Write the raw and C identifiers. -- if test "$lt_cv_nm_interface" = "MS dumpbin"; then -- # Fake it for dumpbin and say T for any non-static function -- # and D for any global variable. -- # Also find C++ and __fastcall symbols from MSVC++, -- # which start with @ or ?. -- lt_cv_sys_global_symbol_pipe="$AWK ['"\ --" {last_section=section; section=\$ 3};"\ --" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ --" \$ 0!~/External *\|/{next};"\ --" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ --" {if(hide[section]) next};"\ --" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ --" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ --" s[1]~/^[@?]/{print s[1], s[1]; next};"\ --" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ --" ' prfx=^$ac_symprfx]" -- else -- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" -- fi -- -- # Check to see that the pipe works correctly. -- pipe_works=no -- -- rm -f conftest* -- cat > conftest.$ac_ext <<_LT_EOF --#ifdef __cplusplus --extern "C" { --#endif --char nm_test_var; --void nm_test_func(void); --void nm_test_func(void){} --#ifdef __cplusplus --} --#endif --int main(){nm_test_var='a';nm_test_func();return(0);} --_LT_EOF -- -- if AC_TRY_EVAL(ac_compile); then -- # Now try to grab the symbols. -- nlist=conftest.nm -- if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then -- # Try sorting and uniquifying the output. -- if sort "$nlist" | uniq > "$nlist"T; then -- mv -f "$nlist"T "$nlist" -- else -- rm -f "$nlist"T -- fi -- -- # Make sure that we snagged all the symbols we need. -- if $GREP ' nm_test_var$' "$nlist" >/dev/null; then -- if $GREP ' nm_test_func$' "$nlist" >/dev/null; then -- cat <<_LT_EOF > conftest.$ac_ext --#ifdef __cplusplus --extern "C" { --#endif -- --_LT_EOF -- # Now generate the symbol file. -- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' -- -- cat <<_LT_EOF >> conftest.$ac_ext -- --/* The mapping between symbol names and symbols. */ --const struct { -- const char *name; -- void *address; --} --lt__PROGRAM__LTX_preloaded_symbols[[]] = --{ -- { "@PROGRAM@", (void *) 0 }, --_LT_EOF -- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext -- cat <<\_LT_EOF >> conftest.$ac_ext -- {0, (void *) 0} --}; -- --/* This works around a problem in FreeBSD linker */ --#ifdef FREEBSD_WORKAROUND --static const void *lt_preloaded_setup() { -- return lt__PROGRAM__LTX_preloaded_symbols; --} --#endif -- --#ifdef __cplusplus --} --#endif --_LT_EOF -- # Now try linking the two files. -- mv conftest.$ac_objext conftstm.$ac_objext -- lt_save_LIBS="$LIBS" -- lt_save_CFLAGS="$CFLAGS" -- LIBS="conftstm.$ac_objext" -- CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" -- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then -- pipe_works=yes -- fi -- LIBS="$lt_save_LIBS" -- CFLAGS="$lt_save_CFLAGS" -- else -- echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD -- fi -- else -- echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD -- fi -- else -- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD -- fi -- else -- echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD -- cat conftest.$ac_ext >&5 -- fi -- rm -rf conftest* conftst* -- -- # Do not use the global_symbol_pipe unless it works. -- if test "$pipe_works" = yes; then -- break -- else -- lt_cv_sys_global_symbol_pipe= -- fi --done --]) --if test -z "$lt_cv_sys_global_symbol_pipe"; then -- lt_cv_sys_global_symbol_to_cdecl= --fi --if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then -- AC_MSG_RESULT(failed) --else -- AC_MSG_RESULT(ok) --fi -- --_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], -- [Take the output of nm and produce a listing of raw symbols and C names]) --_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], -- [Transform the output of nm in a proper C declaration]) --_LT_DECL([global_symbol_to_c_name_address], -- [lt_cv_sys_global_symbol_to_c_name_address], [1], -- [Transform the output of nm in a C name address pair]) --_LT_DECL([global_symbol_to_c_name_address_lib_prefix], -- [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], -- [Transform the output of nm in a C name address pair when lib prefix is needed]) --]) # _LT_CMD_GLOBAL_SYMBOLS -- -- --# _LT_COMPILER_PIC([TAGNAME]) --# --------------------------- --m4_defun([_LT_COMPILER_PIC], --[m4_require([_LT_TAG_COMPILER])dnl --_LT_TAGVAR(lt_prog_compiler_wl, $1)= --_LT_TAGVAR(lt_prog_compiler_pic, $1)= --_LT_TAGVAR(lt_prog_compiler_static, $1)= -- --AC_MSG_CHECKING([for $compiler option to produce PIC]) --m4_if([$1], [CXX], [ -- # C++ specific cases for pic, static, wl, etc. -- if test "$GXX" = yes; then -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -- -- case $host_os in -- aix*) -- # All AIX code is PIC. -- if test "$host_cpu" = ia64; then -- # AIX 5 now supports IA64 processor -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- fi -- ;; -- -- amigaos*) -- case $host_cpu in -- powerpc) -- # see comment about AmigaOS4 .so support -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -- ;; -- m68k) -- # FIXME: we need at least 68020 code to build shared libraries, but -- # adding the `-m68020' flag to GCC prevents building anything better, -- # like `-m68040'. -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' -- ;; -- esac -- ;; -- -- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) -- # PIC is the default for these OSes. -- ;; -- mingw* | cygwin* | os2* | pw32* | cegcc*) -- # This hack is so that the source file can tell whether it is being -- # built for inclusion in a dll (and should export symbols for example). -- # Although the cygwin gcc ignores -fPIC, still need this for old-style -- # (--disable-auto-import) libraries -- m4_if([$1], [GCJ], [], -- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) -- ;; -- darwin* | rhapsody*) -- # PIC is the default on this platform -- # Common symbols not allowed in MH_DYLIB files -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' -- ;; -- *djgpp*) -- # DJGPP does not support shared libraries at all -- _LT_TAGVAR(lt_prog_compiler_pic, $1)= -- ;; -- interix[[3-9]]*) -- # Interix 3.x gcc -fpic/-fPIC options generate broken code. -- # Instead, we relocate shared libraries at runtime. -- ;; -- sysv4*MP*) -- if test -d /usr/nec; then -- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic -- fi -- ;; -- hpux*) -- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit -- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag -- # sets the default TLS model and affects inlining. -- case $host_cpu in -- hppa*64*) -- ;; -- *) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -- ;; -- esac -- ;; -- *qnx* | *nto*) -- # QNX uses GNU C++, but need to define -shared option too, otherwise -- # it will coredump. -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' -- ;; -- *) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -- ;; -- esac -- else -- case $host_os in -- aix[[4-9]]*) -- # All AIX code is PIC. -- if test "$host_cpu" = ia64; then -- # AIX 5 now supports IA64 processor -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- else -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' -- fi -- ;; -- chorus*) -- case $cc_basename in -- cxch68*) -- # Green Hills C++ Compiler -- # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" -- ;; -- esac -- ;; -- dgux*) -- case $cc_basename in -- ec++*) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- ;; -- ghcx*) -- # Green Hills C++ Compiler -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -- ;; -- *) -- ;; -- esac -- ;; -- freebsd* | dragonfly*) -- # FreeBSD uses GNU C++ -- ;; -- hpux9* | hpux10* | hpux11*) -- case $cc_basename in -- CC*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' -- if test "$host_cpu" != ia64; then -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' -- fi -- ;; -- aCC*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' -- case $host_cpu in -- hppa*64*|ia64*) -- # +Z the default -- ;; -- *) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' -- ;; -- esac -- ;; -- *) -- ;; -- esac -- ;; -- interix*) -- # This is c89, which is MS Visual C++ (no shared libs) -- # Anyone wants to do a port? -- ;; -- irix5* | irix6* | nonstopux*) -- case $cc_basename in -- CC*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -- # CC pic flag -KPIC is the default. -- ;; -- *) -- ;; -- esac -- ;; -- linux* | k*bsd*-gnu) -- case $cc_basename in -- KCC*) -- # KAI C++ Compiler -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -- ;; -- ecpc* ) -- # old Intel C++ for x86_64 which still supported -KPIC. -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -- ;; -- icpc* ) -- # Intel C++, used to be incompatible with GCC. -- # ICC 10 doesn't accept -KPIC any more. -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -- ;; -- pgCC* | pgcpp*) -- # Portland Group C++ compiler -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- ;; -- cxx*) -- # Compaq C++ -- # Make sure the PIC flag is empty. It appears that all Alpha -- # Linux and Compaq Tru64 Unix objects are PIC. -- _LT_TAGVAR(lt_prog_compiler_pic, $1)= -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -- ;; -- xlc* | xlC*) -- # IBM XL 8.0 on PPC -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' -- ;; -- *) -- case `$CC -V 2>&1 | sed 5q` in -- *Sun\ C*) -- # Sun C++ 5.9 -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' -- ;; -- esac -- ;; -- esac -- ;; -- lynxos*) -- ;; -- m88k*) -- ;; -- mvs*) -- case $cc_basename in -- cxx*) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' -- ;; -- *) -- ;; -- esac -- ;; -- netbsd*) -- ;; -- *qnx* | *nto*) -- # QNX uses GNU C++, but need to define -shared option too, otherwise -- # it will coredump. -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' -- ;; -- osf3* | osf4* | osf5*) -- case $cc_basename in -- KCC*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' -- ;; -- RCC*) -- # Rational C++ 2.4.1 -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -- ;; -- cxx*) -- # Digital/Compaq C++ -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- # Make sure the PIC flag is empty. It appears that all Alpha -- # Linux and Compaq Tru64 Unix objects are PIC. -- _LT_TAGVAR(lt_prog_compiler_pic, $1)= -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -- ;; -- *) -- ;; -- esac -- ;; -- psos*) -- ;; -- solaris*) -- case $cc_basename in -- CC*) -- # Sun C++ 4.2, 5.x and Centerline C++ -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' -- ;; -- gcx*) -- # Green Hills C++ Compiler -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' -- ;; -- *) -- ;; -- esac -- ;; -- sunos4*) -- case $cc_basename in -- CC*) -- # Sun C++ 4.x -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- ;; -- lcc*) -- # Lucid -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -- ;; -- *) -- ;; -- esac -- ;; -- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) -- case $cc_basename in -- CC*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- ;; -- esac -- ;; -- tandem*) -- case $cc_basename in -- NCC*) -- # NonStop-UX NCC 3.20 -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- ;; -- *) -- ;; -- esac -- ;; -- vxworks*) -- ;; -- *) -- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no -- ;; -- esac -- fi --], --[ -- if test "$GCC" = yes; then -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -- -- case $host_os in -- aix*) -- # All AIX code is PIC. -- if test "$host_cpu" = ia64; then -- # AIX 5 now supports IA64 processor -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- fi -- ;; -- -- amigaos*) -- case $host_cpu in -- powerpc) -- # see comment about AmigaOS4 .so support -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -- ;; -- m68k) -- # FIXME: we need at least 68020 code to build shared libraries, but -- # adding the `-m68020' flag to GCC prevents building anything better, -- # like `-m68040'. -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' -- ;; -- esac -- ;; -- -- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) -- # PIC is the default for these OSes. -- ;; -- -- mingw* | cygwin* | pw32* | os2* | cegcc*) -- # This hack is so that the source file can tell whether it is being -- # built for inclusion in a dll (and should export symbols for example). -- # Although the cygwin gcc ignores -fPIC, still need this for old-style -- # (--disable-auto-import) libraries -- m4_if([$1], [GCJ], [], -- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) -- ;; -- -- darwin* | rhapsody*) -- # PIC is the default on this platform -- # Common symbols not allowed in MH_DYLIB files -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' -- ;; -- -- hpux*) -- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit -- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag -- # sets the default TLS model and affects inlining. -- case $host_cpu in -- hppa*64*) -- # +Z the default -- ;; -- *) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -- ;; -- esac -- ;; -- -- interix[[3-9]]*) -- # Interix 3.x gcc -fpic/-fPIC options generate broken code. -- # Instead, we relocate shared libraries at runtime. -- ;; -- -- msdosdjgpp*) -- # Just because we use GCC doesn't mean we suddenly get shared libraries -- # on systems that don't support them. -- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no -- enable_shared=no -- ;; -- -- *nto* | *qnx*) -- # QNX uses GNU C++, but need to define -shared option too, otherwise -- # it will coredump. -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' -- ;; -- -- sysv4*MP*) -- if test -d /usr/nec; then -- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic -- fi -- ;; -- -- *) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -- ;; -- esac -- else -- # PORTME Check for flag to pass linker flags through the system compiler. -- case $host_os in -- aix*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- if test "$host_cpu" = ia64; then -- # AIX 5 now supports IA64 processor -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- else -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' -- fi -- ;; -- -- mingw* | cygwin* | pw32* | os2* | cegcc*) -- # This hack is so that the source file can tell whether it is being -- # built for inclusion in a dll (and should export symbols for example). -- m4_if([$1], [GCJ], [], -- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) -- ;; -- -- hpux9* | hpux10* | hpux11*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but -- # not for PA HP-UX. -- case $host_cpu in -- hppa*64*|ia64*) -- # +Z the default -- ;; -- *) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' -- ;; -- esac -- # Is there a better lt_prog_compiler_static that works with the bundled CC? -- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' -- ;; -- -- irix5* | irix6* | nonstopux*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- # PIC (with -KPIC) is the default. -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -- ;; -- -- linux* | k*bsd*-gnu) -- case $cc_basename in -- # old Intel for x86_64 which still supported -KPIC. -- ecc*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -- ;; -- # icc used to be incompatible with GCC. -- # ICC 10 doesn't accept -KPIC any more. -- icc* | ifort*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -- ;; -- # Lahey Fortran 8.1. -- lf95*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' -- ;; -- pgcc* | pgf77* | pgf90* | pgf95*) -- # Portland Group compilers (*not* the Pentium gcc compiler, -- # which looks to be a dead project) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- ;; -- ccc*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- # All Alpha code is PIC. -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -- ;; -- xl*) -- # IBM XL C 8.0/Fortran 10.1 on PPC -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' -- ;; -- *) -- case `$CC -V 2>&1 | sed 5q` in -- *Sun\ C*) -- # Sun C 5.9 -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- ;; -- *Sun\ F*) -- # Sun Fortran 8.3 passes all unrecognized flags to the linker -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='' -- ;; -- esac -- ;; -- esac -- ;; -- -- newsos6) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- ;; -- -- *nto* | *qnx*) -- # QNX uses GNU C++, but need to define -shared option too, otherwise -- # it will coredump. -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' -- ;; -- -- osf3* | osf4* | osf5*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- # All OSF/1 code is PIC. -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -- ;; -- -- rdos*) -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -- ;; -- -- solaris*) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- case $cc_basename in -- f77* | f90* | f95*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; -- *) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; -- esac -- ;; -- -- sunos4*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- ;; -- -- sysv4 | sysv4.2uw2* | sysv4.3*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- ;; -- -- sysv4*MP*) -- if test -d /usr/nec ;then -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- fi -- ;; -- -- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- ;; -- -- unicos*) -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no -- ;; -- -- uts4*) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- ;; -- -- *) -- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no -- ;; -- esac -- fi --]) --case $host_os in -- # For platforms which do not support PIC, -DPIC is meaningless: -- *djgpp*) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)= -- ;; -- *) -- _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" -- ;; --esac --AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) --_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], -- [How to pass a linker flag through the compiler]) -- --# --# Check to make sure the PIC flag actually works. --# --if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then -- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], -- [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], -- [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], -- [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in -- "" | " "*) ;; -- *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; -- esac], -- [_LT_TAGVAR(lt_prog_compiler_pic, $1)= -- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) --fi --_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], -- [Additional compiler flags for building library objects]) -- --# --# Check to make sure the static flag actually works. --# --wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" --_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], -- _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), -- $lt_tmp_static_flag, -- [], -- [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) --_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], -- [Compiler flag to prevent dynamic linking]) --])# _LT_COMPILER_PIC -- -- --# _LT_LINKER_SHLIBS([TAGNAME]) --# ---------------------------- --# See if the linker supports building shared libraries. --m4_defun([_LT_LINKER_SHLIBS], --[AC_REQUIRE([LT_PATH_LD])dnl --AC_REQUIRE([LT_PATH_NM])dnl --m4_require([_LT_FILEUTILS_DEFAULTS])dnl --m4_require([_LT_DECL_EGREP])dnl --m4_require([_LT_DECL_SED])dnl --m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl --m4_require([_LT_TAG_COMPILER])dnl --AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) --m4_if([$1], [CXX], [ -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -- case $host_os in -- aix[[4-9]]*) -- # If we're using GNU nm, then we don't want the "-C" option. -- # -C means demangle to AIX nm, but means don't demangle with GNU nm -- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -- else -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -- fi -- ;; -- pw32*) -- _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" -- ;; -- cygwin* | mingw* | cegcc*) -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' -- ;; -- *) -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -- ;; -- esac -- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] --], [ -- runpath_var= -- _LT_TAGVAR(allow_undefined_flag, $1)= -- _LT_TAGVAR(always_export_symbols, $1)=no -- _LT_TAGVAR(archive_cmds, $1)= -- _LT_TAGVAR(archive_expsym_cmds, $1)= -- _LT_TAGVAR(compiler_needs_object, $1)=no -- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no -- _LT_TAGVAR(export_dynamic_flag_spec, $1)= -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -- _LT_TAGVAR(hardcode_automatic, $1)=no -- _LT_TAGVAR(hardcode_direct, $1)=no -- _LT_TAGVAR(hardcode_direct_absolute, $1)=no -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -- _LT_TAGVAR(hardcode_libdir_separator, $1)= -- _LT_TAGVAR(hardcode_minus_L, $1)=no -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -- _LT_TAGVAR(inherit_rpath, $1)=no -- _LT_TAGVAR(link_all_deplibs, $1)=unknown -- _LT_TAGVAR(module_cmds, $1)= -- _LT_TAGVAR(module_expsym_cmds, $1)= -- _LT_TAGVAR(old_archive_from_new_cmds, $1)= -- _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= -- _LT_TAGVAR(thread_safe_flag_spec, $1)= -- _LT_TAGVAR(whole_archive_flag_spec, $1)= -- # include_expsyms should be a list of space-separated symbols to be *always* -- # included in the symbol list -- _LT_TAGVAR(include_expsyms, $1)= -- # exclude_expsyms can be an extended regexp of symbols to exclude -- # it will be wrapped by ` (' and `)$', so one must not match beginning or -- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', -- # as well as any symbol that contains `d'. -- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] -- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out -- # platforms (ab)use it in PIC code, but their linkers get confused if -- # the symbol is explicitly referenced. Since portable code cannot -- # rely on this symbol name, it's probably fine to never include it in -- # preloaded symbol tables. -- # Exclude shared library initialization/finalization symbols. --dnl Note also adjust exclude_expsyms for C++ above. -- extract_expsyms_cmds= -- -- case $host_os in -- cygwin* | mingw* | pw32* | cegcc*) -- # FIXME: the MSVC++ port hasn't been tested in a loooong time -- # When not using gcc, we currently assume that we are using -- # Microsoft Visual C++. -- if test "$GCC" != yes; then -- with_gnu_ld=no -- fi -- ;; -- interix*) -- # we just hope/assume this is gcc and not c89 (= MSVC++) -- with_gnu_ld=yes -- ;; -- openbsd*) -- with_gnu_ld=no -- ;; -- esac -- -- _LT_TAGVAR(ld_shlibs, $1)=yes -- if test "$with_gnu_ld" = yes; then -- # If archive_cmds runs LD, not CC, wlarc should be empty -- wlarc='${wl}' -- -- # Set some defaults for GNU ld with shared library support. These -- # are reset later if shared libraries are not supported. Putting them -- # here allows them to be overridden if necessary. -- runpath_var=LD_RUN_PATH -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -- # ancient GNU ld didn't support --whole-archive et. al. -- if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then -- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -- else -- _LT_TAGVAR(whole_archive_flag_spec, $1)= -- fi -- supports_anon_versioning=no -- case `$LD -v 2>&1` in -- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 -- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... -- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... -- *\ 2.11.*) ;; # other 2.11 versions -- *) supports_anon_versioning=yes ;; -- esac -- -- # See if GNU ld supports shared libraries. -- case $host_os in -- aix[[3-9]]*) -- # On AIX/PPC, the GNU linker is very broken -- if test "$host_cpu" != ia64; then -- _LT_TAGVAR(ld_shlibs, $1)=no -- cat <<_LT_EOF 1>&2 -- --*** Warning: the GNU linker, at least up to release 2.9.1, is reported --*** to be unable to reliably create shared libraries on AIX. --*** Therefore, libtool is disabling shared libraries support. If you --*** really care for shared libraries, you may want to modify your PATH --*** so that a non-GNU linker is found, and then restart. -- --_LT_EOF -- fi -- ;; -- -- amigaos*) -- case $host_cpu in -- powerpc) -- # see comment about AmigaOS4 .so support -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='' -- ;; -- m68k) -- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -- _LT_TAGVAR(hardcode_minus_L, $1)=yes -- ;; -- esac -- ;; -- -- beos*) -- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -- # Joseph Beckenbach says some releases of gcc -- # support --undefined. This deserves some investigation. FIXME -- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- else -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- -- cygwin* | mingw* | pw32* | cegcc*) -- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, -- # as there is no search path for DLLs. -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -- _LT_TAGVAR(always_export_symbols, $1)=no -- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' -- -- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -- # If the export-symbols file already is a .def file (1st line -- # is EXPORTS), use it as is; otherwise, prepend... -- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -- cp $export_symbols $output_objdir/$soname.def; -- else -- echo EXPORTS > $output_objdir/$soname.def; -- cat $export_symbols >> $output_objdir/$soname.def; -- fi~ -- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -- else -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- -- interix[[3-9]]*) -- _LT_TAGVAR(hardcode_direct, $1)=no -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. -- # Instead, shared libraries are loaded at an image base (0x10000000 by -- # default) and relocated if they conflict, which is a slow very memory -- # consuming and fragmenting process. To avoid this, we pick a random, -- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link -- # time. Moving up from 0x10000000 also allows more sbrk(2) space. -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -- ;; -- -- gnu* | linux* | tpf* | k*bsd*-gnu) -- tmp_diet=no -- if test "$host_os" = linux-dietlibc; then -- case $cc_basename in -- diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) -- esac -- fi -- if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ -- && test "$tmp_diet" = no -- then -- tmp_addflag= -- tmp_sharedflag='-shared' -- case $cc_basename,$host_cpu in -- pgcc*) # Portland Group C compiler -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -- tmp_addflag=' $pic_flag' -- ;; -- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -- tmp_addflag=' $pic_flag -Mnomain' ;; -- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 -- tmp_addflag=' -i_dynamic' ;; -- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 -- tmp_addflag=' -i_dynamic -nofor_main' ;; -- ifc* | ifort*) # Intel Fortran compiler -- tmp_addflag=' -nofor_main' ;; -- lf95*) # Lahey Fortran 8.1 -- _LT_TAGVAR(whole_archive_flag_spec, $1)= -- tmp_sharedflag='--shared' ;; -- xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) -- tmp_sharedflag='-qmkshrobj' -- tmp_addflag= ;; -- esac -- case `$CC -V 2>&1 | sed 5q` in -- *Sun\ C*) # Sun C 5.9 -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -- _LT_TAGVAR(compiler_needs_object, $1)=yes -- tmp_sharedflag='-G' ;; -- *Sun\ F*) # Sun Fortran 8.3 -- tmp_sharedflag='-G' ;; -- esac -- _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- -- if test "x$supports_anon_versioning" = xyes; then -- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ -- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -- echo "local: *; };" >> $output_objdir/$libname.ver~ -- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' -- fi -- -- case $cc_basename in -- xlf*) -- # IBM XL Fortran 10.1 on PPC cannot create shared libs itself -- _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' -- _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' -- if test "x$supports_anon_versioning" = xyes; then -- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ -- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -- echo "local: *; };" >> $output_objdir/$libname.ver~ -- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' -- fi -- ;; -- esac -- else -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- -- netbsd*) -- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then -- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' -- wlarc= -- else -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -- fi -- ;; -- -- solaris*) -- if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then -- _LT_TAGVAR(ld_shlibs, $1)=no -- cat <<_LT_EOF 1>&2 -- --*** Warning: The releases 2.8.* of the GNU linker cannot reliably --*** create shared libraries on Solaris systems. Therefore, libtool --*** is disabling shared libraries support. We urge you to upgrade GNU --*** binutils to release 2.9.1 or newer. Another option is to modify --*** your PATH or compiler configuration so that the native linker is --*** used, and then restart. -- --_LT_EOF -- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -- else -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- -- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) -- case `$LD -v 2>&1` in -- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) -- _LT_TAGVAR(ld_shlibs, $1)=no -- cat <<_LT_EOF 1>&2 -- --*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not --*** reliably create shared libraries on SCO systems. Therefore, libtool --*** is disabling shared libraries support. We urge you to upgrade GNU --*** binutils to release 2.16.91.0.3 or newer. Another option is to modify --*** your PATH or compiler configuration so that the native linker is --*** used, and then restart. -- --_LT_EOF -- ;; -- *) -- # For security reasons, it is highly recommended that you always -- # use absolute paths for naming shared libraries, and exclude the -- # DT_RUNPATH tag from executables and libraries. But doing so -- # requires that you compile everything twice, which is a pain. -- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -- else -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- esac -- ;; -- -- sunos4*) -- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' -- wlarc= -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- ;; -- -- *) -- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -- else -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- esac -- -- if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then -- runpath_var= -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -- _LT_TAGVAR(export_dynamic_flag_spec, $1)= -- _LT_TAGVAR(whole_archive_flag_spec, $1)= -- fi -- else -- # PORTME fill in a description of your system's linker (not GNU ld) -- case $host_os in -- aix3*) -- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -- _LT_TAGVAR(always_export_symbols, $1)=yes -- _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' -- # Note: this linker hardcodes the directories in LIBPATH if there -- # are no directories specified by -L. -- _LT_TAGVAR(hardcode_minus_L, $1)=yes -- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then -- # Neither direct hardcoding nor static linking is supported with a -- # broken collect2. -- _LT_TAGVAR(hardcode_direct, $1)=unsupported -- fi -- ;; -- -- aix[[4-9]]*) -- if test "$host_cpu" = ia64; then -- # On IA64, the linker does run time linking by default, so we don't -- # have to do anything special. -- aix_use_runtimelinking=no -- exp_sym_flag='-Bexport' -- no_entry_flag="" -- else -- # If we're using GNU nm, then we don't want the "-C" option. -- # -C means demangle to AIX nm, but means don't demangle with GNU nm -- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -- else -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -- fi -- aix_use_runtimelinking=no -- -- # Test if we are trying to use run time linking or normal -- # AIX style linking. If -brtl is somewhere in LDFLAGS, we -- # need to do runtime linking. -- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) -- for ld_flag in $LDFLAGS; do -- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then -- aix_use_runtimelinking=yes -- break -- fi -- done -- ;; -- esac -- -- exp_sym_flag='-bexport' -- no_entry_flag='-bnoentry' -- fi -- -- # When large executables or shared objects are built, AIX ld can -- # have problems creating the table of contents. If linking a library -- # or program results in "error TOC overflow" add -mminimal-toc to -- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not -- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. -- -- _LT_TAGVAR(archive_cmds, $1)='' -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' -- _LT_TAGVAR(link_all_deplibs, $1)=yes -- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' -- -- if test "$GCC" = yes; then -- case $host_os in aix4.[[012]]|aix4.[[012]].*) -- # We only want to do this on AIX 4.2 and lower, the check -- # below for broken collect2 doesn't work under 4.3+ -- collect2name=`${CC} -print-prog-name=collect2` -- if test -f "$collect2name" && -- strings "$collect2name" | $GREP resolve_lib_name >/dev/null -- then -- # We have reworked collect2 -- : -- else -- # We have old collect2 -- _LT_TAGVAR(hardcode_direct, $1)=unsupported -- # It fails to find uninstalled libraries when the uninstalled -- # path is not listed in the libpath. Setting hardcode_minus_L -- # to unsupported forces relinking -- _LT_TAGVAR(hardcode_minus_L, $1)=yes -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)= -- fi -- ;; -- esac -- shared_flag='-shared' -- if test "$aix_use_runtimelinking" = yes; then -- shared_flag="$shared_flag "'${wl}-G' -- fi -- else -- # not using gcc -- if test "$host_cpu" = ia64; then -- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release -- # chokes on -Wl,-G. The following line is correct: -- shared_flag='-G' -- else -- if test "$aix_use_runtimelinking" = yes; then -- shared_flag='${wl}-G' -- else -- shared_flag='${wl}-bM:SRE' -- fi -- fi -- fi -- -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' -- # It seems that -bexpall does not export symbols beginning with -- # underscore (_), so it is better to generate a list of symbols to export. -- _LT_TAGVAR(always_export_symbols, $1)=yes -- if test "$aix_use_runtimelinking" = yes; then -- # Warning - without using the other runtime loading flags (-brtl), -- # -berok will link without error, but may produce a broken library. -- _LT_TAGVAR(allow_undefined_flag, $1)='-berok' -- # Determine the default libpath from the value encoded in an -- # empty executable. -- _LT_SYS_MODULE_PATH_AIX -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -- else -- if test "$host_cpu" = ia64; then -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' -- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" -- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" -- else -- # Determine the default libpath from the value encoded in an -- # empty executable. -- _LT_SYS_MODULE_PATH_AIX -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" -- # Warning - without using the other run time loading flags, -- # -berok will link without error, but may produce a broken library. -- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' -- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' -- # Exported symbols can be pulled into shared objects from archives -- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' -- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes -- # This is similar to how AIX traditionally builds its shared libraries. -- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' -- fi -- fi -- ;; -- -- amigaos*) -- case $host_cpu in -- powerpc) -- # see comment about AmigaOS4 .so support -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='' -- ;; -- m68k) -- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -- _LT_TAGVAR(hardcode_minus_L, $1)=yes -- ;; -- esac -- ;; -- -- bsdi[[45]]*) -- _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic -- ;; -- -- cygwin* | mingw* | pw32* | cegcc*) -- # When not using gcc, we currently assume that we are using -- # Microsoft Visual C++. -- # hardcode_libdir_flag_spec is actually meaningless, as there is -- # no search path for DLLs. -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' -- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -- # Tell ltmain to make .lib files, not .a files. -- libext=lib -- # Tell ltmain to make .dll files, not .so files. -- shrext_cmds=".dll" -- # FIXME: Setting linknames here is a bad hack. -- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' -- # The linker will automatically build a .lib file if we build a DLL. -- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' -- # FIXME: Should let the user specify the lib program. -- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' -- _LT_TAGVAR(fix_srcfile_path, $1)='' -- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -- ;; -- -- darwin* | rhapsody*) -- _LT_DARWIN_LINKER_FEATURES($1) -- ;; -- -- dgux*) -- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- ;; -- -- freebsd1*) -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- -- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor -- # support. Future versions do this automatically, but an explicit c++rt0.o -- # does not break anything, and helps significantly (at the cost of a little -- # extra space). -- freebsd2.2*) -- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- ;; -- -- # Unfortunately, older versions of FreeBSD 2 do not have this feature. -- freebsd2*) -- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_minus_L, $1)=yes -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- ;; -- -- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. -- freebsd* | dragonfly*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- ;; -- -- hpux9*) -- if test "$GCC" = yes; then -- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -- else -- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -- fi -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- _LT_TAGVAR(hardcode_direct, $1)=yes -- -- # hardcode_minus_L: Not really in the search PATH, -- # but as the default location of the library. -- _LT_TAGVAR(hardcode_minus_L, $1)=yes -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -- ;; -- -- hpux10*) -- if test "$GCC" = yes -a "$with_gnu_ld" = no; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -- else -- _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -- fi -- if test "$with_gnu_ld" = no; then -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -- # hardcode_minus_L: Not really in the search PATH, -- # but as the default location of the library. -- _LT_TAGVAR(hardcode_minus_L, $1)=yes -- fi -- ;; -- -- hpux11*) -- if test "$GCC" = yes -a "$with_gnu_ld" = no; then -- case $host_cpu in -- hppa*64*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -- ;; -- ia64*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -- ;; -- *) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -- ;; -- esac -- else -- case $host_cpu in -- hppa*64*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -- ;; -- ia64*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -- ;; -- *) -- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -- ;; -- esac -- fi -- if test "$with_gnu_ld" = no; then -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- -- case $host_cpu in -- hppa*64*|ia64*) -- _LT_TAGVAR(hardcode_direct, $1)=no -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- ;; -- *) -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -- -- # hardcode_minus_L: Not really in the search PATH, -- # but as the default location of the library. -- _LT_TAGVAR(hardcode_minus_L, $1)=yes -- ;; -- esac -- fi -- ;; -- -- irix5* | irix6* | nonstopux*) -- if test "$GCC" = yes; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -- # Try to use the -exported_symbol ld option, if it does not -- # work, assume that -exports_file does not work either and -- # implicitly export all symbols. -- save_LDFLAGS="$LDFLAGS" -- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" -- AC_LINK_IFELSE(int foo(void) {}, -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' -- ) -- LDFLAGS="$save_LDFLAGS" -- else -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' -- fi -- _LT_TAGVAR(archive_cmds_need_lc, $1)='no' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- _LT_TAGVAR(inherit_rpath, $1)=yes -- _LT_TAGVAR(link_all_deplibs, $1)=yes -- ;; -- -- netbsd*) -- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then -- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out -- else -- _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF -- fi -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- ;; -- -- newsos6) -- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- ;; -- -- *nto* | *qnx*) -- ;; -- -- openbsd*) -- if test -f /usr/libexec/ld.so; then -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -- else -- case $host_os in -- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) -- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -- ;; -- *) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -- ;; -- esac -- fi -- else -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- -- os2*) -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -- _LT_TAGVAR(hardcode_minus_L, $1)=yes -- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -- _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' -- _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' -- ;; -- -- osf3*) -- if test "$GCC" = yes; then -- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -- else -- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -- fi -- _LT_TAGVAR(archive_cmds_need_lc, $1)='no' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- ;; -- -- osf4* | osf5*) # as osf3* with the addition of -msym flag -- if test "$GCC" = yes; then -- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -- else -- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ -- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' -- -- # Both c and cxx compiler support -rpath directly -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -- fi -- _LT_TAGVAR(archive_cmds_need_lc, $1)='no' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- ;; -- -- solaris*) -- _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' -- if test "$GCC" = yes; then -- wlarc='${wl}' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' -- else -- case `$CC -V 2>&1` in -- *"Compilers 5.0"*) -- wlarc='' -- _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' -- ;; -- *) -- wlarc='${wl}' -- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' -- ;; -- esac -- fi -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- case $host_os in -- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; -- *) -- # The compiler driver will combine and reorder linker options, -- # but understands `-z linker_flag'. GCC discards it without `$wl', -- # but is careful enough not to reorder. -- # Supported since Solaris 2.6 (maybe 2.5.1?) -- if test "$GCC" = yes; then -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' -- else -- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' -- fi -- ;; -- esac -- _LT_TAGVAR(link_all_deplibs, $1)=yes -- ;; -- -- sunos4*) -- if test "x$host_vendor" = xsequent; then -- # Use $CC to link under sequent, because it throws in some extra .o -- # files that make .init and .fini sections work. -- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' -- else -- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' -- fi -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_minus_L, $1)=yes -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- ;; -- -- sysv4) -- case $host_vendor in -- sni) -- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? -- ;; -- siemens) -- ## LD is ld it makes a PLAMLIB -- ## CC just makes a GrossModule. -- _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' -- _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' -- _LT_TAGVAR(hardcode_direct, $1)=no -- ;; -- motorola) -- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie -- ;; -- esac -- runpath_var='LD_RUN_PATH' -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- ;; -- -- sysv4.3*) -- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' -- ;; -- -- sysv4*MP*) -- if test -d /usr/nec; then -- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- runpath_var=LD_RUN_PATH -- hardcode_runpath_var=yes -- _LT_TAGVAR(ld_shlibs, $1)=yes -- fi -- ;; -- -- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) -- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -- _LT_TAGVAR(archive_cmds_need_lc, $1)=no -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- runpath_var='LD_RUN_PATH' -- -- if test "$GCC" = yes; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- else -- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- fi -- ;; -- -- sysv5* | sco3.2v5* | sco5v6*) -- # Note: We can NOT use -z defs as we might desire, because we do not -- # link with -lc, and that would cause any symbols used from libc to -- # always be unresolved, which means just about no library would -- # ever link correctly. If we're not using GNU ld we use -z text -- # though, which does catch some bad symbols but isn't as heavy-handed -- # as -z defs. -- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' -- _LT_TAGVAR(archive_cmds_need_lc, $1)=no -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' -- _LT_TAGVAR(link_all_deplibs, $1)=yes -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' -- runpath_var='LD_RUN_PATH' -- -- if test "$GCC" = yes; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- else -- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- fi -- ;; -- -- uts4*) -- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- ;; -- -- *) -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- esac -- -- if test x$host_vendor = xsni; then -- case $host in -- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' -- ;; -- esac -- fi -- fi --]) --AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) --test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no -- --_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld -- --_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl --_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl --_LT_DECL([], [extract_expsyms_cmds], [2], -- [The commands to extract the exported symbol list from a shared archive]) -- --# --# Do we need to explicitly link libc? --# --case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in --x|xyes) -- # Assume -lc should be added -- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes -- -- if test "$enable_shared" = yes && test "$GCC" = yes; then -- case $_LT_TAGVAR(archive_cmds, $1) in -- *'~'*) -- # FIXME: we may have to deal with multi-command sequences. -- ;; -- '$CC '*) -- # Test whether the compiler implicitly links with -lc since on some -- # systems, -lgcc has to come before -lc. If gcc already passes -lc -- # to ld, don't add -lc before -lgcc. -- AC_MSG_CHECKING([whether -lc should be explicitly linked in]) -- $RM conftest* -- echo "$lt_simple_compile_test_code" > conftest.$ac_ext -- -- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then -- soname=conftest -- lib=conftest -- libobjs=conftest.$ac_objext -- deplibs= -- wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) -- pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) -- compiler_flags=-v -- linker_flags=-v -- verstring= -- output_objdir=. -- libname=conftest -- lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) -- _LT_TAGVAR(allow_undefined_flag, $1)= -- if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) -- then -- _LT_TAGVAR(archive_cmds_need_lc, $1)=no -- else -- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes -- fi -- _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag -- else -- cat conftest.err 1>&5 -- fi -- $RM conftest* -- AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) -- ;; -- esac -- fi -- ;; --esac -- --_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], -- [Whether or not to add -lc for building shared libraries]) --_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], -- [enable_shared_with_static_runtimes], [0], -- [Whether or not to disallow shared libs when runtime libs are static]) --_LT_TAGDECL([], [export_dynamic_flag_spec], [1], -- [Compiler flag to allow reflexive dlopens]) --_LT_TAGDECL([], [whole_archive_flag_spec], [1], -- [Compiler flag to generate shared objects directly from archives]) --_LT_TAGDECL([], [compiler_needs_object], [1], -- [Whether the compiler copes with passing no objects directly]) --_LT_TAGDECL([], [old_archive_from_new_cmds], [2], -- [Create an old-style archive from a shared archive]) --_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], -- [Create a temporary old-style archive to link instead of a shared archive]) --_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) --_LT_TAGDECL([], [archive_expsym_cmds], [2]) --_LT_TAGDECL([], [module_cmds], [2], -- [Commands used to build a loadable module if different from building -- a shared archive.]) --_LT_TAGDECL([], [module_expsym_cmds], [2]) --_LT_TAGDECL([], [with_gnu_ld], [1], -- [Whether we are building with GNU ld or not]) --_LT_TAGDECL([], [allow_undefined_flag], [1], -- [Flag that allows shared libraries with undefined symbols to be built]) --_LT_TAGDECL([], [no_undefined_flag], [1], -- [Flag that enforces no undefined symbols]) --_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], -- [Flag to hardcode $libdir into a binary during linking. -- This must work even if $libdir does not exist]) --_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], -- [[If ld is used when linking, flag to hardcode $libdir into a binary -- during linking. This must work even if $libdir does not exist]]) --_LT_TAGDECL([], [hardcode_libdir_separator], [1], -- [Whether we need a single "-rpath" flag with a separated argument]) --_LT_TAGDECL([], [hardcode_direct], [0], -- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes -- DIR into the resulting binary]) --_LT_TAGDECL([], [hardcode_direct_absolute], [0], -- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes -- DIR into the resulting binary and the resulting library dependency is -- "absolute", i.e impossible to change by setting ${shlibpath_var} if the -- library is relocated]) --_LT_TAGDECL([], [hardcode_minus_L], [0], -- [Set to "yes" if using the -LDIR flag during linking hardcodes DIR -- into the resulting binary]) --_LT_TAGDECL([], [hardcode_shlibpath_var], [0], -- [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -- into the resulting binary]) --_LT_TAGDECL([], [hardcode_automatic], [0], -- [Set to "yes" if building a shared library automatically hardcodes DIR -- into the library and all subsequent libraries and executables linked -- against it]) --_LT_TAGDECL([], [inherit_rpath], [0], -- [Set to yes if linker adds runtime paths of dependent libraries -- to runtime path list]) --_LT_TAGDECL([], [link_all_deplibs], [0], -- [Whether libtool must link a program against all its dependency libraries]) --_LT_TAGDECL([], [fix_srcfile_path], [1], -- [Fix the shell variable $srcfile for the compiler]) --_LT_TAGDECL([], [always_export_symbols], [0], -- [Set to "yes" if exported symbols are required]) --_LT_TAGDECL([], [export_symbols_cmds], [2], -- [The commands to list exported symbols]) --_LT_TAGDECL([], [exclude_expsyms], [1], -- [Symbols that should not be listed in the preloaded symbols]) --_LT_TAGDECL([], [include_expsyms], [1], -- [Symbols that must always be exported]) --_LT_TAGDECL([], [prelink_cmds], [2], -- [Commands necessary for linking programs (against libraries) with templates]) --_LT_TAGDECL([], [file_list_spec], [1], -- [Specify filename containing input files]) --dnl FIXME: Not yet implemented --dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], --dnl [Compiler flag to generate thread safe objects]) --])# _LT_LINKER_SHLIBS -- -- --# _LT_LANG_C_CONFIG([TAG]) --# ------------------------ --# Ensure that the configuration variables for a C compiler are suitably --# defined. These variables are subsequently used by _LT_CONFIG to write --# the compiler configuration to `libtool'. --m4_defun([_LT_LANG_C_CONFIG], --[m4_require([_LT_DECL_EGREP])dnl --lt_save_CC="$CC" --AC_LANG_PUSH(C) -- --# Source file extension for C test sources. --ac_ext=c -- --# Object file extension for compiled C test sources. --objext=o --_LT_TAGVAR(objext, $1)=$objext -- --# Code to be used in simple compile tests --lt_simple_compile_test_code="int some_variable = 0;" -- --# Code to be used in simple link tests --lt_simple_link_test_code='int main(){return(0);}' -- --_LT_TAG_COMPILER --# Save the default compiler, since it gets overwritten when the other --# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. --compiler_DEFAULT=$CC -- --# save warnings/boilerplate of simple test code --_LT_COMPILER_BOILERPLATE --_LT_LINKER_BOILERPLATE -- --if test -n "$compiler"; then -- _LT_COMPILER_NO_RTTI($1) -- _LT_COMPILER_PIC($1) -- _LT_COMPILER_C_O($1) -- _LT_COMPILER_FILE_LOCKS($1) -- _LT_LINKER_SHLIBS($1) -- _LT_SYS_DYNAMIC_LINKER($1) -- _LT_LINKER_HARDCODE_LIBPATH($1) -- LT_SYS_DLOPEN_SELF -- _LT_CMD_STRIPLIB -- -- # Report which library types will actually be built -- AC_MSG_CHECKING([if libtool supports shared libraries]) -- AC_MSG_RESULT([$can_build_shared]) -- -- AC_MSG_CHECKING([whether to build shared libraries]) -- test "$can_build_shared" = "no" && enable_shared=no -- -- # On AIX, shared libraries and static libraries use the same namespace, and -- # are all built from PIC. -- case $host_os in -- aix3*) -- test "$enable_shared" = yes && enable_static=no -- if test -n "$RANLIB"; then -- archive_cmds="$archive_cmds~\$RANLIB \$lib" -- postinstall_cmds='$RANLIB $lib' -- fi -- ;; -- -- aix[[4-9]]*) -- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then -- test "$enable_shared" = yes && enable_static=no -- fi -- ;; -- esac -- AC_MSG_RESULT([$enable_shared]) -- -- AC_MSG_CHECKING([whether to build static libraries]) -- # Make sure either enable_shared or enable_static is yes. -- test "$enable_shared" = yes || enable_static=yes -- AC_MSG_RESULT([$enable_static]) -- -- _LT_CONFIG($1) --fi --AC_LANG_POP --CC="$lt_save_CC" --])# _LT_LANG_C_CONFIG -- -- --# _LT_PROG_CXX --# ------------ --# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ --# compiler, we have our own version here. --m4_defun([_LT_PROG_CXX], --[ --pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) --AC_PROG_CXX --if test -n "$CXX" && ( test "X$CXX" != "Xno" && -- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || -- (test "X$CXX" != "Xg++"))) ; then -- AC_PROG_CXXCPP --else -- _lt_caught_CXX_error=yes --fi --popdef([AC_MSG_ERROR]) --])# _LT_PROG_CXX -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([_LT_PROG_CXX], []) -- -- --# _LT_LANG_CXX_CONFIG([TAG]) --# -------------------------- --# Ensure that the configuration variables for a C++ compiler are suitably --# defined. These variables are subsequently used by _LT_CONFIG to write --# the compiler configuration to `libtool'. --m4_defun([_LT_LANG_CXX_CONFIG], --[AC_REQUIRE([_LT_PROG_CXX])dnl --m4_require([_LT_FILEUTILS_DEFAULTS])dnl --m4_require([_LT_DECL_EGREP])dnl -- --AC_LANG_PUSH(C++) --_LT_TAGVAR(archive_cmds_need_lc, $1)=no --_LT_TAGVAR(allow_undefined_flag, $1)= --_LT_TAGVAR(always_export_symbols, $1)=no --_LT_TAGVAR(archive_expsym_cmds, $1)= --_LT_TAGVAR(compiler_needs_object, $1)=no --_LT_TAGVAR(export_dynamic_flag_spec, $1)= --_LT_TAGVAR(hardcode_direct, $1)=no --_LT_TAGVAR(hardcode_direct_absolute, $1)=no --_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= --_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= --_LT_TAGVAR(hardcode_libdir_separator, $1)= --_LT_TAGVAR(hardcode_minus_L, $1)=no --_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported --_LT_TAGVAR(hardcode_automatic, $1)=no --_LT_TAGVAR(inherit_rpath, $1)=no --_LT_TAGVAR(module_cmds, $1)= --_LT_TAGVAR(module_expsym_cmds, $1)= --_LT_TAGVAR(link_all_deplibs, $1)=unknown --_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds --_LT_TAGVAR(no_undefined_flag, $1)= --_LT_TAGVAR(whole_archive_flag_spec, $1)= --_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no -- --# Source file extension for C++ test sources. --ac_ext=cpp -- --# Object file extension for compiled C++ test sources. --objext=o --_LT_TAGVAR(objext, $1)=$objext -- --# No sense in running all these tests if we already determined that --# the CXX compiler isn't working. Some variables (like enable_shared) --# are currently assumed to apply to all compilers on this platform, --# and will be corrupted by setting them based on a non-working compiler. --if test "$_lt_caught_CXX_error" != yes; then -- # Code to be used in simple compile tests -- lt_simple_compile_test_code="int some_variable = 0;" -- -- # Code to be used in simple link tests -- lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' -- -- # ltmain only uses $CC for tagged configurations so make sure $CC is set. -- _LT_TAG_COMPILER -- -- # save warnings/boilerplate of simple test code -- _LT_COMPILER_BOILERPLATE -- _LT_LINKER_BOILERPLATE -- -- # Allow CC to be a program name with arguments. -- lt_save_CC=$CC -- lt_save_LD=$LD -- lt_save_GCC=$GCC -- GCC=$GXX -- lt_save_with_gnu_ld=$with_gnu_ld -- lt_save_path_LD=$lt_cv_path_LD -- if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then -- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx -- else -- $as_unset lt_cv_prog_gnu_ld -- fi -- if test -n "${lt_cv_path_LDCXX+set}"; then -- lt_cv_path_LD=$lt_cv_path_LDCXX -- else -- $as_unset lt_cv_path_LD -- fi -- test -z "${LDCXX+set}" || LD=$LDCXX -- CC=${CXX-"c++"} -- compiler=$CC -- _LT_TAGVAR(compiler, $1)=$CC -- _LT_CC_BASENAME([$compiler]) -- -- if test -n "$compiler"; then -- # We don't want -fno-exception when compiling C++ code, so set the -- # no_builtin_flag separately -- if test "$GXX" = yes; then -- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -- else -- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -- fi -- -- if test "$GXX" = yes; then -- # Set up default GNU C++ configuration -- -- LT_PATH_LD -- -- # Check if GNU C++ uses GNU ld as the underlying linker, since the -- # archiving commands below assume that GNU ld is being used. -- if test "$with_gnu_ld" = yes; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -- -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -- -- # If archive_cmds runs LD, not CC, wlarc should be empty -- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to -- # investigate it a little bit more. (MM) -- wlarc='${wl}' -- -- # ancient GNU ld didn't support --whole-archive et. al. -- if eval "`$CC -print-prog-name=ld` --help 2>&1" | -- $GREP 'no-whole-archive' > /dev/null; then -- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -- else -- _LT_TAGVAR(whole_archive_flag_spec, $1)= -- fi -- else -- with_gnu_ld=no -- wlarc= -- -- # A generic and very simple default shared library creation -- # command for GNU C++ for the case where it uses the native -- # linker, instead of GNU ld. If possible, this setting should -- # overridden to take advantage of the native linker features on -- # the platform it is being used on. -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' -- fi -- -- # Commands to make compiler produce verbose output that lists -- # what "hidden" libraries, object files and flags are used when -- # linking a shared library. -- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' -- -- else -- GXX=no -- with_gnu_ld=no -- wlarc= -- fi -- -- # PORTME: fill in a description of your system's C++ link characteristics -- AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -- _LT_TAGVAR(ld_shlibs, $1)=yes -- case $host_os in -- aix3*) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- aix[[4-9]]*) -- if test "$host_cpu" = ia64; then -- # On IA64, the linker does run time linking by default, so we don't -- # have to do anything special. -- aix_use_runtimelinking=no -- exp_sym_flag='-Bexport' -- no_entry_flag="" -- else -- aix_use_runtimelinking=no -- -- # Test if we are trying to use run time linking or normal -- # AIX style linking. If -brtl is somewhere in LDFLAGS, we -- # need to do runtime linking. -- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) -- for ld_flag in $LDFLAGS; do -- case $ld_flag in -- *-brtl*) -- aix_use_runtimelinking=yes -- break -- ;; -- esac -- done -- ;; -- esac -- -- exp_sym_flag='-bexport' -- no_entry_flag='-bnoentry' -- fi -- -- # When large executables or shared objects are built, AIX ld can -- # have problems creating the table of contents. If linking a library -- # or program results in "error TOC overflow" add -mminimal-toc to -- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not -- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. -- -- _LT_TAGVAR(archive_cmds, $1)='' -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' -- _LT_TAGVAR(link_all_deplibs, $1)=yes -- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' -- -- if test "$GXX" = yes; then -- case $host_os in aix4.[[012]]|aix4.[[012]].*) -- # We only want to do this on AIX 4.2 and lower, the check -- # below for broken collect2 doesn't work under 4.3+ -- collect2name=`${CC} -print-prog-name=collect2` -- if test -f "$collect2name" && -- strings "$collect2name" | $GREP resolve_lib_name >/dev/null -- then -- # We have reworked collect2 -- : -- else -- # We have old collect2 -- _LT_TAGVAR(hardcode_direct, $1)=unsupported -- # It fails to find uninstalled libraries when the uninstalled -- # path is not listed in the libpath. Setting hardcode_minus_L -- # to unsupported forces relinking -- _LT_TAGVAR(hardcode_minus_L, $1)=yes -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)= -- fi -- esac -- shared_flag='-shared' -- if test "$aix_use_runtimelinking" = yes; then -- shared_flag="$shared_flag "'${wl}-G' -- fi -- else -- # not using gcc -- if test "$host_cpu" = ia64; then -- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release -- # chokes on -Wl,-G. The following line is correct: -- shared_flag='-G' -- else -- if test "$aix_use_runtimelinking" = yes; then -- shared_flag='${wl}-G' -- else -- shared_flag='${wl}-bM:SRE' -- fi -- fi -- fi -- -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' -- # It seems that -bexpall does not export symbols beginning with -- # underscore (_), so it is better to generate a list of symbols to -- # export. -- _LT_TAGVAR(always_export_symbols, $1)=yes -- if test "$aix_use_runtimelinking" = yes; then -- # Warning - without using the other runtime loading flags (-brtl), -- # -berok will link without error, but may produce a broken library. -- _LT_TAGVAR(allow_undefined_flag, $1)='-berok' -- # Determine the default libpath from the value encoded in an empty -- # executable. -- _LT_SYS_MODULE_PATH_AIX -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" -- -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -- else -- if test "$host_cpu" = ia64; then -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' -- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" -- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" -- else -- # Determine the default libpath from the value encoded in an -- # empty executable. -- _LT_SYS_MODULE_PATH_AIX -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" -- # Warning - without using the other run time loading flags, -- # -berok will link without error, but may produce a broken library. -- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' -- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' -- # Exported symbols can be pulled into shared objects from archives -- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' -- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes -- # This is similar to how AIX traditionally builds its shared -- # libraries. -- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' -- fi -- fi -- ;; -- -- beos*) -- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -- # Joseph Beckenbach says some releases of gcc -- # support --undefined. This deserves some investigation. FIXME -- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- else -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- -- chorus*) -- case $cc_basename in -- *) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- esac -- ;; -- -- cygwin* | mingw* | pw32* | cegcc*) -- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, -- # as there is no search path for DLLs. -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -- _LT_TAGVAR(always_export_symbols, $1)=no -- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -- -- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -- # If the export-symbols file already is a .def file (1st line -- # is EXPORTS), use it as is; otherwise, prepend... -- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -- cp $export_symbols $output_objdir/$soname.def; -- else -- echo EXPORTS > $output_objdir/$soname.def; -- cat $export_symbols >> $output_objdir/$soname.def; -- fi~ -- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -- else -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- darwin* | rhapsody*) -- _LT_DARWIN_LINKER_FEATURES($1) -- ;; -- -- dgux*) -- case $cc_basename in -- ec++*) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- ghcx*) -- # Green Hills C++ Compiler -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- *) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- esac -- ;; -- -- freebsd[[12]]*) -- # C++ shared libraries reported to be fairly broken before -- # switch to ELF -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- -- freebsd-elf*) -- _LT_TAGVAR(archive_cmds_need_lc, $1)=no -- ;; -- -- freebsd* | dragonfly*) -- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF -- # conventions -- _LT_TAGVAR(ld_shlibs, $1)=yes -- ;; -- -- gnu*) -- ;; -- -- hpux9*) -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, -- # but as the default -- # location of the library. -- -- case $cc_basename in -- CC*) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- aCC*) -- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -- # Commands to make compiler produce verbose output that lists -- # what "hidden" libraries, object files and flags are used when -- # linking a shared library. -- # -- # There doesn't appear to be a way to prevent this compiler from -- # explicitly linking system object files so we need to strip them -- # from the output so that they don't get included in the library -- # dependencies. -- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' -- ;; -- *) -- if test "$GXX" = yes; then -- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -- else -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- esac -- ;; -- -- hpux10*|hpux11*) -- if test $with_gnu_ld = no; then -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- -- case $host_cpu in -- hppa*64*|ia64*) -- ;; -- *) -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -- ;; -- esac -- fi -- case $host_cpu in -- hppa*64*|ia64*) -- _LT_TAGVAR(hardcode_direct, $1)=no -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- ;; -- *) -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, -- # but as the default -- # location of the library. -- ;; -- esac -- -- case $cc_basename in -- CC*) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- aCC*) -- case $host_cpu in -- hppa*64*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -- ;; -- ia64*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -- ;; -- *) -- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -- ;; -- esac -- # Commands to make compiler produce verbose output that lists -- # what "hidden" libraries, object files and flags are used when -- # linking a shared library. -- # -- # There doesn't appear to be a way to prevent this compiler from -- # explicitly linking system object files so we need to strip them -- # from the output so that they don't get included in the library -- # dependencies. -- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' -- ;; -- *) -- if test "$GXX" = yes; then -- if test $with_gnu_ld = no; then -- case $host_cpu in -- hppa*64*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -- ;; -- ia64*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -- ;; -- *) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -- ;; -- esac -- fi -- else -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- esac -- ;; -- -- interix[[3-9]]*) -- _LT_TAGVAR(hardcode_direct, $1)=no -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. -- # Instead, shared libraries are loaded at an image base (0x10000000 by -- # default) and relocated if they conflict, which is a slow very memory -- # consuming and fragmenting process. To avoid this, we pick a random, -- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link -- # time. Moving up from 0x10000000 also allows more sbrk(2) space. -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -- ;; -- irix5* | irix6*) -- case $cc_basename in -- CC*) -- # SGI C++ -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -- -- # Archives containing C++ object files must be created using -- # "CC -ar", where "CC" is the IRIX C++ compiler. This is -- # necessary to make sure instantiated templates are included -- # in the archive. -- _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' -- ;; -- *) -- if test "$GXX" = yes; then -- if test "$with_gnu_ld" = no; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -- else -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' -- fi -- fi -- _LT_TAGVAR(link_all_deplibs, $1)=yes -- ;; -- esac -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- _LT_TAGVAR(inherit_rpath, $1)=yes -- ;; -- -- linux* | k*bsd*-gnu) -- case $cc_basename in -- KCC*) -- # Kuck and Associates, Inc. (KAI) C++ Compiler -- -- # KCC will only create a shared library if the output file -- # ends with ".so" (or ".sl" for HP-UX), so rename the library -- # to its proper name (with version) after linking. -- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' -- # Commands to make compiler produce verbose output that lists -- # what "hidden" libraries, object files and flags are used when -- # linking a shared library. -- # -- # There doesn't appear to be a way to prevent this compiler from -- # explicitly linking system object files so we need to strip them -- # from the output so that they don't get included in the library -- # dependencies. -- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' -- -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -- -- # Archives containing C++ object files must be created using -- # "CC -Bstatic", where "CC" is the KAI C++ compiler. -- _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' -- ;; -- icpc* | ecpc* ) -- # Intel C++ -- with_gnu_ld=yes -- # version 8.0 and above of icpc choke on multiply defined symbols -- # if we add $predep_objects and $postdep_objects, however 7.1 and -- # earlier do not add the objects themselves. -- case `$CC -V 2>&1` in -- *"Version 7."*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -- ;; -- *) # Version 8.0 or newer -- tmp_idyn= -- case $host_cpu in -- ia64*) tmp_idyn=' -i_dynamic';; -- esac -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -- ;; -- esac -- _LT_TAGVAR(archive_cmds_need_lc, $1)=no -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -- ;; -- pgCC* | pgcpp*) -- # Portland Group C++ compiler -- case `$CC -V` in -- *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) -- _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ -- rm -rf $tpldir~ -- $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ -- compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' -- _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ -- rm -rf $tpldir~ -- $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ -- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ -- $RANLIB $oldlib' -- _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ -- rm -rf $tpldir~ -- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ -- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ -- rm -rf $tpldir~ -- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ -- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' -- ;; -- *) # Version 6 will use weak symbols -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' -- ;; -- esac -- -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -- ;; -- cxx*) -- # Compaq C++ -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' -- -- runpath_var=LD_RUN_PATH -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- -- # Commands to make compiler produce verbose output that lists -- # what "hidden" libraries, object files and flags are used when -- # linking a shared library. -- # -- # There doesn't appear to be a way to prevent this compiler from -- # explicitly linking system object files so we need to strip them -- # from the output so that they don't get included in the library -- # dependencies. -- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' -- ;; -- xl*) -- # IBM XL 8.0 on PPC, with GNU ld -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -- _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- if test "x$supports_anon_versioning" = xyes; then -- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ -- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -- echo "local: *; };" >> $output_objdir/$libname.ver~ -- $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' -- fi -- ;; -- *) -- case `$CC -V 2>&1 | sed 5q` in -- *Sun\ C*) -- # Sun C++ 5.9 -- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' -- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -- _LT_TAGVAR(compiler_needs_object, $1)=yes -- -- # Not sure whether something based on -- # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 -- # would be better. -- output_verbose_link_cmd='echo' -- -- # Archives containing C++ object files must be created using -- # "CC -xar", where "CC" is the Sun C++ compiler. This is -- # necessary to make sure instantiated templates are included -- # in the archive. -- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' -- ;; -- esac -- ;; -- esac -- ;; -- -- lynxos*) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- -- m88k*) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- -- mvs*) -- case $cc_basename in -- cxx*) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- *) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- esac -- ;; -- -- netbsd*) -- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then -- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' -- wlarc= -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- fi -- # Workaround some broken pre-1.5 toolchains -- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' -- ;; -- -- *nto* | *qnx*) -- _LT_TAGVAR(ld_shlibs, $1)=yes -- ;; -- -- openbsd2*) -- # C++ shared libraries are fairly broken -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- -- openbsd*) -- if test -f /usr/libexec/ld.so; then -- _LT_TAGVAR(hardcode_direct, $1)=yes -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -- fi -- output_verbose_link_cmd=echo -- else -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- -- osf3* | osf4* | osf5*) -- case $cc_basename in -- KCC*) -- # Kuck and Associates, Inc. (KAI) C++ Compiler -- -- # KCC will only create a shared library if the output file -- # ends with ".so" (or ".sl" for HP-UX), so rename the library -- # to its proper name (with version) after linking. -- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' -- -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- -- # Archives containing C++ object files must be created using -- # the KAI C++ compiler. -- case $host in -- osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; -- *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; -- esac -- ;; -- RCC*) -- # Rational C++ 2.4.1 -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- cxx*) -- case $host in -- osf3*) -- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -- ;; -- *) -- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ -- echo "-hidden">> $lib.exp~ -- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ -- $RM $lib.exp' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -- ;; -- esac -- -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- -- # Commands to make compiler produce verbose output that lists -- # what "hidden" libraries, object files and flags are used when -- # linking a shared library. -- # -- # There doesn't appear to be a way to prevent this compiler from -- # explicitly linking system object files so we need to strip them -- # from the output so that they don't get included in the library -- # dependencies. -- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' -- ;; -- *) -- if test "$GXX" = yes && test "$with_gnu_ld" = no; then -- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -- case $host in -- osf3*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -- ;; -- *) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -- ;; -- esac -- -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=: -- -- # Commands to make compiler produce verbose output that lists -- # what "hidden" libraries, object files and flags are used when -- # linking a shared library. -- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' -- -- else -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -- esac -- ;; -- -- psos*) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- -- sunos4*) -- case $cc_basename in -- CC*) -- # Sun C++ 4.x -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- lcc*) -- # Lucid -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- *) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- esac -- ;; -- -- solaris*) -- case $cc_basename in -- CC*) -- # Sun C++ 4.2, 5.x and Centerline C++ -- _LT_TAGVAR(archive_cmds_need_lc,$1)=yes -- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' -- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' -- -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- case $host_os in -- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; -- *) -- # The compiler driver will combine and reorder linker options, -- # but understands `-z linker_flag'. -- # Supported since Solaris 2.6 (maybe 2.5.1?) -- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' -- ;; -- esac -- _LT_TAGVAR(link_all_deplibs, $1)=yes -- -- output_verbose_link_cmd='echo' -- -- # Archives containing C++ object files must be created using -- # "CC -xar", where "CC" is the Sun C++ compiler. This is -- # necessary to make sure instantiated templates are included -- # in the archive. -- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' -- ;; -- gcx*) -- # Green Hills C++ Compiler -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' -- -- # The C++ compiler must be used to create the archive. -- _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' -- ;; -- *) -- # GNU C++ compiler with Solaris linker -- if test "$GXX" = yes && test "$with_gnu_ld" = no; then -- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' -- if $CC --version | $GREP -v '^2\.7' > /dev/null; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' -- -- # Commands to make compiler produce verbose output that lists -- # what "hidden" libraries, object files and flags are used when -- # linking a shared library. -- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' -- else -- # g++ 2.7 appears to require `-G' NOT `-shared' on this -- # platform. -- _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' -- -- # Commands to make compiler produce verbose output that lists -- # what "hidden" libraries, object files and flags are used when -- # linking a shared library. -- output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' -- fi -- -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' -- case $host_os in -- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; -- *) -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' -- ;; -- esac -- fi -- ;; -- esac -- ;; -- -- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) -- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -- _LT_TAGVAR(archive_cmds_need_lc, $1)=no -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- runpath_var='LD_RUN_PATH' -- -- case $cc_basename in -- CC*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- ;; -- *) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- ;; -- esac -- ;; -- -- sysv5* | sco3.2v5* | sco5v6*) -- # Note: We can NOT use -z defs as we might desire, because we do not -- # link with -lc, and that would cause any symbols used from libc to -- # always be unresolved, which means just about no library would -- # ever link correctly. If we're not using GNU ld we use -z text -- # though, which does catch some bad symbols but isn't as heavy-handed -- # as -z defs. -- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' -- _LT_TAGVAR(archive_cmds_need_lc, $1)=no -- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' -- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' -- _LT_TAGVAR(link_all_deplibs, $1)=yes -- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' -- runpath_var='LD_RUN_PATH' -- -- case $cc_basename in -- CC*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- ;; -- *) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -- ;; -- esac -- ;; -- -- tandem*) -- case $cc_basename in -- NCC*) -- # NonStop-UX NCC 3.20 -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- *) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- esac -- ;; -- -- vxworks*) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- -- *) -- # FIXME: insert proper C++ library support -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- esac -- -- AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -- test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no -- -- _LT_TAGVAR(GCC, $1)="$GXX" -- _LT_TAGVAR(LD, $1)="$LD" -- -- ## CAVEAT EMPTOR: -- ## There is no encapsulation within the following macros, do not change -- ## the running order or otherwise move them around unless you know exactly -- ## what you are doing... -- _LT_SYS_HIDDEN_LIBDEPS($1) -- _LT_COMPILER_PIC($1) -- _LT_COMPILER_C_O($1) -- _LT_COMPILER_FILE_LOCKS($1) -- _LT_LINKER_SHLIBS($1) -- _LT_SYS_DYNAMIC_LINKER($1) -- _LT_LINKER_HARDCODE_LIBPATH($1) -- -- _LT_CONFIG($1) -- fi # test -n "$compiler" -- -- CC=$lt_save_CC -- LDCXX=$LD -- LD=$lt_save_LD -- GCC=$lt_save_GCC -- with_gnu_ld=$lt_save_with_gnu_ld -- lt_cv_path_LDCXX=$lt_cv_path_LD -- lt_cv_path_LD=$lt_save_path_LD -- lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld -- lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld --fi # test "$_lt_caught_CXX_error" != yes -- --AC_LANG_POP --])# _LT_LANG_CXX_CONFIG -- -- --# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) --# --------------------------------- --# Figure out "hidden" library dependencies from verbose --# compiler output when linking a shared library. --# Parse the compiler output and extract the necessary --# objects, libraries and library flags. --m4_defun([_LT_SYS_HIDDEN_LIBDEPS], --[m4_require([_LT_FILEUTILS_DEFAULTS])dnl --# Dependencies to place before and after the object being linked: --_LT_TAGVAR(predep_objects, $1)= --_LT_TAGVAR(postdep_objects, $1)= --_LT_TAGVAR(predeps, $1)= --_LT_TAGVAR(postdeps, $1)= --_LT_TAGVAR(compiler_lib_search_path, $1)= -- --dnl we can't use the lt_simple_compile_test_code here, --dnl because it contains code intended for an executable, --dnl not a library. It's possible we should let each --dnl tag define a new lt_????_link_test_code variable, --dnl but it's only used here... --m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF --int a; --void foo (void) { a = 0; } --_LT_EOF --], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF --class Foo --{ --public: -- Foo (void) { a = 0; } --private: -- int a; --}; --_LT_EOF --], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF -- subroutine foo -- implicit none -- integer*4 a -- a=0 -- return -- end --_LT_EOF --], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF -- subroutine foo -- implicit none -- integer a -- a=0 -- return -- end --_LT_EOF --], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF --public class foo { -- private int a; -- public void bar (void) { -- a = 0; -- } --}; --_LT_EOF --]) --dnl Parse the compiler output and extract the necessary --dnl objects, libraries and library flags. --if AC_TRY_EVAL(ac_compile); then -- # Parse the compiler output and extract the necessary -- # objects, libraries and library flags. -- -- # Sentinel used to keep track of whether or not we are before -- # the conftest object file. -- pre_test_object_deps_done=no -- -- for p in `eval "$output_verbose_link_cmd"`; do -- case $p in -- -- -L* | -R* | -l*) -- # Some compilers place space between "-{L,R}" and the path. -- # Remove the space. -- if test $p = "-L" || -- test $p = "-R"; then -- prev=$p -- continue -- else -- prev= -- fi -- -- if test "$pre_test_object_deps_done" = no; then -- case $p in -- -L* | -R*) -- # Internal compiler library paths should come after those -- # provided the user. The postdeps already come after the -- # user supplied libs so there is no need to process them. -- if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then -- _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" -- else -- _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" -- fi -- ;; -- # The "-l" case would never come before the object being -- # linked, so don't bother handling this case. -- esac -- else -- if test -z "$_LT_TAGVAR(postdeps, $1)"; then -- _LT_TAGVAR(postdeps, $1)="${prev}${p}" -- else -- _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" -- fi -- fi -- ;; -- -- *.$objext) -- # This assumes that the test object file only shows up -- # once in the compiler output. -- if test "$p" = "conftest.$objext"; then -- pre_test_object_deps_done=yes -- continue -- fi -- -- if test "$pre_test_object_deps_done" = no; then -- if test -z "$_LT_TAGVAR(predep_objects, $1)"; then -- _LT_TAGVAR(predep_objects, $1)="$p" -- else -- _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" -- fi -- else -- if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then -- _LT_TAGVAR(postdep_objects, $1)="$p" -- else -- _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" -- fi -- fi -- ;; -- -- *) ;; # Ignore the rest. -- -- esac -- done -- -- # Clean up. -- rm -f a.out a.exe --else -- echo "libtool.m4: error: problem compiling $1 test program" --fi -- --$RM -f confest.$objext -- --# PORTME: override above test on systems where it is broken --m4_if([$1], [CXX], --[case $host_os in --interix[[3-9]]*) -- # Interix 3.5 installs completely hosed .la files for C++, so rather than -- # hack all around it, let's just trust "g++" to DTRT. -- _LT_TAGVAR(predep_objects,$1)= -- _LT_TAGVAR(postdep_objects,$1)= -- _LT_TAGVAR(postdeps,$1)= -- ;; -- --linux*) -- case `$CC -V 2>&1 | sed 5q` in -- *Sun\ C*) -- # Sun C++ 5.9 -- -- # The more standards-conforming stlport4 library is -- # incompatible with the Cstd library. Avoid specifying -- # it if it's in CXXFLAGS. Ignore libCrun as -- # -library=stlport4 depends on it. -- case " $CXX $CXXFLAGS " in -- *" -library=stlport4 "*) -- solaris_use_stlport4=yes -- ;; -- esac -- -- if test "$solaris_use_stlport4" != yes; then -- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' -- fi -- ;; -- esac -- ;; -- --solaris*) -- case $cc_basename in -- CC*) -- # The more standards-conforming stlport4 library is -- # incompatible with the Cstd library. Avoid specifying -- # it if it's in CXXFLAGS. Ignore libCrun as -- # -library=stlport4 depends on it. -- case " $CXX $CXXFLAGS " in -- *" -library=stlport4 "*) -- solaris_use_stlport4=yes -- ;; -- esac -- -- # Adding this requires a known-good setup of shared libraries for -- # Sun compiler versions before 5.6, else PIC objects from an old -- # archive will be linked into the output, leading to subtle bugs. -- if test "$solaris_use_stlport4" != yes; then -- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' -- fi -- ;; -- esac -- ;; --esac --]) -- --case " $_LT_TAGVAR(postdeps, $1) " in --*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; --esac -- _LT_TAGVAR(compiler_lib_search_dirs, $1)= --if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then -- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` --fi --_LT_TAGDECL([], [compiler_lib_search_dirs], [1], -- [The directories searched by this compiler when creating a shared library]) --_LT_TAGDECL([], [predep_objects], [1], -- [Dependencies to place before and after the objects being linked to -- create a shared library]) --_LT_TAGDECL([], [postdep_objects], [1]) --_LT_TAGDECL([], [predeps], [1]) --_LT_TAGDECL([], [postdeps], [1]) --_LT_TAGDECL([], [compiler_lib_search_path], [1], -- [The library search path used internally by the compiler when linking -- a shared library]) --])# _LT_SYS_HIDDEN_LIBDEPS -- -- --# _LT_PROG_F77 --# ------------ --# Since AC_PROG_F77 is broken, in that it returns the empty string --# if there is no fortran compiler, we have our own version here. --m4_defun([_LT_PROG_F77], --[ --pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) --AC_PROG_F77 --if test -z "$F77" || test "X$F77" = "Xno"; then -- _lt_disable_F77=yes --fi --popdef([AC_MSG_ERROR]) --])# _LT_PROG_F77 -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([_LT_PROG_F77], []) -- -- --# _LT_LANG_F77_CONFIG([TAG]) --# -------------------------- --# Ensure that the configuration variables for a Fortran 77 compiler are --# suitably defined. These variables are subsequently used by _LT_CONFIG --# to write the compiler configuration to `libtool'. --m4_defun([_LT_LANG_F77_CONFIG], --[AC_REQUIRE([_LT_PROG_F77])dnl --AC_LANG_PUSH(Fortran 77) -- --_LT_TAGVAR(archive_cmds_need_lc, $1)=no --_LT_TAGVAR(allow_undefined_flag, $1)= --_LT_TAGVAR(always_export_symbols, $1)=no --_LT_TAGVAR(archive_expsym_cmds, $1)= --_LT_TAGVAR(export_dynamic_flag_spec, $1)= --_LT_TAGVAR(hardcode_direct, $1)=no --_LT_TAGVAR(hardcode_direct_absolute, $1)=no --_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= --_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= --_LT_TAGVAR(hardcode_libdir_separator, $1)= --_LT_TAGVAR(hardcode_minus_L, $1)=no --_LT_TAGVAR(hardcode_automatic, $1)=no --_LT_TAGVAR(inherit_rpath, $1)=no --_LT_TAGVAR(module_cmds, $1)= --_LT_TAGVAR(module_expsym_cmds, $1)= --_LT_TAGVAR(link_all_deplibs, $1)=unknown --_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds --_LT_TAGVAR(no_undefined_flag, $1)= --_LT_TAGVAR(whole_archive_flag_spec, $1)= --_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no -- --# Source file extension for f77 test sources. --ac_ext=f -- --# Object file extension for compiled f77 test sources. --objext=o --_LT_TAGVAR(objext, $1)=$objext -- --# No sense in running all these tests if we already determined that --# the F77 compiler isn't working. Some variables (like enable_shared) --# are currently assumed to apply to all compilers on this platform, --# and will be corrupted by setting them based on a non-working compiler. --if test "$_lt_disable_F77" != yes; then -- # Code to be used in simple compile tests -- lt_simple_compile_test_code="\ -- subroutine t -- return -- end --" -- -- # Code to be used in simple link tests -- lt_simple_link_test_code="\ -- program t -- end --" -- -- # ltmain only uses $CC for tagged configurations so make sure $CC is set. -- _LT_TAG_COMPILER -- -- # save warnings/boilerplate of simple test code -- _LT_COMPILER_BOILERPLATE -- _LT_LINKER_BOILERPLATE -- -- # Allow CC to be a program name with arguments. -- lt_save_CC="$CC" -- lt_save_GCC=$GCC -- CC=${F77-"f77"} -- compiler=$CC -- _LT_TAGVAR(compiler, $1)=$CC -- _LT_CC_BASENAME([$compiler]) -- GCC=$G77 -- if test -n "$compiler"; then -- AC_MSG_CHECKING([if libtool supports shared libraries]) -- AC_MSG_RESULT([$can_build_shared]) -- -- AC_MSG_CHECKING([whether to build shared libraries]) -- test "$can_build_shared" = "no" && enable_shared=no -- -- # On AIX, shared libraries and static libraries use the same namespace, and -- # are all built from PIC. -- case $host_os in -- aix3*) -- test "$enable_shared" = yes && enable_static=no -- if test -n "$RANLIB"; then -- archive_cmds="$archive_cmds~\$RANLIB \$lib" -- postinstall_cmds='$RANLIB $lib' -- fi -- ;; -- aix[[4-9]]*) -- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then -- test "$enable_shared" = yes && enable_static=no -- fi -- ;; -- esac -- AC_MSG_RESULT([$enable_shared]) -- -- AC_MSG_CHECKING([whether to build static libraries]) -- # Make sure either enable_shared or enable_static is yes. -- test "$enable_shared" = yes || enable_static=yes -- AC_MSG_RESULT([$enable_static]) -- -- _LT_TAGVAR(GCC, $1)="$G77" -- _LT_TAGVAR(LD, $1)="$LD" -- -- ## CAVEAT EMPTOR: -- ## There is no encapsulation within the following macros, do not change -- ## the running order or otherwise move them around unless you know exactly -- ## what you are doing... -- _LT_COMPILER_PIC($1) -- _LT_COMPILER_C_O($1) -- _LT_COMPILER_FILE_LOCKS($1) -- _LT_LINKER_SHLIBS($1) -- _LT_SYS_DYNAMIC_LINKER($1) -- _LT_LINKER_HARDCODE_LIBPATH($1) -- -- _LT_CONFIG($1) -- fi # test -n "$compiler" -- -- GCC=$lt_save_GCC -- CC="$lt_save_CC" --fi # test "$_lt_disable_F77" != yes -- --AC_LANG_POP --])# _LT_LANG_F77_CONFIG -- -- --# _LT_PROG_FC --# ----------- --# Since AC_PROG_FC is broken, in that it returns the empty string --# if there is no fortran compiler, we have our own version here. --m4_defun([_LT_PROG_FC], --[ --pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) --AC_PROG_FC --if test -z "$FC" || test "X$FC" = "Xno"; then -- _lt_disable_FC=yes --fi --popdef([AC_MSG_ERROR]) --])# _LT_PROG_FC -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([_LT_PROG_FC], []) -- -- --# _LT_LANG_FC_CONFIG([TAG]) --# ------------------------- --# Ensure that the configuration variables for a Fortran compiler are --# suitably defined. These variables are subsequently used by _LT_CONFIG --# to write the compiler configuration to `libtool'. --m4_defun([_LT_LANG_FC_CONFIG], --[AC_REQUIRE([_LT_PROG_FC])dnl --AC_LANG_PUSH(Fortran) -- --_LT_TAGVAR(archive_cmds_need_lc, $1)=no --_LT_TAGVAR(allow_undefined_flag, $1)= --_LT_TAGVAR(always_export_symbols, $1)=no --_LT_TAGVAR(archive_expsym_cmds, $1)= --_LT_TAGVAR(export_dynamic_flag_spec, $1)= --_LT_TAGVAR(hardcode_direct, $1)=no --_LT_TAGVAR(hardcode_direct_absolute, $1)=no --_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= --_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= --_LT_TAGVAR(hardcode_libdir_separator, $1)= --_LT_TAGVAR(hardcode_minus_L, $1)=no --_LT_TAGVAR(hardcode_automatic, $1)=no --_LT_TAGVAR(inherit_rpath, $1)=no --_LT_TAGVAR(module_cmds, $1)= --_LT_TAGVAR(module_expsym_cmds, $1)= --_LT_TAGVAR(link_all_deplibs, $1)=unknown --_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds --_LT_TAGVAR(no_undefined_flag, $1)= --_LT_TAGVAR(whole_archive_flag_spec, $1)= --_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no -- --# Source file extension for fc test sources. --ac_ext=${ac_fc_srcext-f} -- --# Object file extension for compiled fc test sources. --objext=o --_LT_TAGVAR(objext, $1)=$objext -- --# No sense in running all these tests if we already determined that --# the FC compiler isn't working. Some variables (like enable_shared) --# are currently assumed to apply to all compilers on this platform, --# and will be corrupted by setting them based on a non-working compiler. --if test "$_lt_disable_FC" != yes; then -- # Code to be used in simple compile tests -- lt_simple_compile_test_code="\ -- subroutine t -- return -- end --" -- -- # Code to be used in simple link tests -- lt_simple_link_test_code="\ -- program t -- end --" -- -- # ltmain only uses $CC for tagged configurations so make sure $CC is set. -- _LT_TAG_COMPILER -- -- # save warnings/boilerplate of simple test code -- _LT_COMPILER_BOILERPLATE -- _LT_LINKER_BOILERPLATE -- -- # Allow CC to be a program name with arguments. -- lt_save_CC="$CC" -- lt_save_GCC=$GCC -- CC=${FC-"f95"} -- compiler=$CC -- GCC=$ac_cv_fc_compiler_gnu -- -- _LT_TAGVAR(compiler, $1)=$CC -- _LT_CC_BASENAME([$compiler]) -- -- if test -n "$compiler"; then -- AC_MSG_CHECKING([if libtool supports shared libraries]) -- AC_MSG_RESULT([$can_build_shared]) -- -- AC_MSG_CHECKING([whether to build shared libraries]) -- test "$can_build_shared" = "no" && enable_shared=no -- -- # On AIX, shared libraries and static libraries use the same namespace, and -- # are all built from PIC. -- case $host_os in -- aix3*) -- test "$enable_shared" = yes && enable_static=no -- if test -n "$RANLIB"; then -- archive_cmds="$archive_cmds~\$RANLIB \$lib" -- postinstall_cmds='$RANLIB $lib' -- fi -- ;; -- aix[[4-9]]*) -- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then -- test "$enable_shared" = yes && enable_static=no -- fi -- ;; -- esac -- AC_MSG_RESULT([$enable_shared]) -- -- AC_MSG_CHECKING([whether to build static libraries]) -- # Make sure either enable_shared or enable_static is yes. -- test "$enable_shared" = yes || enable_static=yes -- AC_MSG_RESULT([$enable_static]) -- -- _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" -- _LT_TAGVAR(LD, $1)="$LD" -- -- ## CAVEAT EMPTOR: -- ## There is no encapsulation within the following macros, do not change -- ## the running order or otherwise move them around unless you know exactly -- ## what you are doing... -- _LT_SYS_HIDDEN_LIBDEPS($1) -- _LT_COMPILER_PIC($1) -- _LT_COMPILER_C_O($1) -- _LT_COMPILER_FILE_LOCKS($1) -- _LT_LINKER_SHLIBS($1) -- _LT_SYS_DYNAMIC_LINKER($1) -- _LT_LINKER_HARDCODE_LIBPATH($1) -- -- _LT_CONFIG($1) -- fi # test -n "$compiler" -- -- GCC=$lt_save_GCC -- CC="$lt_save_CC" --fi # test "$_lt_disable_FC" != yes -- --AC_LANG_POP --])# _LT_LANG_FC_CONFIG -- -- --# _LT_LANG_GCJ_CONFIG([TAG]) --# -------------------------- --# Ensure that the configuration variables for the GNU Java Compiler compiler --# are suitably defined. These variables are subsequently used by _LT_CONFIG --# to write the compiler configuration to `libtool'. --m4_defun([_LT_LANG_GCJ_CONFIG], --[AC_REQUIRE([LT_PROG_GCJ])dnl --AC_LANG_SAVE -- --# Source file extension for Java test sources. --ac_ext=java -- --# Object file extension for compiled Java test sources. --objext=o --_LT_TAGVAR(objext, $1)=$objext -- --# Code to be used in simple compile tests --lt_simple_compile_test_code="class foo {}" -- --# Code to be used in simple link tests --lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' -- --# ltmain only uses $CC for tagged configurations so make sure $CC is set. --_LT_TAG_COMPILER -- --# save warnings/boilerplate of simple test code --_LT_COMPILER_BOILERPLATE --_LT_LINKER_BOILERPLATE -- --# Allow CC to be a program name with arguments. --lt_save_CC="$CC" --lt_save_GCC=$GCC --GCC=yes --CC=${GCJ-"gcj"} --compiler=$CC --_LT_TAGVAR(compiler, $1)=$CC --_LT_TAGVAR(LD, $1)="$LD" --_LT_CC_BASENAME([$compiler]) -- --# GCJ did not exist at the time GCC didn't implicitly link libc in. --_LT_TAGVAR(archive_cmds_need_lc, $1)=no -- --_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -- --if test -n "$compiler"; then -- _LT_COMPILER_NO_RTTI($1) -- _LT_COMPILER_PIC($1) -- _LT_COMPILER_C_O($1) -- _LT_COMPILER_FILE_LOCKS($1) -- _LT_LINKER_SHLIBS($1) -- _LT_LINKER_HARDCODE_LIBPATH($1) -- -- _LT_CONFIG($1) --fi -- --AC_LANG_RESTORE -- --GCC=$lt_save_GCC --CC="$lt_save_CC" --])# _LT_LANG_GCJ_CONFIG -- -- --# _LT_LANG_RC_CONFIG([TAG]) --# ------------------------- --# Ensure that the configuration variables for the Windows resource compiler --# are suitably defined. These variables are subsequently used by _LT_CONFIG --# to write the compiler configuration to `libtool'. --m4_defun([_LT_LANG_RC_CONFIG], --[AC_REQUIRE([LT_PROG_RC])dnl --AC_LANG_SAVE -- --# Source file extension for RC test sources. --ac_ext=rc -- --# Object file extension for compiled RC test sources. --objext=o --_LT_TAGVAR(objext, $1)=$objext -- --# Code to be used in simple compile tests --lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' -- --# Code to be used in simple link tests --lt_simple_link_test_code="$lt_simple_compile_test_code" -- --# ltmain only uses $CC for tagged configurations so make sure $CC is set. --_LT_TAG_COMPILER -- --# save warnings/boilerplate of simple test code --_LT_COMPILER_BOILERPLATE --_LT_LINKER_BOILERPLATE -- --# Allow CC to be a program name with arguments. --lt_save_CC="$CC" --lt_save_GCC=$GCC --GCC= --CC=${RC-"windres"} --compiler=$CC --_LT_TAGVAR(compiler, $1)=$CC --_LT_CC_BASENAME([$compiler]) --_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes -- --if test -n "$compiler"; then -- : -- _LT_CONFIG($1) --fi -- --GCC=$lt_save_GCC --AC_LANG_RESTORE --CC="$lt_save_CC" --])# _LT_LANG_RC_CONFIG -- -- --# LT_PROG_GCJ --# ----------- --AC_DEFUN([LT_PROG_GCJ], --[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], -- [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], -- [AC_CHECK_TOOL(GCJ, gcj,) -- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" -- AC_SUBST(GCJFLAGS)])])[]dnl --]) -- --# Old name: --AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([LT_AC_PROG_GCJ], []) -- -- --# LT_PROG_RC --# ---------- --AC_DEFUN([LT_PROG_RC], --[AC_CHECK_TOOL(RC, windres,) --]) -- --# Old name: --AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([LT_AC_PROG_RC], []) -- -- --# _LT_DECL_EGREP --# -------------- --# If we don't have a new enough Autoconf to choose the best grep --# available, choose the one first in the user's PATH. --m4_defun([_LT_DECL_EGREP], --[AC_REQUIRE([AC_PROG_EGREP])dnl --AC_REQUIRE([AC_PROG_FGREP])dnl --test -z "$GREP" && GREP=grep --_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) --_LT_DECL([], [EGREP], [1], [An ERE matcher]) --_LT_DECL([], [FGREP], [1], [A literal string matcher]) --dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too --AC_SUBST([GREP]) --]) -- -- --# _LT_DECL_OBJDUMP --# -------------- --# If we don't have a new enough Autoconf to choose the best objdump --# available, choose the one first in the user's PATH. --m4_defun([_LT_DECL_OBJDUMP], --[AC_CHECK_TOOL(OBJDUMP, objdump, false) --test -z "$OBJDUMP" && OBJDUMP=objdump --_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) --AC_SUBST([OBJDUMP]) --]) -- -- --# _LT_DECL_SED --# ------------ --# Check for a fully-functional sed program, that truncates --# as few characters as possible. Prefer GNU sed if found. --m4_defun([_LT_DECL_SED], --[AC_PROG_SED --test -z "$SED" && SED=sed --Xsed="$SED -e 1s/^X//" --_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) --_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], -- [Sed that helps us avoid accidentally triggering echo(1) options like -n]) --])# _LT_DECL_SED -- --m4_ifndef([AC_PROG_SED], [ --# NOTE: This macro has been submitted for inclusion into # --# GNU Autoconf as AC_PROG_SED. When it is available in # --# a released version of Autoconf we should remove this # --# macro and use it instead. # -- --m4_defun([AC_PROG_SED], --[AC_MSG_CHECKING([for a sed that does not truncate output]) --AC_CACHE_VAL(lt_cv_path_SED, --[# Loop through the user's path and test for sed and gsed. --# Then use that list of sed's as ones to test for truncation. --as_save_IFS=$IFS; IFS=$PATH_SEPARATOR --for as_dir in $PATH --do -- IFS=$as_save_IFS -- test -z "$as_dir" && as_dir=. -- for lt_ac_prog in sed gsed; do -- for ac_exec_ext in '' $ac_executable_extensions; do -- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then -- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" -- fi -- done -- done --done --IFS=$as_save_IFS --lt_ac_max=0 --lt_ac_count=0 --# Add /usr/xpg4/bin/sed as it is typically found on Solaris --# along with /bin/sed that truncates output. --for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do -- test ! -f $lt_ac_sed && continue -- cat /dev/null > conftest.in -- lt_ac_count=0 -- echo $ECHO_N "0123456789$ECHO_C" >conftest.in -- # Check for GNU sed and select it if it is found. -- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then -- lt_cv_path_SED=$lt_ac_sed -- break -- fi -- while true; do -- cat conftest.in conftest.in >conftest.tmp -- mv conftest.tmp conftest.in -- cp conftest.in conftest.nl -- echo >>conftest.nl -- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break -- cmp -s conftest.out conftest.nl || break -- # 10000 chars as input seems more than enough -- test $lt_ac_count -gt 10 && break -- lt_ac_count=`expr $lt_ac_count + 1` -- if test $lt_ac_count -gt $lt_ac_max; then -- lt_ac_max=$lt_ac_count -- lt_cv_path_SED=$lt_ac_sed -- fi -- done --done --]) --SED=$lt_cv_path_SED --AC_SUBST([SED]) --AC_MSG_RESULT([$SED]) --])#AC_PROG_SED --])#m4_ifndef -- --# Old name: --AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([LT_AC_PROG_SED], []) -- -- --# _LT_CHECK_SHELL_FEATURES --# ------------------------ --# Find out whether the shell is Bourne or XSI compatible, --# or has some other useful features. --m4_defun([_LT_CHECK_SHELL_FEATURES], --[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) --# Try some XSI features --xsi_shell=no --( _lt_dummy="a/b/c" -- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ -- = c,a/b,, \ -- && eval 'test $(( 1 + 1 )) -eq 2 \ -- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ -- && xsi_shell=yes --AC_MSG_RESULT([$xsi_shell]) --_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) -- --AC_MSG_CHECKING([whether the shell understands "+="]) --lt_shell_append=no --( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ -- >/dev/null 2>&1 \ -- && lt_shell_append=yes --AC_MSG_RESULT([$lt_shell_append]) --_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) -- --if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -- lt_unset=unset --else -- lt_unset=false --fi --_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl -- --# test EBCDIC or ASCII --case `echo X|tr X '\101'` in -- A) # ASCII based system -- # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr -- lt_SP2NL='tr \040 \012' -- lt_NL2SP='tr \015\012 \040\040' -- ;; -- *) # EBCDIC based system -- lt_SP2NL='tr \100 \n' -- lt_NL2SP='tr \r\n \100\100' -- ;; --esac --_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl --_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl --])# _LT_CHECK_SHELL_FEATURES -- -- --# _LT_PROG_XSI_SHELLFNS --# --------------------- --# Bourne and XSI compatible variants of some useful shell functions. --m4_defun([_LT_PROG_XSI_SHELLFNS], --[case $xsi_shell in -- yes) -- cat << \_LT_EOF >> "$cfgfile" -- --# func_dirname file append nondir_replacement --# Compute the dirname of FILE. If nonempty, add APPEND to the result, --# otherwise set result to NONDIR_REPLACEMENT. --func_dirname () --{ -- case ${1} in -- */*) func_dirname_result="${1%/*}${2}" ;; -- * ) func_dirname_result="${3}" ;; -- esac --} -- --# func_basename file --func_basename () --{ -- func_basename_result="${1##*/}" --} -- --# func_dirname_and_basename file append nondir_replacement --# perform func_basename and func_dirname in a single function --# call: --# dirname: Compute the dirname of FILE. If nonempty, --# add APPEND to the result, otherwise set result --# to NONDIR_REPLACEMENT. --# value returned in "$func_dirname_result" --# basename: Compute filename of FILE. --# value retuned in "$func_basename_result" --# Implementation must be kept synchronized with func_dirname --# and func_basename. For efficiency, we do not delegate to --# those functions but instead duplicate the functionality here. --func_dirname_and_basename () --{ -- case ${1} in -- */*) func_dirname_result="${1%/*}${2}" ;; -- * ) func_dirname_result="${3}" ;; -- esac -- func_basename_result="${1##*/}" --} -- --# func_stripname prefix suffix name --# strip PREFIX and SUFFIX off of NAME. --# PREFIX and SUFFIX must not contain globbing or regex special --# characters, hashes, percent signs, but SUFFIX may contain a leading --# dot (in which case that matches only a dot). --func_stripname () --{ -- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are -- # positional parameters, so assign one to ordinary parameter first. -- func_stripname_result=${3} -- func_stripname_result=${func_stripname_result#"${1}"} -- func_stripname_result=${func_stripname_result%"${2}"} --} -- --# func_opt_split --func_opt_split () --{ -- func_opt_split_opt=${1%%=*} -- func_opt_split_arg=${1#*=} --} -- --# func_lo2o object --func_lo2o () --{ -- case ${1} in -- *.lo) func_lo2o_result=${1%.lo}.${objext} ;; -- *) func_lo2o_result=${1} ;; -- esac --} -- --# func_xform libobj-or-source --func_xform () --{ -- func_xform_result=${1%.*}.lo --} -- --# func_arith arithmetic-term... --func_arith () --{ -- func_arith_result=$(( $[*] )) --} -- --# func_len string --# STRING may not start with a hyphen. --func_len () --{ -- func_len_result=${#1} --} -- --_LT_EOF -- ;; -- *) # Bourne compatible functions. -- cat << \_LT_EOF >> "$cfgfile" -- --# func_dirname file append nondir_replacement --# Compute the dirname of FILE. If nonempty, add APPEND to the result, --# otherwise set result to NONDIR_REPLACEMENT. --func_dirname () --{ -- # Extract subdirectory from the argument. -- func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` -- if test "X$func_dirname_result" = "X${1}"; then -- func_dirname_result="${3}" -- else -- func_dirname_result="$func_dirname_result${2}" -- fi --} -- --# func_basename file --func_basename () --{ -- func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` --} -- --dnl func_dirname_and_basename --dnl A portable version of this function is already defined in general.m4sh --dnl so there is no need for it here. -- --# func_stripname prefix suffix name --# strip PREFIX and SUFFIX off of NAME. --# PREFIX and SUFFIX must not contain globbing or regex special --# characters, hashes, percent signs, but SUFFIX may contain a leading --# dot (in which case that matches only a dot). --# func_strip_suffix prefix name --func_stripname () --{ -- case ${2} in -- .*) func_stripname_result=`$ECHO "X${3}" \ -- | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; -- *) func_stripname_result=`$ECHO "X${3}" \ -- | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; -- esac --} -- --# sed scripts: --my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' --my_sed_long_arg='1s/^-[[^=]]*=//' -- --# func_opt_split --func_opt_split () --{ -- func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` -- func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` --} -- --# func_lo2o object --func_lo2o () --{ -- func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` --} -- --# func_xform libobj-or-source --func_xform () --{ -- func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` --} -- --# func_arith arithmetic-term... --func_arith () --{ -- func_arith_result=`expr "$[@]"` --} -- --# func_len string --# STRING may not start with a hyphen. --func_len () --{ -- func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` --} -- --_LT_EOF --esac -- --case $lt_shell_append in -- yes) -- cat << \_LT_EOF >> "$cfgfile" -- --# func_append var value --# Append VALUE to the end of shell variable VAR. --func_append () --{ -- eval "$[1]+=\$[2]" --} --_LT_EOF -- ;; -- *) -- cat << \_LT_EOF >> "$cfgfile" -- --# func_append var value --# Append VALUE to the end of shell variable VAR. --func_append () --{ -- eval "$[1]=\$$[1]\$[2]" --} -- --_LT_EOF -- ;; -- esac --]) -+To do so, use the procedure documented by the package, typically 'autoreconf'.])]) - - # ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*- - # --# Copyright (C) 1999-2006, 2007, 2008 Free Software Foundation, Inc. -+# Copyright (C) 1999-2006, 2007, 2008, 2011 Free Software Foundation, Inc. - # Written by Thomas Tanner, 1999 - # - # This file is free software; the Free Software Foundation gives - # unlimited permission to copy and/or distribute it, with or without - # modifications, as long as this notice is preserved. - --# serial 17 LTDL_INIT -+# serial 18 LTDL_INIT - - # LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE]) - # ------------------------------------------ - # DIRECTORY contains the libltdl sources. It is okay to call this - # function multiple times, as long as the same DIRECTORY is always given. - AC_DEFUN([LT_CONFIG_LTDL_DIR], - [AC_BEFORE([$0], [LTDL_INIT]) - _$0($*) -@@ -7774,20 +424,26 @@ m4_ifset([AH_HEADER], - AC_SUBST([LT_CONFIG_H]) - - AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], - [], [], [AC_INCLUDES_DEFAULT]) - - AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) - AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) - -+m4_pattern_allow([LT_LIBEXT])dnl - AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) - -+name= -+eval "lt_libprefix=\"$libname_spec\"" -+m4_pattern_allow([LT_LIBPREFIX])dnl -+AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix]) -+ - name=ltdl --LTDLOPEN=`eval "\\$ECHO \"$libname_spec\""` -+eval "LTDLOPEN=\"$libname_spec\"" - AC_SUBST([LTDLOPEN]) - ])# _LTDL_SETUP - - - # _LT_ENABLE_INSTALL - # ------------------ - m4_define([_LT_ENABLE_INSTALL], - [AC_ARG_ENABLE([ltdl-install], -@@ -7834,17 +490,17 @@ AC_CACHE_CHECK([whether deplibs are load - darwin*) - # Assuming the user has installed a libdl from somewhere, this is true - # If you are looking for one http://www.opendarwin.org/projects/dlcompat - lt_cv_sys_dlopen_deplibs=yes - ;; - freebsd* | dragonfly*) - lt_cv_sys_dlopen_deplibs=yes - ;; -- gnu* | linux* | k*bsd*-gnu) -+ gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu) - # GNU and its variants, using gnu ld.so (Glibc) - lt_cv_sys_dlopen_deplibs=yes - ;; - hpux10*|hpux11*) - lt_cv_sys_dlopen_deplibs=yes - ;; - interix*) - lt_cv_sys_dlopen_deplibs=yes -@@ -7914,22 +570,29 @@ dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS - # ----------------- - AC_DEFUN([LT_SYS_MODULE_EXT], - [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl - AC_CACHE_CHECK([which extension is used for runtime loadable modules], - [libltdl_cv_shlibext], - [ - module=yes - eval libltdl_cv_shlibext=$shrext_cmds -+module=no -+eval libltdl_cv_shrext=$shrext_cmds - ]) - if test -n "$libltdl_cv_shlibext"; then - m4_pattern_allow([LT_MODULE_EXT])dnl - AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], - [Define to the extension used for runtime loadable modules, say, ".so".]) - fi -+if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then -+ m4_pattern_allow([LT_SHARED_EXT])dnl -+ AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"], -+ [Define to the shared library suffix, say, ".dylib".]) -+fi - ])# LT_SYS_MODULE_EXT - - # Old name: - AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT]) - dnl aclocal-1.4 backwards compatibility: - dnl AC_DEFUN([AC_LTDL_SHLIBEXT], []) - - -@@ -8170,689 +833,83 @@ if test x"$libltdl_cv_need_uscore" = xye - fi - ])# LT_FUNC_DLSYM_USCORE - - # Old name: - AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE]) - dnl aclocal-1.4 backwards compatibility: - dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], []) - --# Helper functions for option handling. -*- Autoconf -*- --# --# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. --# Written by Gary V. Vaughan, 2004 --# --# This file is free software; the Free Software Foundation gives --# unlimited permission to copy and/or distribute it, with or without --# modifications, as long as this notice is preserved. -- --# serial 6 ltoptions.m4 -- --# This is to help aclocal find these macros, as it can't see m4_define. --AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) -- -- --# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) --# ------------------------------------------ --m4_define([_LT_MANGLE_OPTION], --[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) -- -- --# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) --# --------------------------------------- --# Set option OPTION-NAME for macro MACRO-NAME, and if there is a --# matching handler defined, dispatch to it. Other OPTION-NAMEs are --# saved as a flag. --m4_define([_LT_SET_OPTION], --[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl --m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), -- _LT_MANGLE_DEFUN([$1], [$2]), -- [m4_warning([Unknown $1 option `$2'])])[]dnl --]) -- -- --# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) --# ------------------------------------------------------------ --# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. --m4_define([_LT_IF_OPTION], --[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) -- -- --# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) --# ------------------------------------------------------- --# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME --# are set. --m4_define([_LT_UNLESS_OPTIONS], --[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), -- [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), -- [m4_define([$0_found])])])[]dnl --m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 --])[]dnl --]) -- -- --# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) --# ---------------------------------------- --# OPTION-LIST is a space-separated list of Libtool options associated --# with MACRO-NAME. If any OPTION has a matching handler declared with --# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about --# the unknown option and exit. --m4_defun([_LT_SET_OPTIONS], --[# Set options --m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), -- [_LT_SET_OPTION([$1], _LT_Option)]) -- --m4_if([$1],[LT_INIT],[ -- dnl -- dnl Simply set some default values (i.e off) if boolean options were not -- dnl specified: -- _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no -- ]) -- _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no -- ]) -- dnl -- dnl If no reference was made to various pairs of opposing options, then -- dnl we run the default mode handler for the pair. For example, if neither -- dnl `shared' nor `disable-shared' was passed, we enable building of shared -- dnl archives by default: -- _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) -- _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) -- _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) -- _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], -- [_LT_ENABLE_FAST_INSTALL]) -- ]) --])# _LT_SET_OPTIONS -- -- -- --# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) --# ----------------------------------------- --m4_define([_LT_MANGLE_DEFUN], --[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) -- -- --# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) --# ----------------------------------------------- --m4_define([LT_OPTION_DEFINE], --[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl --])# LT_OPTION_DEFINE -- -- --# dlopen --# ------ --LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes --]) -- --AU_DEFUN([AC_LIBTOOL_DLOPEN], --[_LT_SET_OPTION([LT_INIT], [dlopen]) --AC_DIAGNOSE([obsolete], --[$0: Remove this warning and the call to _LT_SET_OPTION when you --put the `dlopen' option into LT_INIT's first parameter.]) --]) -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) -- -- --# win32-dll --# --------- --# Declare package support for building win32 dll's. --LT_OPTION_DEFINE([LT_INIT], [win32-dll], --[enable_win32_dll=yes -- --case $host in --*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) -- AC_CHECK_TOOL(AS, as, false) -- AC_CHECK_TOOL(DLLTOOL, dlltool, false) -- AC_CHECK_TOOL(OBJDUMP, objdump, false) -- ;; --esac -- --test -z "$AS" && AS=as --_LT_DECL([], [AS], [0], [Assembler program])dnl -- --test -z "$DLLTOOL" && DLLTOOL=dlltool --_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl -- --test -z "$OBJDUMP" && OBJDUMP=objdump --_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl --])# win32-dll -- --AU_DEFUN([AC_LIBTOOL_WIN32_DLL], --[AC_REQUIRE([AC_CANONICAL_HOST])dnl --_LT_SET_OPTION([LT_INIT], [win32-dll]) --AC_DIAGNOSE([obsolete], --[$0: Remove this warning and the call to _LT_SET_OPTION when you --put the `win32-dll' option into LT_INIT's first parameter.]) --]) -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) -- -- --# _LT_ENABLE_SHARED([DEFAULT]) --# ---------------------------- --# implement the --enable-shared flag, and supports the `shared' and --# `disable-shared' LT_INIT options. --# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. --m4_define([_LT_ENABLE_SHARED], --[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl --AC_ARG_ENABLE([shared], -- [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], -- [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], -- [p=${PACKAGE-default} -- case $enableval in -- yes) enable_shared=yes ;; -- no) enable_shared=no ;; -- *) -- enable_shared=no -- # Look at the argument we got. We use all the common list separators. -- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -- for pkg in $enableval; do -- IFS="$lt_save_ifs" -- if test "X$pkg" = "X$p"; then -- enable_shared=yes -- fi -- done -- IFS="$lt_save_ifs" -- ;; -- esac], -- [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) -- -- _LT_DECL([build_libtool_libs], [enable_shared], [0], -- [Whether or not to build shared libraries]) --])# _LT_ENABLE_SHARED -- --LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) --LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) -- --# Old names: --AC_DEFUN([AC_ENABLE_SHARED], --[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) --]) -- --AC_DEFUN([AC_DISABLE_SHARED], --[_LT_SET_OPTION([LT_INIT], [disable-shared]) --]) -- --AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) --AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AM_ENABLE_SHARED], []) --dnl AC_DEFUN([AM_DISABLE_SHARED], []) -- -- -- --# _LT_ENABLE_STATIC([DEFAULT]) --# ---------------------------- --# implement the --enable-static flag, and support the `static' and --# `disable-static' LT_INIT options. --# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. --m4_define([_LT_ENABLE_STATIC], --[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl --AC_ARG_ENABLE([static], -- [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], -- [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], -- [p=${PACKAGE-default} -- case $enableval in -- yes) enable_static=yes ;; -- no) enable_static=no ;; -- *) -- enable_static=no -- # Look at the argument we got. We use all the common list separators. -- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -- for pkg in $enableval; do -- IFS="$lt_save_ifs" -- if test "X$pkg" = "X$p"; then -- enable_static=yes -- fi -- done -- IFS="$lt_save_ifs" -- ;; -- esac], -- [enable_static=]_LT_ENABLE_STATIC_DEFAULT) -- -- _LT_DECL([build_old_libs], [enable_static], [0], -- [Whether or not to build static libraries]) --])# _LT_ENABLE_STATIC -- --LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) --LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) -- --# Old names: --AC_DEFUN([AC_ENABLE_STATIC], --[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) --]) -- --AC_DEFUN([AC_DISABLE_STATIC], --[_LT_SET_OPTION([LT_INIT], [disable-static]) --]) -- --AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) --AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AM_ENABLE_STATIC], []) --dnl AC_DEFUN([AM_DISABLE_STATIC], []) -- -- -- --# _LT_ENABLE_FAST_INSTALL([DEFAULT]) --# ---------------------------------- --# implement the --enable-fast-install flag, and support the `fast-install' --# and `disable-fast-install' LT_INIT options. --# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. --m4_define([_LT_ENABLE_FAST_INSTALL], --[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl --AC_ARG_ENABLE([fast-install], -- [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], -- [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], -- [p=${PACKAGE-default} -- case $enableval in -- yes) enable_fast_install=yes ;; -- no) enable_fast_install=no ;; -- *) -- enable_fast_install=no -- # Look at the argument we got. We use all the common list separators. -- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -- for pkg in $enableval; do -- IFS="$lt_save_ifs" -- if test "X$pkg" = "X$p"; then -- enable_fast_install=yes -- fi -- done -- IFS="$lt_save_ifs" -- ;; -- esac], -- [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) -- --_LT_DECL([fast_install], [enable_fast_install], [0], -- [Whether or not to optimize for fast installation])dnl --])# _LT_ENABLE_FAST_INSTALL -- --LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) --LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) -- --# Old names: --AU_DEFUN([AC_ENABLE_FAST_INSTALL], --[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) --AC_DIAGNOSE([obsolete], --[$0: Remove this warning and the call to _LT_SET_OPTION when you put --the `fast-install' option into LT_INIT's first parameter.]) --]) -- --AU_DEFUN([AC_DISABLE_FAST_INSTALL], --[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) --AC_DIAGNOSE([obsolete], --[$0: Remove this warning and the call to _LT_SET_OPTION when you put --the `disable-fast-install' option into LT_INIT's first parameter.]) --]) -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) --dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) -- -- --# _LT_WITH_PIC([MODE]) --# -------------------- --# implement the --with-pic flag, and support the `pic-only' and `no-pic' --# LT_INIT options. --# MODE is either `yes' or `no'. If omitted, it defaults to `both'. --m4_define([_LT_WITH_PIC], --[AC_ARG_WITH([pic], -- [AS_HELP_STRING([--with-pic], -- [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], -- [pic_mode="$withval"], -- [pic_mode=default]) -- --test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) -- --_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl --])# _LT_WITH_PIC -- --LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) --LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) -- --# Old name: --AU_DEFUN([AC_LIBTOOL_PICMODE], --[_LT_SET_OPTION([LT_INIT], [pic-only]) --AC_DIAGNOSE([obsolete], --[$0: Remove this warning and the call to _LT_SET_OPTION when you --put the `pic-only' option into LT_INIT's first parameter.]) --]) -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) -- -- --m4_define([_LTDL_MODE], []) --LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], -- [m4_define([_LTDL_MODE], [nonrecursive])]) --LT_OPTION_DEFINE([LTDL_INIT], [recursive], -- [m4_define([_LTDL_MODE], [recursive])]) --LT_OPTION_DEFINE([LTDL_INIT], [subproject], -- [m4_define([_LTDL_MODE], [subproject])]) -- --m4_define([_LTDL_TYPE], []) --LT_OPTION_DEFINE([LTDL_INIT], [installable], -- [m4_define([_LTDL_TYPE], [installable])]) --LT_OPTION_DEFINE([LTDL_INIT], [convenience], -- [m4_define([_LTDL_TYPE], [convenience])]) -- --# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- --# --# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. --# Written by Gary V. Vaughan, 2004 --# --# This file is free software; the Free Software Foundation gives --# unlimited permission to copy and/or distribute it, with or without --# modifications, as long as this notice is preserved. -- --# serial 6 ltsugar.m4 -- --# This is to help aclocal find these macros, as it can't see m4_define. --AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) -- -- --# lt_join(SEP, ARG1, [ARG2...]) --# ----------------------------- --# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their --# associated separator. --# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier --# versions in m4sugar had bugs. --m4_define([lt_join], --[m4_if([$#], [1], [], -- [$#], [2], [[$2]], -- [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) --m4_define([_lt_join], --[m4_if([$#$2], [2], [], -- [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) -- -- --# lt_car(LIST) --# lt_cdr(LIST) --# ------------ --# Manipulate m4 lists. --# These macros are necessary as long as will still need to support --# Autoconf-2.59 which quotes differently. --m4_define([lt_car], [[$1]]) --m4_define([lt_cdr], --[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], -- [$#], 1, [], -- [m4_dquote(m4_shift($@))])]) --m4_define([lt_unquote], $1) -- -- --# lt_append(MACRO-NAME, STRING, [SEPARATOR]) --# ------------------------------------------ --# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. --# Note that neither SEPARATOR nor STRING are expanded; they are appended --# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). --# No SEPARATOR is output if MACRO-NAME was previously undefined (different --# than defined and empty). --# --# This macro is needed until we can rely on Autoconf 2.62, since earlier --# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. --m4_define([lt_append], --[m4_define([$1], -- m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) -- -- -- --# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) --# ---------------------------------------------------------- --# Produce a SEP delimited list of all paired combinations of elements of --# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list --# has the form PREFIXmINFIXSUFFIXn. --# Needed until we can rely on m4_combine added in Autoconf 2.62. --m4_define([lt_combine], --[m4_if(m4_eval([$# > 3]), [1], -- [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl --[[m4_foreach([_Lt_prefix], [$2], -- [m4_foreach([_Lt_suffix], -- ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, -- [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) -- -- --# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) --# ----------------------------------------------------------------------- --# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited --# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. --m4_define([lt_if_append_uniq], --[m4_ifdef([$1], -- [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], -- [lt_append([$1], [$2], [$3])$4], -- [$5])], -- [lt_append([$1], [$2], [$3])$4])]) -- -- --# lt_dict_add(DICT, KEY, VALUE) --# ----------------------------- --m4_define([lt_dict_add], --[m4_define([$1($2)], [$3])]) -- -- --# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) --# -------------------------------------------- --m4_define([lt_dict_add_subkey], --[m4_define([$1($2:$3)], [$4])]) -- -- --# lt_dict_fetch(DICT, KEY, [SUBKEY]) --# ---------------------------------- --m4_define([lt_dict_fetch], --[m4_ifval([$3], -- m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), -- m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) -- -- --# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) --# ----------------------------------------------------------------- --m4_define([lt_if_dict_fetch], --[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], -- [$5], -- [$6])]) -- -- --# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) --# -------------------------------------------------------------- --m4_define([lt_dict_filter], --[m4_if([$5], [], [], -- [lt_join(m4_quote(m4_default([$4], [[, ]])), -- lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), -- [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl --]) -- --# ltversion.m4 -- version numbers -*- Autoconf -*- --# --# Copyright (C) 2004 Free Software Foundation, Inc. --# Written by Scott James Remnant, 2004 --# --# This file is free software; the Free Software Foundation gives --# unlimited permission to copy and/or distribute it, with or without --# modifications, as long as this notice is preserved. -- --# Generated from ltversion.in. -- --# serial 3017 ltversion.m4 --# This file is part of GNU Libtool -- --m4_define([LT_PACKAGE_VERSION], [2.2.6b]) --m4_define([LT_PACKAGE_REVISION], [1.3017]) -- --AC_DEFUN([LTVERSION_VERSION], --[macro_version='2.2.6b' --macro_revision='1.3017' --_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) --_LT_DECL(, macro_revision, 0) --]) -- --# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- --# --# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. --# Written by Scott James Remnant, 2004. --# --# This file is free software; the Free Software Foundation gives --# unlimited permission to copy and/or distribute it, with or without --# modifications, as long as this notice is preserved. -- --# serial 4 lt~obsolete.m4 -- --# These exist entirely to fool aclocal when bootstrapping libtool. --# --# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) --# which have later been changed to m4_define as they aren't part of the --# exported API, or moved to Autoconf or Automake where they belong. --# --# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN --# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us --# using a macro with the same name in our local m4/libtool.m4 it'll --# pull the old libtool.m4 in (it doesn't see our shiny new m4_define --# and doesn't know about Autoconf macros at all.) --# --# So we provide this file, which has a silly filename so it's always --# included after everything else. This provides aclocal with the --# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything --# because those macros already exist, or will be overwritten later. --# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. --# --# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. --# Yes, that means every name once taken will need to remain here until --# we give up compatibility with versions before 1.7, at which point --# we need to keep only those names which we still refer to. -- --# This is to help aclocal find these macros, as it can't see m4_define. --AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) -- --m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) --m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) --m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) --m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) --m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) --m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) --m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) --m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) --m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) --m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) --m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) --m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) --m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) --m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) --m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) --m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) --m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) --m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) --m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) --m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) --m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) --m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) --m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) --m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) --m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) --m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) --m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) --m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) --m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) --m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) --m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) --m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) --m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) --m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) --m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) --m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) --m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) --m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) --m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) --m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) --m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) --m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) --m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) --m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) --m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) --m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) --m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) --m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) --m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) --m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) --m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) --m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) --m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) --m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) --m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -- --# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -+# Copyright (C) 2002-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - - # AM_AUTOMAKE_VERSION(VERSION) - # ---------------------------- - # Automake X.Y traces this macro to ensure aclocal.m4 has been - # generated from the m4 files accompanying Automake X.Y. - # (This private macro should not be called outside this file.) - AC_DEFUN([AM_AUTOMAKE_VERSION], --[am__api_version='1.11' -+[am__api_version='1.13' - dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to - dnl require some minimum version. Point them to the right macro. --m4_if([$1], [1.11.1], [], -+m4_if([$1], [1.13.4], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl - ]) - - # _AM_AUTOCONF_VERSION(VERSION) - # ----------------------------- - # aclocal traces this macro to find the Autoconf version. - # This is a private macro too. Using m4_define simplifies - # the logic in aclocal, which can simply ignore this definition. - m4_define([_AM_AUTOCONF_VERSION], []) - - # AM_SET_CURRENT_AUTOMAKE_VERSION - # ------------------------------- - # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. - # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. - AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], --[AM_AUTOMAKE_VERSION([1.11.1])dnl -+[AM_AUTOMAKE_VERSION([1.13.4])dnl - m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl - _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - - # Figure out how to run the assembler. -*- Autoconf -*- - --# Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -+# Copyright (C) 2001-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# serial 5 -- - # AM_PROG_AS - # ---------- - AC_DEFUN([AM_PROG_AS], - [# By default we simply use the C compiler to build assembly code. - AC_REQUIRE([AC_PROG_CC]) - test "${CCAS+set}" = set || CCAS=$CC - test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS - AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) - AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) - _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl - ]) - - # AM_AUX_DIR_EXPAND -*- Autoconf -*- - --# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -+# Copyright (C) 2001-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - - # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets --# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to --# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -+# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -+# '$srcdir', '$srcdir/..', or '$srcdir/../..'. - # - # Of course, Automake must honor this variable whenever it calls a - # tool from the auxiliary directory. The problem is that $srcdir (and - # therefore $ac_aux_dir as well) can be either absolute or relative, - # depending on how configure is run. This is pretty annoying, since - # it makes $ac_aux_dir quite unusable in subdirectories: in the top - # source directory, any form will work fine, but in subdirectories a - # relative path needs to be adjusted first. -@@ -8861,17 +918,17 @@ AC_ARG_VAR([CCASFLAGS], [assembler compi - # fails when called from a subdirectory if $ac_aux_dir is relative - # $top_srcdir/$ac_aux_dir/missing - # fails if $ac_aux_dir is absolute, - # fails when called from a subdirectory in a VPATH build with - # a relative $ac_aux_dir - # - # The reason of the latter failure is that $top_srcdir and $ac_aux_dir - # are both prefixed by $srcdir. In an in-source build this is usually --# harmless because $srcdir is `.', but things will broke when you -+# harmless because $srcdir is '.', but things will broke when you - # start a VPATH build or use an absolute $srcdir. - # - # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, - # iff we strip the leading $srcdir from $ac_aux_dir. That would be: - # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` - # and then we would define $MISSING as - # MISSING="\${SHELL} $am_aux_dir/missing" - # This will work as long as MISSING is not called from configure, because -@@ -8887,32 +944,29 @@ AC_DEFUN([AM_AUX_DIR_EXPAND], - [dnl Rely on autoconf to set up CDPATH properly. - AC_PREREQ([2.50])dnl - # expand $ac_aux_dir to an absolute path - am_aux_dir=`cd $ac_aux_dir && pwd` - ]) - - # AM_CONDITIONAL -*- Autoconf -*- - --# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 --# Free Software Foundation, Inc. -+# Copyright (C) 1997-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# serial 9 -- - # AM_CONDITIONAL(NAME, SHELL-CONDITION) - # ------------------------------------- - # Define a conditional. - AC_DEFUN([AM_CONDITIONAL], --[AC_PREREQ(2.52)dnl -- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], -- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -+[AC_PREREQ([2.52])dnl -+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], -+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl - AC_SUBST([$1_TRUE])dnl - AC_SUBST([$1_FALSE])dnl - _AM_SUBST_NOTMAKE([$1_TRUE])dnl - _AM_SUBST_NOTMAKE([$1_FALSE])dnl - m4_define([_AM_COND_VALUE_$1], [$2])dnl - if $2; then - $1_TRUE= - $1_FALSE='#' -@@ -8921,63 +975,63 @@ else - $1_FALSE= - fi - AC_CONFIG_COMMANDS_PRE( - [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. - Usually this means the macro was only invoked conditionally.]]) - fi])]) - --# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 --# Free Software Foundation, Inc. -+# Copyright (C) 1999-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# serial 10 - --# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be - # written in clear, in which case automake, when reading aclocal.m4, - # will think it sees a *use*, and therefore will trigger all it's - # C support machinery. Also note that it means that autoscan, seeing - # CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - - # _AM_DEPENDENCIES(NAME) - # ---------------------- - # See how the compiler implements dependency checking. --# NAME is "CC", "CXX", "GCJ", or "OBJC". -+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". - # We try a few techniques and use that to set a single cache variable. - # - # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was - # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular - # dependency, and given that the user is not expected to run this macro, - # just rely on AC_PROG_CC. - AC_DEFUN([_AM_DEPENDENCIES], - [AC_REQUIRE([AM_SET_DEPDIR])dnl - AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl - AC_REQUIRE([AM_MAKE_INCLUDE])dnl - AC_REQUIRE([AM_DEP_TRACK])dnl - --ifelse([$1], CC, [depcc="$CC" am_compiler_list=], -- [$1], CXX, [depcc="$CXX" am_compiler_list=], -- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], -- [$1], UPC, [depcc="$UPC" am_compiler_list=], -- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], -- [depcc="$$1" am_compiler_list=]) -+m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], -+ [$1], [CXX], [depcc="$CXX" am_compiler_list=], -+ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], -+ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], -+ [$1], [UPC], [depcc="$UPC" am_compiler_list=], -+ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], -+ [depcc="$$1" am_compiler_list=]) - - AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], - [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up -- # making a dummy file named `D' -- because `-MD' means `put the output -- # in D'. -+ # making a dummy file named 'D' -- because '-MD' means "put the output -+ # in D". -+ rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a -@@ -9006,44 +1060,44 @@ AC_CACHE_CHECK([dependency style of $dep - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c -- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with -- # Solaris 8's {/usr,}/bin/sh. -- touch sub/conftst$i.h -+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with -+ # Solaris 10 /bin/sh. -+ echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - -- # We check with `-c' and `-o' for the sake of the "dashmstdout" -+ # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly -- # handle `-M -o', and we need to detect this. Also, some Intel -- # versions had trouble with output in subdirs -+ # handle '-M -o', and we need to detect this. Also, some Intel -+ # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) -- # after this tag, mechanisms are not by side-effect, so they'll -- # only be used when explicitly requested -+ # After this tag, mechanisms are not by side-effect, so they'll -+ # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; -- msvisualcpp | msvcmsys) -- # This compiler won't grok `-c -o', but also, the minuso test has -+ msvc7 | msvc7msys | msvisualcpp | msvcmsys) -+ # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ -@@ -9081,93 +1135,96 @@ AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) - ]) - - - # AM_SET_DEPDIR - # ------------- - # Choose a directory name for dependency files. --# This macro is AC_REQUIREd in _AM_DEPENDENCIES -+# This macro is AC_REQUIREd in _AM_DEPENDENCIES. - AC_DEFUN([AM_SET_DEPDIR], - [AC_REQUIRE([AM_SET_LEADING_DOT])dnl - AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl - ]) - - - # AM_DEP_TRACK - # ------------ - AC_DEFUN([AM_DEP_TRACK], --[AC_ARG_ENABLE(dependency-tracking, --[ --disable-dependency-tracking speeds up one-time build -- --enable-dependency-tracking do not reject slow dependency extractors]) -+[AC_ARG_ENABLE([dependency-tracking], [dnl -+AS_HELP_STRING( -+ [--enable-dependency-tracking], -+ [do not reject slow dependency extractors]) -+AS_HELP_STRING( -+ [--disable-dependency-tracking], -+ [speeds up one-time build])]) - if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -+ am__nodep='_no' - fi - AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) - AC_SUBST([AMDEPBACKSLASH])dnl - _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -+AC_SUBST([am__nodep])dnl -+_AM_SUBST_NOTMAKE([am__nodep])dnl - ]) - - # Generate code to set up dependency tracking. -*- Autoconf -*- - --# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 --# Free Software Foundation, Inc. -+# Copyright (C) 1999-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --#serial 5 - - # _AM_OUTPUT_DEPENDENCY_COMMANDS - # ------------------------------ - AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], - [{ -- # Autoconf 2.62 quotes --file arguments for eval, but not when files -+ # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. -- # We used to match only the files named `Makefile.in', but -+ # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote -- # from the Makefile without running `make'. -+ # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` -- test -z "am__include" && continue -+ test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` -- # When using ansi2knr, U may be empty or an underscore; expand it -- U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ -- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do -+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -@@ -9175,51 +1232,48 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS - ])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - - # AM_OUTPUT_DEPENDENCY_COMMANDS - # ----------------------------- - # This macro should only be invoked once -- use via AC_REQUIRE. - # - # This code is only required when automatic dependency tracking --# is enabled. FIXME. This creates each `.P' file that we will -+# is enabled. FIXME. This creates each '.P' file that we will - # need in order to bootstrap the dependency handling code. - AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], - [AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) - ]) - - # Do all the work for Automake. -*- Autoconf -*- - --# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, --# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. -+# Copyright (C) 1996-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# serial 16 -- - # This macro actually does too much. Some checks are only needed if - # your package does certain things. But this isn't really a big deal. - - # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) - # AM_INIT_AUTOMAKE([OPTIONS]) - # ----------------------------------------------- - # The call with PACKAGE and VERSION arguments is the old style - # call (pre autoconf-2.50), which is being phased out. PACKAGE - # and VERSION should now be passed to AC_INIT and removed from - # the call to AM_INIT_AUTOMAKE. - # We support both call styles for the transition. After - # the next Automake release, Autoconf can make the AC_INIT - # arguments mandatory, and then we can depend on a new Autoconf - # release and drop the old call support. - AC_DEFUN([AM_INIT_AUTOMAKE], --[AC_PREREQ([2.62])dnl -+[AC_PREREQ([2.65])dnl - dnl Autoconf wants to disallow AM_ names. We explicitly allow - dnl the ones we care about. - m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl - AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl - if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." -@@ -9238,73 +1292,86 @@ if test -z "$CYGPATH_W"; then - CYGPATH_W=echo - fi - fi - AC_SUBST([CYGPATH_W]) - - # Define the identity of the package. - dnl Distinguish between old-style and new-style calls. - m4_ifval([$2], --[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl -+[AC_DIAGNOSE([obsolete], -+ [$0: two- and three-arguments forms are deprecated.]) -+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], - [_AM_SET_OPTIONS([$1])dnl - dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. --m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, -+m4_if( -+ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), -+ [ok:ok],, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - - _AM_IF_OPTION([no-define],, --[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl -+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) -+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl - - # Some tools Automake needs. - AC_REQUIRE([AM_SANITY_CHECK])dnl - AC_REQUIRE([AC_ARG_PROGRAM])dnl --AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) --AM_MISSING_PROG(AUTOCONF, autoconf) --AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) --AM_MISSING_PROG(AUTOHEADER, autoheader) --AM_MISSING_PROG(MAKEINFO, makeinfo) -+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -+AM_MISSING_PROG([AUTOCONF], [autoconf]) -+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -+AM_MISSING_PROG([AUTOHEADER], [autoheader]) -+AM_MISSING_PROG([MAKEINFO], [makeinfo]) - AC_REQUIRE([AM_PROG_INSTALL_SH])dnl - AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl --AC_REQUIRE([AM_PROG_MKDIR_P])dnl -+AC_REQUIRE([AC_PROG_MKDIR_P])dnl -+# For better backward compatibility. To be removed once Automake 1.9.x -+# dies out for good. For more background, see: -+# -+# -+AC_SUBST([mkdir_p], ['$(MKDIR_P)']) - # We need awk for the "check" target. The system "awk" is bad on - # some platforms. - AC_REQUIRE([AC_PROG_AWK])dnl - AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AM_SET_LEADING_DOT])dnl - _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) - _AM_IF_OPTION([no-dependencies],, - [AC_PROVIDE_IFELSE([AC_PROG_CC], -- [_AM_DEPENDENCIES(CC)], -- [define([AC_PROG_CC], -- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -+ [_AM_DEPENDENCIES([CC])], -+ [m4_define([AC_PROG_CC], -+ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl - AC_PROVIDE_IFELSE([AC_PROG_CXX], -- [_AM_DEPENDENCIES(CXX)], -- [define([AC_PROG_CXX], -- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -+ [_AM_DEPENDENCIES([CXX])], -+ [m4_define([AC_PROG_CXX], -+ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl - AC_PROVIDE_IFELSE([AC_PROG_OBJC], -- [_AM_DEPENDENCIES(OBJC)], -- [define([AC_PROG_OBJC], -- defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -+ [_AM_DEPENDENCIES([OBJC])], -+ [m4_define([AC_PROG_OBJC], -+ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl -+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], -+ [_AM_DEPENDENCIES([OBJCXX])], -+ [m4_define([AC_PROG_OBJCXX], -+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl - ]) --_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl --dnl The `parallel-tests' driver may need to know about EXEEXT, so add the --dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro --dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -+AC_REQUIRE([AM_SILENT_RULES])dnl -+dnl The testsuite driver may need to know about EXEEXT, so add the -+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This -+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. - AC_CONFIG_COMMANDS_PRE(dnl - [m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl - ]) - --dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not - dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further - dnl mangled by Autoconf and run in a shell conditional statement. - m4_define([_AC_COMPILER_EXEEXT], - m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - - - # When config.status generates a header, we must update the stamp-h file. - # This file resides in the same directory as the config header -@@ -9322,17 +1389,17 @@ for _am_header in $config_headers :; do - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac - done - echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - --# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. -+# Copyright (C) 2001-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - - # AM_PROG_INSTALL_SH - # ------------------ - # Define $install_sh. -@@ -9341,89 +1408,81 @@ AC_DEFUN([AM_PROG_INSTALL_SH], - if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac - fi --AC_SUBST(install_sh)]) -+AC_SUBST([install_sh])]) - --# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -+# Copyright (C) 2003-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# serial 2 -- - # Check whether the underlying file-system supports filenames - # with a leading dot. For instance MS-DOS doesn't. - AC_DEFUN([AM_SET_LEADING_DOT], - [rm -rf .tst 2>/dev/null - mkdir .tst 2>/dev/null - if test -d .tst; then - am__leading_dot=. - else - am__leading_dot=_ - fi - rmdir .tst 2>/dev/null - AC_SUBST([am__leading_dot])]) - - # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- - # From Jim Meyering - --# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 --# Free Software Foundation, Inc. -+# Copyright (C) 1996-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# serial 5 -- - # AM_MAINTAINER_MODE([DEFAULT-MODE]) - # ---------------------------------- - # Control maintainer-specific portions of Makefiles. --# Default is to disable them, unless `enable' is passed literally. --# For symmetry, `disable' may be passed as well. Anyway, the user -+# Default is to disable them, unless 'enable' is passed literally. -+# For symmetry, 'disable' may be passed as well. Anyway, the user - # can override the default with the --enable/--disable switch. - AC_DEFUN([AM_MAINTAINER_MODE], - [m4_case(m4_default([$1], [disable]), - [enable], [m4_define([am_maintainer_other], [disable])], - [disable], [m4_define([am_maintainer_other], [enable])], - [m4_define([am_maintainer_other], [enable]) - m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) --AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) -+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode's default is 'disable' unless 'enable' is passed - AC_ARG_ENABLE([maintainer-mode], --[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful -- (and sometimes confusing) to the casual installer], -- [USE_MAINTAINER_MODE=$enableval], -- [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) -+ [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], -+ am_maintainer_other[ make rules and dependencies not useful -+ (and sometimes confusing) to the casual installer])], -+ [USE_MAINTAINER_MODE=$enableval], -+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) - AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST([MAINT])dnl - ] - ) - --AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) -- - # Check to see how 'make' treats includes. -*- Autoconf -*- - --# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. -+# Copyright (C) 2001-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# serial 4 -- - # AM_MAKE_INCLUDE() - # ----------------- - # Check to see how make treats includes. - AC_DEFUN([AM_MAKE_INCLUDE], - [am_make=${MAKE-make} - cat > confinc << 'END' - am__doit: - @echo this is the am__doit target -@@ -9431,17 +1490,17 @@ am__doit: - END - # If we don't find an include directive, just comment out the code. - AC_MSG_CHECKING([for style of include used by $am_make]) - am__include="#" - am__quote= - _am_result=none - # First try GNU make style include. - echo "include confinc" > confmf --# Ignore all kinds of additional output from `make'. -+# Ignore all kinds of additional output from 'make'. - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; - esac - # Now try BSD make style include. -@@ -9456,25 +1515,22 @@ if test "$am__include" = "#"; then - esac - fi - AC_SUBST([am__include]) - AC_SUBST([am__quote]) - AC_MSG_RESULT([$_am_result]) - rm -f confinc confmf - ]) - --# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 --# Free Software Foundation, Inc. -+# Copyright (C) 1999-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# serial 6 -- - # AM_PROG_CC_C_O - # -------------- - # Like AC_PROG_CC_C_O, but changed for automake. - AC_DEFUN([AM_PROG_CC_C_O], - [AC_REQUIRE([AC_PROG_CC_C_O])dnl - AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl - AC_REQUIRE_AUX_FILE([compile])dnl - # FIXME: we rely on the cache variable name because -@@ -9493,317 +1549,413 @@ fi - dnl Make sure AC_PROG_CC is never called again, or it will override our - dnl setting of CC. - m4_define([AC_PROG_CC], - [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) - ]) - - # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - --# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 --# Free Software Foundation, Inc. -+# Copyright (C) 1997-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# serial 6 -- - # AM_MISSING_PROG(NAME, PROGRAM) - # ------------------------------ - AC_DEFUN([AM_MISSING_PROG], - [AC_REQUIRE([AM_MISSING_HAS_RUN]) - $1=${$1-"${am_missing_run}$2"} - AC_SUBST($1)]) - -- - # AM_MISSING_HAS_RUN - # ------------------ --# Define MISSING if not defined so far and test if it supports --run. --# If it does, set am_missing_run to use it, otherwise, to nothing. -+# Define MISSING if not defined so far and test if it is modern enough. -+# If it is, set am_missing_run to use it, otherwise, to nothing. - AC_DEFUN([AM_MISSING_HAS_RUN], - [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl - AC_REQUIRE_AUX_FILE([missing])dnl - if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac - fi - # Use eval to expand $SHELL --if eval "$MISSING --run true"; then -- am_missing_run="$MISSING --run " -+if eval "$MISSING --is-lightweight"; then -+ am_missing_run="$MISSING " - else - am_missing_run= -- AC_MSG_WARN([`missing' script is too old or missing]) -+ AC_MSG_WARN(['missing' script is too old or missing]) - fi - ]) - --# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -+# Helper functions for option handling. -*- Autoconf -*- -+ -+# Copyright (C) 2001-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# AM_PROG_MKDIR_P --# --------------- --# Check for `mkdir -p'. --AC_DEFUN([AM_PROG_MKDIR_P], --[AC_PREREQ([2.60])dnl --AC_REQUIRE([AC_PROG_MKDIR_P])dnl --dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, --dnl while keeping a definition of mkdir_p for backward compatibility. --dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. --dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of --dnl Makefile.ins that do not define MKDIR_P, so we do our own --dnl adjustment using top_builddir (which is defined more often than --dnl MKDIR_P). --AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl --case $mkdir_p in -- [[\\/$]]* | ?:[[\\/]]*) ;; -- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; --esac --]) -- --# Helper functions for option handling. -*- Autoconf -*- -- --# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. --# --# This file is free software; the Free Software Foundation --# gives unlimited permission to copy and/or distribute it, --# with or without modifications, as long as this notice is preserved. -- --# serial 4 -- - # _AM_MANGLE_OPTION(NAME) - # ----------------------- - AC_DEFUN([_AM_MANGLE_OPTION], - [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - - # _AM_SET_OPTION(NAME) --# ------------------------------ -+# -------------------- - # Set option NAME. Presently that only means defining a flag for this option. - AC_DEFUN([_AM_SET_OPTION], --[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) -+[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) - - # _AM_SET_OPTIONS(OPTIONS) --# ---------------------------------- -+# ------------------------ - # OPTIONS is a space-separated list of Automake options. - AC_DEFUN([_AM_SET_OPTIONS], - [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - - # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) - # ------------------------------------------- - # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. - AC_DEFUN([_AM_IF_OPTION], - [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - - # Check to make sure that the build environment is sane. -*- Autoconf -*- - --# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 --# Free Software Foundation, Inc. -+# Copyright (C) 1996-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# serial 5 -- - # AM_SANITY_CHECK - # --------------- - AC_DEFUN([AM_SANITY_CHECK], - [AC_MSG_CHECKING([whether build environment is sane]) --# Just in case --sleep 1 --echo timestamp > conftest.file - # Reject unsafe characters in $srcdir or the absolute working directory - # name. Accept space and tab only in the latter. - am_lf=' - ' - case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; - esac - case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) -- AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -+ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; - esac - --# Do `set' in a subshell so we don't clobber the current shell's -+# Do 'set' in a subshell so we don't clobber the current shell's - # arguments. Must try -L first in case configure is actually a - # symlink; some systems play weird games with the mod time of symlinks - # (eg FreeBSD returns the mod time of the symlink's containing - # directory). - if ( -- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` -- if test "$[*]" = "X"; then -- # -L didn't work. -- set X `ls -t "$srcdir/configure" conftest.file` -- fi -- rm -f conftest.file -- if test "$[*]" != "X $srcdir/configure conftest.file" \ -- && test "$[*]" != "X conftest.file $srcdir/configure"; then -+ am_has_slept=no -+ for am_try in 1 2; do -+ echo "timestamp, slept: $am_has_slept" > conftest.file -+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` -+ if test "$[*]" = "X"; then -+ # -L didn't work. -+ set X `ls -t "$srcdir/configure" conftest.file` -+ fi -+ if test "$[*]" != "X $srcdir/configure conftest.file" \ -+ && test "$[*]" != "X conftest.file $srcdir/configure"; then - -- # If neither matched, then we have a broken ls. This can happen -- # if, for instance, CONFIG_SHELL is bash and it inherits a -- # broken ls alias from the environment. This has actually -- # happened. Such a system could not be considered "sane". -- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken --alias in your environment]) -- fi -- -+ # If neither matched, then we have a broken ls. This can happen -+ # if, for instance, CONFIG_SHELL is bash and it inherits a -+ # broken ls alias from the environment. This has actually -+ # happened. Such a system could not be considered "sane". -+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -+ alias in your environment]) -+ fi -+ if test "$[2]" = conftest.file || test $am_try -eq 2; then -+ break -+ fi -+ # Just in case. -+ sleep 1 -+ am_has_slept=yes -+ done - test "$[2]" = conftest.file - ) - then - # Ok. - : - else - AC_MSG_ERROR([newly created file is older than distributed files! - Check your system clock]) - fi --AC_MSG_RESULT(yes)]) -+AC_MSG_RESULT([yes]) -+# If we didn't sleep, we still need to ensure time stamps of config.status and -+# generated files are strictly newer. -+am_sleep_pid= -+if grep 'slept: no' conftest.file >/dev/null 2>&1; then -+ ( sleep 1 ) & -+ am_sleep_pid=$! -+fi -+AC_CONFIG_COMMANDS_PRE( -+ [AC_MSG_CHECKING([that generated files are newer than configure]) -+ if test -n "$am_sleep_pid"; then -+ # Hide warnings about reused PIDs. -+ wait $am_sleep_pid 2>/dev/null -+ fi -+ AC_MSG_RESULT([done])]) -+rm -f conftest.file -+]) - --# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -+# Copyright (C) 2009-2013 Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# AM_SILENT_RULES([DEFAULT]) -+# -------------------------- -+# Enable less verbose build rules; with the default set to DEFAULT -+# ("yes" being less verbose, "no" or empty being verbose). -+AC_DEFUN([AM_SILENT_RULES], -+[AC_ARG_ENABLE([silent-rules], [dnl -+AS_HELP_STRING( -+ [--enable-silent-rules], -+ [less verbose build output (undo: "make V=1")]) -+AS_HELP_STRING( -+ [--disable-silent-rules], -+ [verbose build output (undo: "make V=0")])dnl -+]) -+case $enable_silent_rules in @%:@ ((( -+ yes) AM_DEFAULT_VERBOSITY=0;; -+ no) AM_DEFAULT_VERBOSITY=1;; -+ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -+esac -+dnl -+dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -+dnl do not support nested variable expansions. -+dnl See automake bug#9928 and bug#10237. -+am_make=${MAKE-make} -+AC_CACHE_CHECK([whether $am_make supports nested variables], -+ [am_cv_make_support_nested_variables], -+ [if AS_ECHO([['TRUE=$(BAR$(V)) -+BAR0=false -+BAR1=true -+V=1 -+am__doit: -+ @$(TRUE) -+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then -+ am_cv_make_support_nested_variables=yes -+else -+ am_cv_make_support_nested_variables=no -+fi]) -+if test $am_cv_make_support_nested_variables = yes; then -+ dnl Using '$V' instead of '$(V)' breaks IRIX make. -+ AM_V='$(V)' -+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -+else -+ AM_V=$AM_DEFAULT_VERBOSITY -+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -+fi -+AC_SUBST([AM_V])dnl -+AM_SUBST_NOTMAKE([AM_V])dnl -+AC_SUBST([AM_DEFAULT_V])dnl -+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -+AM_BACKSLASH='\' -+AC_SUBST([AM_BACKSLASH])dnl -+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -+]) -+ -+# Copyright (C) 2001-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - - # AM_PROG_INSTALL_STRIP - # --------------------- --# One issue with vendor `install' (even GNU) is that you can't -+# One issue with vendor 'install' (even GNU) is that you can't - # specify the program used to strip binaries. This is especially - # annoying in cross-compiling environments, where the build's strip - # is unlikely to handle the host's binaries. - # Fortunately install-sh will honor a STRIPPROG variable, so we --# always use install-sh in `make install-strip', and initialize -+# always use install-sh in "make install-strip", and initialize - # STRIPPROG with the value of the STRIP variable (set by the user). - AC_DEFUN([AM_PROG_INSTALL_STRIP], - [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl --# Installed binaries are usually stripped using `strip' when the user --# run `make install-strip'. However `strip' might not be the right -+# Installed binaries are usually stripped using 'strip' when the user -+# run "make install-strip". However 'strip' might not be the right - # tool to use in cross-compilation environments, therefore Automake --# will honor the `STRIP' environment variable to overrule this program. --dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -+# will honor the 'STRIP' environment variable to overrule this program. -+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. - if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) - fi - INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - AC_SUBST([INSTALL_STRIP_PROGRAM])]) - --# Copyright (C) 2006, 2008 Free Software Foundation, Inc. -+# Copyright (C) 2006-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# serial 2 -- - # _AM_SUBST_NOTMAKE(VARIABLE) - # --------------------------- - # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. - # This macro is traced by Automake. - AC_DEFUN([_AM_SUBST_NOTMAKE]) - - # AM_SUBST_NOTMAKE(VARIABLE) --# --------------------------- -+# -------------------------- - # Public sister of _AM_SUBST_NOTMAKE. - AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - - # Check how to create a tarball. -*- Autoconf -*- - --# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -+# Copyright (C) 2004-2013 Free Software Foundation, Inc. - # - # This file is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - --# serial 2 -- - # _AM_PROG_TAR(FORMAT) - # -------------------- - # Check how to create a tarball in format FORMAT. --# FORMAT should be one of `v7', `ustar', or `pax'. -+# FORMAT should be one of 'v7', 'ustar', or 'pax'. - # - # Substitute a variable $(am__tar) that is a command - # writing to stdout a FORMAT-tarball containing the directory - # $tardir. - # tardir=directory && $(am__tar) > result.tar - # - # Substitute a variable $(am__untar) that extract such - # a tarball read from stdin. - # $(am__untar) < result.tar -+# - AC_DEFUN([_AM_PROG_TAR], --[# Always define AMTAR for backward compatibility. --AM_MISSING_PROG([AMTAR], [tar]) -+[# Always define AMTAR for backward compatibility. Yes, it's still used -+# in the wild :-( We should find a proper way to deprecate it ... -+AC_SUBST([AMTAR], ['$${TAR-tar}']) -+ -+# We'll loop over all known methods to create a tar archive until one works. -+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -+ - m4_if([$1], [v7], -- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], -- [m4_case([$1], [ustar],, [pax],, -- [m4_fatal([Unknown tar format])]) --AC_MSG_CHECKING([how to create a $1 tar archive]) --# Loop over all known methods to create a tar archive until one works. --_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' --_am_tools=${am_cv_prog_tar_$1-$_am_tools} --# Do not fold the above two line into one, because Tru64 sh and --# Solaris sh will not grok spaces in the rhs of `-'. --for _am_tool in $_am_tools --do -- case $_am_tool in -- gnutar) -- for _am_tar in tar gnutar gtar; -- do -- AM_RUN_LOG([$_am_tar --version]) && break -- done -- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' -- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' -- am__untar="$_am_tar -xf -" -- ;; -- plaintar) -- # Must skip GNU tar: if it does not support --format= it doesn't create -- # ustar tarball either. -- (tar --version) >/dev/null 2>&1 && continue -- am__tar='tar chf - "$$tardir"' -- am__tar_='tar chf - "$tardir"' -- am__untar='tar xf -' -- ;; -- pax) -- am__tar='pax -L -x $1 -w "$$tardir"' -- am__tar_='pax -L -x $1 -w "$tardir"' -- am__untar='pax -r' -- ;; -- cpio) -- am__tar='find "$$tardir" -print | cpio -o -H $1 -L' -- am__tar_='find "$tardir" -print | cpio -o -H $1 -L' -- am__untar='cpio -i -H $1 -d' -- ;; -- none) -- am__tar=false -- am__tar_=false -- am__untar=false -- ;; -- esac -+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - -- # If the value was cached, stop now. We just wanted to have am__tar -- # and am__untar set. -- test -n "${am_cv_prog_tar_$1}" && break -+ [m4_case([$1], -+ [ustar], -+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields. -+ # There is notably a 21 bits limit for the UID and the GID. In fact, -+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 -+ # and bug#13588). -+ am_max_uid=2097151 # 2^21 - 1 -+ am_max_gid=$am_max_uid -+ # The $UID and $GID variables are not portable, so we need to resort -+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls -+ # below are definitely unexpected, so allow the users to see them -+ # (that is, avoid stderr redirection). -+ am_uid=`id -u || echo unknown` -+ am_gid=`id -g || echo unknown` -+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) -+ if test $am_uid -le $am_max_uid; then -+ AC_MSG_RESULT([yes]) -+ else -+ AC_MSG_RESULT([no]) -+ _am_tools=none -+ fi -+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) -+ if test $am_gid -le $am_max_gid; then -+ AC_MSG_RESULT([yes]) -+ else -+ AC_MSG_RESULT([no]) -+ _am_tools=none -+ fi], - -- # tar/untar a dummy directory, and stop if the command works -+ [pax], -+ [], -+ -+ [m4_fatal([Unknown tar format])]) -+ -+ AC_MSG_CHECKING([how to create a $1 tar archive]) -+ -+ # Go ahead even if we have the value already cached. We do so because we -+ # need to set the values for the 'am__tar' and 'am__untar' variables. -+ _am_tools=${am_cv_prog_tar_$1-$_am_tools} -+ -+ for _am_tool in $_am_tools; do -+ case $_am_tool in -+ gnutar) -+ for _am_tar in tar gnutar gtar; do -+ AM_RUN_LOG([$_am_tar --version]) && break -+ done -+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' -+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' -+ am__untar="$_am_tar -xf -" -+ ;; -+ plaintar) -+ # Must skip GNU tar: if it does not support --format= it doesn't create -+ # ustar tarball either. -+ (tar --version) >/dev/null 2>&1 && continue -+ am__tar='tar chf - "$$tardir"' -+ am__tar_='tar chf - "$tardir"' -+ am__untar='tar xf -' -+ ;; -+ pax) -+ am__tar='pax -L -x $1 -w "$$tardir"' -+ am__tar_='pax -L -x $1 -w "$tardir"' -+ am__untar='pax -r' -+ ;; -+ cpio) -+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L' -+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L' -+ am__untar='cpio -i -H $1 -d' -+ ;; -+ none) -+ am__tar=false -+ am__tar_=false -+ am__untar=false -+ ;; -+ esac -+ -+ # If the value was cached, stop now. We just wanted to have am__tar -+ # and am__untar set. -+ test -n "${am_cv_prog_tar_$1}" && break -+ -+ # tar/untar a dummy directory, and stop if the command works. -+ rm -rf conftest.dir -+ mkdir conftest.dir -+ echo GrepMe > conftest.dir/file -+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) -+ rm -rf conftest.dir -+ if test -s conftest.tar; then -+ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break -+ fi -+ done - rm -rf conftest.dir -- mkdir conftest.dir -- echo GrepMe > conftest.dir/file -- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) -- rm -rf conftest.dir -- if test -s conftest.tar; then -- AM_RUN_LOG([$am__untar /dev/null 2>&1 && break -- fi --done --rm -rf conftest.dir - --AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) --AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -+ AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -+ - AC_SUBST([am__tar]) - AC_SUBST([am__untar]) - ]) # _AM_PROG_TAR - -+m4_include([m4/asmcfi.m4]) -+m4_include([m4/ax_append_flag.m4]) -+m4_include([m4/ax_cc_maxopt.m4]) -+m4_include([m4/ax_cflags_warn_all.m4]) -+m4_include([m4/ax_check_compile_flag.m4]) -+m4_include([m4/ax_compiler_vendor.m4]) -+m4_include([m4/ax_configure_args.m4]) -+m4_include([m4/ax_enable_builddir.m4]) -+m4_include([m4/ax_gcc_archflag.m4]) -+m4_include([m4/ax_gcc_x86_cpuid.m4]) -+m4_include([m4/libtool.m4]) -+m4_include([m4/ltoptions.m4]) -+m4_include([m4/ltsugar.m4]) -+m4_include([m4/ltversion.m4]) -+m4_include([m4/lt~obsolete.m4]) - m4_include([acinclude.m4]) -diff --git a/js/src/ctypes/libffi/compile b/js/src/ctypes/libffi/compile ---- a/js/src/ctypes/libffi/compile -+++ b/js/src/ctypes/libffi/compile -@@ -1,78 +1,282 @@ - #! /bin/sh --# Wrapper for compilers which do not understand `-c -o'. -+# Wrapper for compilers which do not understand '-c -o'. - --scriptversion=2005-05-14.22 -+scriptversion=2012-10-14.11; # UTC - --# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. -+# Copyright (C) 1999-2013 Free Software Foundation, Inc. - # Written by Tom Tromey . - # - # This program is free software; you can redistribute it and/or modify - # it under the terms of the GNU General Public License as published by - # the Free Software Foundation; either version 2, or (at your option) - # any later version. - # - # This program is distributed in the hope that it will be useful, - # but WITHOUT ANY WARRANTY; without even the implied warranty of - # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - # GNU General Public License for more details. - # - # You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+# along with this program. If not, see . - - # As a special exception to the GNU General Public License, if you - # distribute this file as part of a program that contains a - # configuration script generated by Autoconf, you may include it under - # the same distribution terms that you use for the rest of that program. - - # This file is maintained in Automake, please report - # bugs to or send patches to - # . - -+nl=' -+' -+ -+# We need space, tab and new line, in precisely that order. Quoting is -+# there to prevent tools from complaining about whitespace usage. -+IFS=" "" $nl" -+ -+file_conv= -+ -+# func_file_conv build_file lazy -+# Convert a $build file to $host form and store it in $file -+# Currently only supports Windows hosts. If the determined conversion -+# type is listed in (the comma separated) LAZY, no conversion will -+# take place. -+func_file_conv () -+{ -+ file=$1 -+ case $file in -+ / | /[!/]*) # absolute file, and not a UNC file -+ if test -z "$file_conv"; then -+ # lazily determine how to convert abs files -+ case `uname -s` in -+ MINGW*) -+ file_conv=mingw -+ ;; -+ CYGWIN*) -+ file_conv=cygwin -+ ;; -+ *) -+ file_conv=wine -+ ;; -+ esac -+ fi -+ case $file_conv/,$2, in -+ *,$file_conv,*) -+ ;; -+ mingw/*) -+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` -+ ;; -+ cygwin/*) -+ file=`cygpath -m "$file" || echo "$file"` -+ ;; -+ wine/*) -+ file=`winepath -w "$file" || echo "$file"` -+ ;; -+ esac -+ ;; -+ esac -+} -+ -+# func_cl_dashL linkdir -+# Make cl look for libraries in LINKDIR -+func_cl_dashL () -+{ -+ func_file_conv "$1" -+ if test -z "$lib_path"; then -+ lib_path=$file -+ else -+ lib_path="$lib_path;$file" -+ fi -+ linker_opts="$linker_opts -LIBPATH:$file" -+} -+ -+# func_cl_dashl library -+# Do a library search-path lookup for cl -+func_cl_dashl () -+{ -+ lib=$1 -+ found=no -+ save_IFS=$IFS -+ IFS=';' -+ for dir in $lib_path $LIB -+ do -+ IFS=$save_IFS -+ if $shared && test -f "$dir/$lib.dll.lib"; then -+ found=yes -+ lib=$dir/$lib.dll.lib -+ break -+ fi -+ if test -f "$dir/$lib.lib"; then -+ found=yes -+ lib=$dir/$lib.lib -+ break -+ fi -+ if test -f "$dir/lib$lib.a"; then -+ found=yes -+ lib=$dir/lib$lib.a -+ break -+ fi -+ done -+ IFS=$save_IFS -+ -+ if test "$found" != yes; then -+ lib=$lib.lib -+ fi -+} -+ -+# func_cl_wrapper cl arg... -+# Adjust compile command to suit cl -+func_cl_wrapper () -+{ -+ # Assume a capable shell -+ lib_path= -+ shared=: -+ linker_opts= -+ for arg -+ do -+ if test -n "$eat"; then -+ eat= -+ else -+ case $1 in -+ -o) -+ # configure might choose to run compile as 'compile cc -o foo foo.c'. -+ eat=1 -+ case $2 in -+ *.o | *.[oO][bB][jJ]) -+ func_file_conv "$2" -+ set x "$@" -Fo"$file" -+ shift -+ ;; -+ *) -+ func_file_conv "$2" -+ set x "$@" -Fe"$file" -+ shift -+ ;; -+ esac -+ ;; -+ -I) -+ eat=1 -+ func_file_conv "$2" mingw -+ set x "$@" -I"$file" -+ shift -+ ;; -+ -I*) -+ func_file_conv "${1#-I}" mingw -+ set x "$@" -I"$file" -+ shift -+ ;; -+ -l) -+ eat=1 -+ func_cl_dashl "$2" -+ set x "$@" "$lib" -+ shift -+ ;; -+ -l*) -+ func_cl_dashl "${1#-l}" -+ set x "$@" "$lib" -+ shift -+ ;; -+ -L) -+ eat=1 -+ func_cl_dashL "$2" -+ ;; -+ -L*) -+ func_cl_dashL "${1#-L}" -+ ;; -+ -static) -+ shared=false -+ ;; -+ -Wl,*) -+ arg=${1#-Wl,} -+ save_ifs="$IFS"; IFS=',' -+ for flag in $arg; do -+ IFS="$save_ifs" -+ linker_opts="$linker_opts $flag" -+ done -+ IFS="$save_ifs" -+ ;; -+ -Xlinker) -+ eat=1 -+ linker_opts="$linker_opts $2" -+ ;; -+ -*) -+ set x "$@" "$1" -+ shift -+ ;; -+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) -+ func_file_conv "$1" -+ set x "$@" -Tp"$file" -+ shift -+ ;; -+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) -+ func_file_conv "$1" mingw -+ set x "$@" "$file" -+ shift -+ ;; -+ *) -+ set x "$@" "$1" -+ shift -+ ;; -+ esac -+ fi -+ shift -+ done -+ if test -n "$linker_opts"; then -+ linker_opts="-link$linker_opts" -+ fi -+ exec "$@" $linker_opts -+ exit 1 -+} -+ -+eat= -+ - case $1 in - '') -- echo "$0: No command. Try \`$0 --help' for more information." 1>&2 -+ echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF - Usage: compile [--help] [--version] PROGRAM [ARGS] - --Wrapper for compilers which do not understand `-c -o'. --Remove `-o dest.o' from ARGS, run PROGRAM with the remaining -+Wrapper for compilers which do not understand '-c -o'. -+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining - arguments, and rename the output as expected. - - If you are trying to build a whole package this is not the --right script to run: please start by reading the file `INSTALL'. -+right script to run: please start by reading the file 'INSTALL'. - - Report bugs to . - EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; -+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) -+ func_cl_wrapper "$@" # Doesn't return... -+ ;; - esac - - ofile= - cfile= --eat= - - for arg - do - if test -n "$eat"; then - eat= - else - case $1 in - -o) -- # configure might choose to run compile as `compile cc -o foo foo.c'. -- # So we strip `-o arg' only if arg is an object. -+ # configure might choose to run compile as 'compile cc -o foo foo.c'. -+ # So we strip '-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift -@@ -89,54 +293,55 @@ do - shift - ;; - esac - fi - shift - done - - if test -z "$ofile" || test -z "$cfile"; then -- # If no `-o' option was seen then we might have been invoked from a -+ # If no '-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no -- # `.c' file was seen then we are probably linking. That is also -+ # '.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" - fi - - # Name of file we expect compiler to create. --cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'` -+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` - - # Create the lock directory. --# Note: use `[/.-]' here to ensure that we don't use the same name -+# Note: use '[/\\:.-]' here to ensure that we don't use the same name - # that we are using for the .o file. Also, base the name on the expected - # object file name, since that is what matters with a parallel build. --lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d -+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d - while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 - done - # FIXME: race condition here if user kills between mkdir and trap. - trap "rmdir '$lockdir'; exit 1" 1 2 15 - - # Run the compile. - "$@" - ret=$? - - if test -f "$cofile"; then -- mv "$cofile" "$ofile" -+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile" - elif test -f "${cofile}bj"; then -- mv "${cofile}bj" "$ofile" -+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" - fi - - rmdir "$lockdir" - exit $ret - - # Local Variables: - # mode: shell-script - # sh-indentation: 2 - # eval: (add-hook 'write-file-hooks 'time-stamp) - # time-stamp-start: "scriptversion=" - # time-stamp-format: "%:y-%02m-%02d.%02H" --# time-stamp-end: "$" -+# time-stamp-time-zone: "UTC" -+# time-stamp-end: "; # UTC" - # End: -diff --git a/js/src/ctypes/libffi/config.guess b/js/src/ctypes/libffi/config.guess ---- a/js/src/ctypes/libffi/config.guess -+++ b/js/src/ctypes/libffi/config.guess -@@ -1,47 +1,43 @@ - #! /bin/sh - # Attempt to guess a canonical system name. - # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, --# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 --# Free Software Foundation, Inc. -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -+# 2011, 2012, 2013 Free Software Foundation, Inc. - --timestamp='2009-11-19' -+timestamp='2012-12-29' - - # This file is free software; you can redistribute it and/or modify it - # under the terms of the GNU General Public License as published by --# the Free Software Foundation; either version 2 of the License, or -+# the Free Software Foundation; either version 3 of the License, or - # (at your option) any later version. - # - # This program is distributed in the hope that it will be useful, but - # WITHOUT ANY WARRANTY; without even the implied warranty of - # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - # General Public License for more details. - # - # You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA --# 02110-1301, USA. -+# along with this program; if not, see . - # - # As a special exception to the GNU General Public License, if you - # distribute this file as part of a program that contains a - # configuration script generated by Autoconf, you may include it under --# the same distribution terms that you use for the rest of that program. -- -- --# Originally written by Per Bothner. Please send patches (context --# diff format) to and include a ChangeLog --# entry. -+# the same distribution terms that you use for the rest of that -+# program. This Exception is an additional permission under section 7 -+# of the GNU General Public License, version 3 ("GPLv3"). - # --# This script attempts to guess a canonical system name similar to --# config.sub. If it succeeds, it prints the system name on stdout, and --# exits with 0. Otherwise, it exits with 1. -+# Originally written by Per Bothner. - # - # You can get the latest version of this script from: - # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -+# -+# Please send patches with a ChangeLog entry to config-patches@gnu.org. -+ - - me=`echo "$0" | sed -e 's,.*/,,'` - - usage="\ - Usage: $0 [OPTION] - - Output the configuration name of the system \`$me' is run on. - -@@ -51,18 +47,19 @@ Operation modes: - -v, --version print version number, then exit - - Report bugs and patches to ." - - version="\ - GNU config.guess ($timestamp) - - Originally written by Per Bothner. --Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, --2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, -+2012, 2013 Free Software Foundation, Inc. - - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - - help=" - Try \`$me --help' for more information." - - # Parse command line -@@ -139,17 +136,17 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` | - UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown - UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - - # Note: order is significant - the case branches are not exclusive. - - case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or -- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, -+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". -@@ -175,17 +172,17 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) -- os=netbsd -+ os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in -@@ -196,16 +193,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; -+ *:Bitrig:*:*) -+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` -+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} -+ exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) -@@ -218,17 +219,17 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) -- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` -+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in -@@ -264,17 +265,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -- exit ;; -+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code. -+ exitcode=$? -+ trap '' 0 -+ exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 -@@ -290,22 +294,22 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) -- echo powerpc-ibm-os400 -+ echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; -- arm:riscos:*:*|arm:RISCOS:*:*) -+ arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then -@@ -328,16 +332,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; -+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) -+ echo i386-pc-auroraux${UNAME_RELEASE} -+ exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ -@@ -386,33 +393,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) -- echo m68k-atari-mint${UNAME_RELEASE} -+ echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} -- exit ;; -+ exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) -- echo m68k-atari-mint${UNAME_RELEASE} -+ echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) -- echo m68k-milan-mint${UNAME_RELEASE} -- exit ;; -+ echo m68k-milan-mint${UNAME_RELEASE} -+ exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) -- echo m68k-hades-mint${UNAME_RELEASE} -- exit ;; -+ echo m68k-hades-mint${UNAME_RELEASE} -+ exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) -- echo m68k-unknown-mint${UNAME_RELEASE} -- exit ;; -+ echo m68k-unknown-mint${UNAME_RELEASE} -+ exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 -@@ -472,31 +479,31 @@ EOF - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) -- # DG/UX returns AViiON for all architectures -- UNAME_PROCESSOR=`/usr/bin/uname -p` -+ # DG/UX returns AViiON for all architectures -+ UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi -- exit ;; -+ exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) -@@ -543,17 +550,17 @@ EOF - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; -- *:AIX:*:[456]) -+ *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` -@@ -586,62 +593,62 @@ EOF - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` -- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` -- case "${sc_cpu_version}" in -- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 -- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 -- 532) # CPU_PA_RISC2_0 -- case "${sc_kernel_bits}" in -- 32) HP_ARCH="hppa2.0n" ;; -- 64) HP_ARCH="hppa2.0w" ;; -+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` -+ case "${sc_cpu_version}" in -+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 -+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 -+ 532) # CPU_PA_RISC2_0 -+ case "${sc_kernel_bits}" in -+ 32) HP_ARCH="hppa2.0n" ;; -+ 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 -- esac ;; -- esac -+ esac ;; -+ esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build -- sed 's/^ //' << EOF >$dummy.c -+ sed 's/^ //' << EOF >$dummy.c - -- #define _HPUX_SOURCE -- #include -- #include -+ #define _HPUX_SOURCE -+ #include -+ #include - -- int main () -- { -- #if defined(_SC_KERNEL_BITS) -- long bits = sysconf(_SC_KERNEL_BITS); -- #endif -- long cpu = sysconf (_SC_CPU_VERSION); -+ int main () -+ { -+ #if defined(_SC_KERNEL_BITS) -+ long bits = sysconf(_SC_KERNEL_BITS); -+ #endif -+ long cpu = sysconf (_SC_CPU_VERSION); - -- switch (cpu) -- { -- case CPU_PA_RISC1_0: puts ("hppa1.0"); break; -- case CPU_PA_RISC1_1: puts ("hppa1.1"); break; -- case CPU_PA_RISC2_0: -- #if defined(_SC_KERNEL_BITS) -- switch (bits) -- { -- case 64: puts ("hppa2.0w"); break; -- case 32: puts ("hppa2.0n"); break; -- default: puts ("hppa2.0"); break; -- } break; -- #else /* !defined(_SC_KERNEL_BITS) */ -- puts ("hppa2.0"); break; -- #endif -- default: puts ("hppa1.0"); break; -- } -- exit (0); -- } -+ switch (cpu) -+ { -+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break; -+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break; -+ case CPU_PA_RISC2_0: -+ #if defined(_SC_KERNEL_BITS) -+ switch (bits) -+ { -+ case 64: puts ("hppa2.0w"); break; -+ case 32: puts ("hppa2.0n"); break; -+ default: puts ("hppa2.0"); break; -+ } break; -+ #else /* !defined(_SC_KERNEL_BITS) */ -+ puts ("hppa2.0"); break; -+ #endif -+ default: puts ("hppa1.0"); break; -+ } -+ exit (0); -+ } - EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build -@@ -722,32 +729,32 @@ EOF - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd -- exit ;; -+ exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi -- exit ;; -+ exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd -- exit ;; -+ exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd -- exit ;; -+ exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd -- exit ;; -+ exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' -@@ -761,59 +768,64 @@ EOF - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` -- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -- exit ;; -+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` -+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -+ exit ;; - 5000:UNIX_System_V:4.*:*) -- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` -- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` -+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) -- case ${UNAME_MACHINE} in -- pc98) -- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -+ UNAME_PROCESSOR=`/usr/bin/uname -p` -+ case ${UNAME_PROCESSOR} in - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) -- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; -+ *:MINGW64*:*) -+ echo ${UNAME_MACHINE}-pc-mingw64 -+ exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; -+ i*:MSYS*:*) -+ echo ${UNAME_MACHINE}-pc-msys -+ exit ;; - i*:windows32*:*) -- # uname -m includes "-pc" on this system. -- echo ${UNAME_MACHINE}-mingw32 -+ # uname -m includes "-pc" on this system. -+ echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) -- case ${UNAME_MACHINE} in -+ case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} -@@ -849,51 +861,67 @@ EOF - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; -+ aarch64:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ aarch64_be:Linux:*:*) -+ UNAME_MACHINE=aarch64_be -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; -- esac -+ esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-gnu - else -- echo ${UNAME_MACHINE}-unknown-linux-gnueabi -+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ -+ | grep -q __ARM_PCS_VFP -+ then -+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi -+ else -+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf -+ fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) -- echo cris-axis-linux-gnu -+ echo ${UNAME_MACHINE}-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) -- echo crisv32-axis-linux-gnu -+ echo ${UNAME_MACHINE}-axis-linux-gnu - exit ;; - frv:Linux:*:*) -- echo frv-unknown-linux-gnu -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ hexagon:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -@@ -925,17 +953,17 @@ EOF - CPU= - #endif - #endif - EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) -- echo or32-unknown-linux-gnu -+ echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-gnu - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) -@@ -951,45 +979,48 @@ EOF - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) -- echo ${UNAME_MACHINE}-unknown-linux-gnu -+ echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; -+ tile*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) -- echo x86_64-unknown-linux-gnu -+ echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - xtensa*:Linux:*:*) -- echo ${UNAME_MACHINE}-unknown-linux-gnu -+ echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) -- # Unixware is an offshoot of SVR4, but it has its own version -- # number series starting with 2... -- # I am not positive that other SVR4 systems won't match this, -+ # Unixware is an offshoot of SVR4, but it has its own version -+ # number series starting with 2... -+ # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. -- # Use sysv4.2uw... so that sysv4* matches it. -+ # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) -@@ -1011,17 +1042,17 @@ EOF - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) -- # UnixWare 7.x, OpenUNIX and OpenServer 6. -+ # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) -@@ -1039,23 +1070,23 @@ EOF - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: -- # uname -m prints for DJGPP always 'pc', but it prints nothing about -- # the processor, so we play safe by assuming i586. -+ # uname -m prints for DJGPP always 'pc', but it prints nothing about -+ # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp -- exit ;; -+ exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then -@@ -1080,18 +1111,18 @@ EOF - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) -- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -- && { echo i486-ncr-sysv4; exit; } ;; -+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -+ && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } -@@ -1124,20 +1155,20 @@ EOF - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; -- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort -- # says -- echo i586-unisys-sysv4 -- exit ;; -+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort -+ # says -+ echo i586-unisys-sysv4 -+ exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 -@@ -1153,33 +1184,36 @@ EOF - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then -- echo mips-nec-sysv${UNAME_RELEASE} -+ echo mips-nec-sysv${UNAME_RELEASE} - else -- echo mips-unknown-sysv${UNAME_RELEASE} -+ echo mips-unknown-sysv${UNAME_RELEASE} - fi -- exit ;; -+ exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; -+ x86_64:Haiku:*:*) -+ echo x86_64-unknown-haiku -+ exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} -@@ -1222,17 +1256,20 @@ EOF - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; -- NSE-?:NONSTOP_KERNEL:*:*) -+ NEO-?:NONSTOP_KERNEL:*:*) -+ echo neo-tandem-nsk${UNAME_RELEASE} -+ exit ;; -+ NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; -@@ -1267,23 +1304,23 @@ EOF - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) -- echo mips-sei-seiux${UNAME_RELEASE} -+ echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) -- UNAME_MACHINE=`(uname -p) 2>/dev/null` -+ UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; -@@ -1291,21 +1328,21 @@ EOF - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; -+ x86_64:VMkernel:*:*) -+ echo ${UNAME_MACHINE}-unknown-esx -+ exit ;; - esac - --#echo '(No uname command or uname output not recognized.)' 1>&2 --#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 -- - eval $set_cc_for_build - cat >$dummy.c < - # include - #endif - main () - { -@@ -1313,21 +1350,21 @@ main () - #if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); - #else - #include - printf ("m68k-sony-newsos%s\n", - #ifdef NEWSOS4 -- "4" -+ "4" - #else -- "" -+ "" - #endif -- ); exit (0); -+ ); exit (0); - #endif - #endif - - #if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); - #endif - - #if defined (hp300) && !defined (hpux) -diff --git a/js/src/ctypes/libffi/config.sub b/js/src/ctypes/libffi/config.sub ---- a/js/src/ctypes/libffi/config.sub -+++ b/js/src/ctypes/libffi/config.sub -@@ -1,43 +1,38 @@ - #! /bin/sh - # Configuration validation subroutine script. - # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, --# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 --# Free Software Foundation, Inc. -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -+# 2011, 2012, 2013 Free Software Foundation, Inc. - --timestamp='2011-01-03' -+timestamp='2012-12-29' - --# This file is (in principle) common to ALL GNU software. --# The presence of a machine in this file suggests that SOME GNU software --# can handle that machine. It does not imply ALL GNU software can. --# --# This file is free software; you can redistribute it and/or modify --# it under the terms of the GNU General Public License as published by --# the Free Software Foundation; either version 2 of the License, or -+# This file is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or - # (at your option) any later version. - # --# This program is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. -+# This program is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+# General Public License for more details. - # - # You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA --# 02110-1301, USA. -+# along with this program; if not, see . - # - # As a special exception to the GNU General Public License, if you - # distribute this file as part of a program that contains a - # configuration script generated by Autoconf, you may include it under --# the same distribution terms that you use for the rest of that program. -+# the same distribution terms that you use for the rest of that -+# program. This Exception is an additional permission under section 7 -+# of the GNU General Public License, version 3 ("GPLv3"). - - --# Please send patches to . Submit a context --# diff and a properly formatted GNU ChangeLog entry. -+# Please send patches with a ChangeLog entry to config-patches@gnu.org. - # - # Configuration subroutine to validate and canonicalize a configuration type. - # Supply the specified configuration type as an argument. - # If it is invalid, we print an error message on stderr and exit with code 1. - # Otherwise, we print the canonical config type on stdout and succeed. - - # You can get the latest version of this script from: - # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD -@@ -70,18 +65,19 @@ Operation modes: - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - - Report bugs and patches to ." - - version="\ - GNU config.sub ($timestamp) - --Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, --2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, -+2012, 2013 Free Software Foundation, Inc. - - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - - help=" - Try \`$me --help' for more information." - - # Parse command line -@@ -118,23 +114,28 @@ case $# in - *) echo "$me: too many arguments$help" >&2 - exit 1;; - esac - - # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). - # Here we must recognize all the valid KERNEL-OS combinations. - maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` - case $maybe_os in -- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ -- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ -+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ -+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ -+ knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ -- storm-chaos* | os2-emx* | rtmk-nova* | wince-winmo*) -+ storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; -+ android-linux) -+ os=-linux-android -+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown -+ ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; - esac - -@@ -147,41 +148,41 @@ case $os in - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -- -apple | -axis | -knuth | -cray | -microblaze) -+ -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 - ;; -- -bluegene*) -- os=-cnk -+ -bluegene*) -+ os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; -- -chorusrdb) -- os=-chorusrdb -+ -chorusrdb) -+ os=-chorusrdb - basic_machine=$1 -- ;; -+ ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) -@@ -216,16 +217,22 @@ case $os in - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; -+ -lynx*178) -+ os=-lynxos178 -+ ;; -+ -lynx*5) -+ os=-lynxos5 -+ ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` -@@ -240,30 +247,37 @@ case $os in - esac - - # Decode aliases for certain CPU-COMPANY combinations. - case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ -+ | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ -- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ -+ | arc \ -+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ -+ | avr | avr32 \ -+ | be32 | be64 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ -+ | epiphany \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ -+ | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ -+ | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ -- | maxq | mb | microblaze | mcore | mep | metag \ -+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ -@@ -276,79 +290,111 @@ case $basic_machine in - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ -+ | nds32 | nds32le | nds32be \ - | nios | nios2 \ - | ns16k | ns32k \ -+ | open8 \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ -- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ -+ | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ -+ | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ -- | spu | strongarm \ -- | tahoe | thumb | tic4x | tic80 | tron \ -- | v850 | v850e \ -+ | spu \ -+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ -+ | ubicom32 \ -+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | we32k \ -- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ -+ | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; -- m6811 | m68hc11 | m6812 | m68hc12) -- # Motorola 68HC11/12. -+ c54x) -+ basic_machine=tic54x-unknown -+ ;; -+ c55x) -+ basic_machine=tic55x-unknown -+ ;; -+ c6x) -+ basic_machine=tic6x-unknown -+ ;; -+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - -+ strongarm | thumb | xscale) -+ basic_machine=arm-unknown -+ ;; -+ xgate) -+ basic_machine=$basic_machine-unknown -+ os=-none -+ ;; -+ xscaleeb) -+ basic_machine=armeb-unknown -+ ;; -+ -+ xscaleel) -+ basic_machine=armel-unknown -+ ;; -+ - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ -+ | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ -+ | be32-* | be64-* \ - | bfin-* | bs2000-* \ -- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ -+ | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ -+ | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ -+ | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ -+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ -+ | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ -@@ -360,34 +406,39 @@ case $basic_machine in - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ -+ | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ -+ | open8-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ -- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ -+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ -- | romp-* | rs6000-* \ -+ | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ -- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ -- | tahoe-* | thumb-* \ -- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ -+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ -+ | tahoe-* \ -+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ -+ | tile*-* \ - | tron-* \ -- | v850-* | v850e-* | vax-* \ -+ | ubicom32-* \ -+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ -+ | vax-* \ - | we32k-* \ -- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ -+ | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; -@@ -402,17 +453,17 @@ case $basic_machine in - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; -- abacus) -+ abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant -@@ -472,21 +523,30 @@ case $basic_machine in - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; -+ c54x-*) -+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ c55x-*) -+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ c6x-*) -+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; -- cegcc) -+ cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) -@@ -508,17 +568,17 @@ case $basic_machine in - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; -- cr16) -+ cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis -@@ -666,17 +726,16 @@ case $basic_machine in - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; --# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; -@@ -724,19 +783,23 @@ case $basic_machine in - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; -- microblaze) -+ microblaze*) - basic_machine=microblaze-xilinx - ;; -+ mingw64) -+ basic_machine=x86_64-pc -+ os=-mingw64 -+ ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; -@@ -763,20 +826,28 @@ case $basic_machine in - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; -+ msys) -+ basic_machine=i386-pc -+ os=-msys -+ ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; -+ nacl) -+ basic_machine=le32-unknown -+ os=-nacl -+ ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; -@@ -831,16 +902,22 @@ case $basic_machine in - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; -+ neo-tandem) -+ basic_machine=neo-tandem -+ ;; -+ nse-tandem) -+ basic_machine=nse-tandem -+ ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) -@@ -913,44 +990,49 @@ case $basic_machine in - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; -- ppc) basic_machine=powerpc-unknown -+ ppc | ppcbe) basic_machine=powerpc-unknown - ;; -- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ppc-* | ppcbe-*) -+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; -- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; -- rdos) -+ rdos | rdos64) -+ basic_machine=x86_64-pc -+ os=-rdos -+ ;; -+ rdos32) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) -@@ -1009,16 +1091,19 @@ case $basic_machine in - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; -+ strongarm-* | thumb-*) -+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) -@@ -1065,30 +1150,18 @@ case $basic_machine in - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; -- tic54x | c54x*) -- basic_machine=tic54x-unknown -- os=-coff -- ;; -- tic55x | c55x*) -- basic_machine=tic55x-unknown -- os=-coff -- ;; -- tic6x | c6x*) -- basic_machine=tic6x-unknown -- os=-coff -- ;; - tile*) -- basic_machine=tile-unknown -+ basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; -@@ -1148,16 +1221,19 @@ case $basic_machine in - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; -+ xscale-* | xscalee[bl]-*) -+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` -+ ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; -@@ -1245,19 +1321,22 @@ case $basic_machine in - ;; - esac - - # Decode manufacturer-specific aliases for certain operating systems. - - if [ x"$os" != x"" ] - then - case $os in -- # First match some system type aliases -- # that might get confused with valid system types. -+ # First match some system type aliases -+ # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. -+ -auroraux) -+ os=-auroraux -+ ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 -@@ -1269,39 +1348,40 @@ case $os in - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ -- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ -- | -kopensolaris* \ -+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ -+ | -sym* | -kopensolaris* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ -- | -openbsd* | -solidbsd* \ -+ | -bitrig* | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ -- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ -+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ -+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -winmo*) -+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os -@@ -1330,22 +1410,19 @@ case $os in - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; -- -os400*) -+ -os400*) - os=-os400 - ;; -- -wince-winmo*) -- os=-wince-winmo -- ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf -@@ -1382,17 +1459,17 @@ case $os in - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; -- -tpf*) -+ -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; -@@ -1427,19 +1504,18 @@ case $os in - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; -- -android*) -- os=-android -- ;; -+ -nacl*) -+ ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -@@ -1452,33 +1528,45 @@ else - - # Note that if you're going to try to match "-MANUFACTURER" here (say, - # "-sun"), then you have to tell the case statement up towards the top - # that MANUFACTURER isn't an operating system. Otherwise, code above - # will signal an error saying that MANUFACTURER isn't an operating - # system, and we'll never get to this point. - - case $basic_machine in -- score-*) -+ score-*) - os=-elf - ;; -- spu-*) -+ spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; -- c4x-* | tic4x-*) -- os=-coff -+ c4x-* | tic4x-*) -+ os=-coff -+ ;; -+ hexagon-*) -+ os=-elf -+ ;; -+ tic54x-*) -+ os=-coff -+ ;; -+ tic55x-*) -+ os=-coff -+ ;; -+ tic6x-*) -+ os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; -@@ -1488,24 +1576,21 @@ case $basic_machine in - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 -- # This also exists in the configure program, but was not the -- # default. -- # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; -- mep-*) -+ mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; -@@ -1522,17 +1607,17 @@ case $basic_machine in - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; -- *-knuth) -+ *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; -@@ -1684,19 +1769,16 @@ case $basic_machine in - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; -- *-android*|*-linuxandroid*) -- vendor=linux- -- ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; - esac - - echo $basic_machine$os - exit - -diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure ---- a/js/src/ctypes/libffi/configure -+++ b/js/src/ctypes/libffi/configure -@@ -1,18 +1,16 @@ - #! /bin/sh - # Guess values for system-dependent variables and create Makefiles. --# Generated by GNU Autoconf 2.65 for libffi 3.0.10rc0. -+# Generated by GNU Autoconf 2.69 for libffi 3.1-rc1. - # --# Report bugs to . -+# Report bugs to . - # - # --# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, --# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, --# Inc. -+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. - # - # - # This configure script is free software; the Free Software Foundation - # gives unlimited permission to copy, distribute and modify it. - ## -------------------- ## - ## M4sh Initialization. ## - ## -------------------- ## - -@@ -86,16 +84,17 @@ fi - # IFS - # We need space, tab and new line, in precisely that order. Quoting is - # there to prevent editors from complaining about space-tab. - # (If _AS_PATH_WALK were called with IFS unset, it would disable word - # splitting by setting IFS to empty value.) - IFS=" "" $as_nl" - - # Find who we are. Look in the path if we contain no directory separator. -+as_myself= - case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -@@ -130,16 +129,41 @@ PS4='+ ' - LC_ALL=C - export LC_ALL - LANGUAGE=C - export LANGUAGE - - # CDPATH. - (unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -+# Use a proper internal environment variable to ensure we don't fall -+ # into an infinite loop, continuously re-executing ourselves. -+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then -+ _as_can_reexec=no; export _as_can_reexec; -+ # We cannot yet assume a decent shell, so we have to provide a -+# neutralization value for shells without unset; and this also -+# works around shells that cannot unset nonexistent variables. -+# Preserve -v and -x to the replacement shell. -+BASH_ENV=/dev/null -+ENV=/dev/null -+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -+case $- in # (((( -+ *v*x* | *x*v* ) as_opts=-vx ;; -+ *v* ) as_opts=-v ;; -+ *x* ) as_opts=-x ;; -+ * ) as_opts= ;; -+esac -+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -+# Admittedly, this is quite paranoid, since all the known shells bail -+# out after a failed `exec'. -+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -+as_fn_exit 255 -+ fi -+ # We don't want this to propagate to other subprocesses. -+ { _as_can_reexec=; unset _as_can_reexec;} - if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -@@ -163,21 +187,30 @@ as_fn_success || { exitcode=1; echo as_f - as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } - as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } - as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } - if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - - else - exitcode=1; echo positional parameters were not saved. - fi --test x\$exitcode = x0 || exit 1" -+test x\$exitcode = x0 || exit 1 -+test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -+ -+ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( -+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO -+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO -+ PATH=/empty FPATH=/empty; export PATH FPATH -+ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ -+ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 - test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes - else - as_have_required=no - fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -@@ -208,36 +241,47 @@ done - $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes - fi; } - IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : -- # We cannot yet assume a decent shell, so we have to provide a -- # neutralization value for shells without unset; and this also -- # works around shells that cannot unset nonexistent variables. -- BASH_ENV=/dev/null -- ENV=/dev/null -- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -- export CONFIG_SHELL -- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -+ export CONFIG_SHELL -+ # We cannot yet assume a decent shell, so we have to provide a -+# neutralization value for shells without unset; and this also -+# works around shells that cannot unset nonexistent variables. -+# Preserve -v and -x to the replacement shell. -+BASH_ENV=/dev/null -+ENV=/dev/null -+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -+case $- in # (((( -+ *v*x* | *x*v* ) as_opts=-vx ;; -+ *v* ) as_opts=-v ;; -+ *x* ) as_opts=-x ;; -+ * ) as_opts= ;; -+esac -+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -+# Admittedly, this is quite paranoid, since all the known shells bail -+# out after a failed `exec'. -+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -+exit 255 - fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and --$0: http://gcc.gnu.org/bugs.html about your system, --$0: including any error possibly output before this -+$0: http://github.com/atgreen/libffi/issues about your -+$0: system, including any error possibly output before this - $0: message. Then install a modern shell, or manually run - $0: the script under such a shell if you do have one." - fi - exit 1 - fi - fi - fi - SHELL=${CONFIG_SHELL-/bin/sh} -@@ -314,20 +358,28 @@ as_fn_mkdir_p () - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" -- } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" -+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - - } # as_fn_mkdir_p -+ -+# as_fn_executable_p FILE -+# ----------------------- -+# Test if FILE is an executable regular file. -+as_fn_executable_p () -+{ -+ test -f "$1" && test -x "$1" -+} # as_fn_executable_p - # as_fn_append VAR VALUE - # ---------------------- - # Append the text in VALUE to the end of the definition contained in VAR. Take - # advantage of any shell optimizations that allow amortized linear growth over - # repeated appends, instead of the typical quadratic growth present in naive - # implementations. - if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () -@@ -354,29 +406,29 @@ if (eval "test \$(( 1 + 1 )) = 2") 2>/de - else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } - fi # as_fn_arith - - --# as_fn_error ERROR [LINENO LOG_FD] --# --------------------------------- -+# as_fn_error STATUS ERROR [LINENO LOG_FD] -+# ---------------------------------------- - # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are - # provided, also output the error to LOG_FD, referencing LINENO. Then exit the --# script with status $?, using 1 if that was 0. -+# script with STATUS, using 1 if that was 0. - as_fn_error () - { -- as_status=$?; test $as_status -eq 0 && as_status=1 -- if test "$3"; then -- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 -- fi -- $as_echo "$as_me: error: $1" >&2 -+ as_status=$1; test $as_status -eq 0 && as_status=1 -+ if test "$4"; then -+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 -+ fi -+ $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status - } # as_fn_error - - if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr - else - as_expr=false -@@ -439,16 +491,20 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - -+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have -+ # already done that, so ensure we don't try to do so again and fall -+ # in an infinite loop. This has already happened in practice. -+ _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit - } - -@@ -473,221 +529,54 @@ else - mkdir conf$$.dir 2>/dev/null - fi - if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. -- # In both cases, we have to default to `cp -p'. -+ # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || -- as_ln_s='cp -p' -+ as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else -- as_ln_s='cp -p' -- fi --else -- as_ln_s='cp -p' -+ as_ln_s='cp -pR' -+ fi -+else -+ as_ln_s='cp -pR' - fi - rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file - rmdir conf$$.dir 2>/dev/null - - if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' - else - test -d ./-p && rmdir ./-p - as_mkdir_p=false - fi - --if test -x / >/dev/null 2>&1; then -- as_test_x='test -x' --else -- if ls -dL / >/dev/null 2>&1; then -- as_ls_L_option=L -- else -- as_ls_L_option= -- fi -- as_test_x=' -- eval sh -c '\'' -- if test -d "$1"; then -- test -d "$1/."; -- else -- case $1 in #( -- -*)set "./$1";; -- esac; -- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( -- ???[sx]*):;;*)false;;esac;fi -- '\'' sh -- ' --fi --as_executable_p=$as_test_x -+as_test_x='test -x' -+as_executable_p=as_fn_executable_p - - # Sed expression to map a string onto a valid CPP name. - as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - - # Sed expression to map a string onto a valid variable name. - as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -- -- --# Check that we are running under the correct shell. - SHELL=${CONFIG_SHELL-/bin/sh} - --case X$lt_ECHO in --X*--fallback-echo) -- # Remove one level of quotation (which was required for Make). -- ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` -- ;; --esac -- --ECHO=${lt_ECHO-echo} --if test "X$1" = X--no-reexec; then -- # Discard the --no-reexec flag, and continue. -- shift --elif test "X$1" = X--fallback-echo; then -- # Avoid inline document here, it may be left over -- : --elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then -- # Yippee, $ECHO works! -- : --else -- # Restart under the correct shell. -- exec $SHELL "$0" --no-reexec ${1+"$@"} --fi -- --if test "X$1" = X--fallback-echo; then -- # used as fallback echo -- shift -- cat <<_LT_EOF --$* --_LT_EOF -- exit 0 --fi -- --# The HP-UX ksh and POSIX shell print the target directory to stdout --# if CDPATH is set. --(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -- --if test -z "$lt_ECHO"; then -- if test "X${echo_test_string+set}" != Xset; then -- # find a string as large as possible, as long as the shell can cope with it -- for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do -- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... -- if { echo_test_string=`eval $cmd`; } 2>/dev/null && -- { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null -- then -- break -- fi -- done -- fi -- -- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- : -- else -- # The Solaris, AIX, and Digital Unix default echo programs unquote -- # backslashes. This makes it impossible to quote backslashes using -- # echo "$something" | sed 's/\\/\\\\/g' -- # -- # So, first we look for a working echo in the user's PATH. -- -- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for dir in $PATH /usr/ucb; do -- IFS="$lt_save_ifs" -- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && -- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && -- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- ECHO="$dir/echo" -- break -- fi -- done -- IFS="$lt_save_ifs" -- -- if test "X$ECHO" = Xecho; then -- # We didn't find a better echo, so look for alternatives. -- if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- # This shell has a builtin print -r that does the trick. -- ECHO='print -r' -- elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && -- test "X$CONFIG_SHELL" != X/bin/ksh; then -- # If we have ksh, try running configure again with it. -- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -- export ORIGINAL_CONFIG_SHELL -- CONFIG_SHELL=/bin/ksh -- export CONFIG_SHELL -- exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} -- else -- # Try using printf. -- ECHO='printf %s\n' -- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- # Cool, printf works -- : -- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && -- test "X$echo_testing_string" = 'X\t' && -- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL -- export CONFIG_SHELL -- SHELL="$CONFIG_SHELL" -- export SHELL -- ECHO="$CONFIG_SHELL $0 --fallback-echo" -- elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && -- test "X$echo_testing_string" = 'X\t' && -- echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- ECHO="$CONFIG_SHELL $0 --fallback-echo" -- else -- # maybe with a smaller string... -- prev=: -- -- for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do -- if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null -- then -- break -- fi -- prev="$cmd" -- done -- -- if test "$prev" != 'sed 50q "$0"'; then -- echo_test_string=`eval $prev` -- export echo_test_string -- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} -- else -- # Oops. We lost completely, so just stick with echo. -- ECHO=echo -- fi -- fi -- fi -- fi -- fi --fi -- --# Copy echo and quote the copy suitably for passing to libtool from --# the Makefile, instead of quoting the original, which is used later. --lt_ECHO=$ECHO --if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then -- lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" --fi -- -- -- - - test -n "$DJDIR" || exec 7<&0 &1 - - # Name of the host. --# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, - # so uname gets run too. - ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - - # - # Initializations. - # - ac_default_prefix=/usr/local - ac_clean_files= -@@ -696,19 +585,19 @@ LIBOBJS= - cross_compiling=no - subdirs= - MFLAGS= - MAKEFLAGS= - - # Identity of this package. - PACKAGE_NAME='libffi' - PACKAGE_TARNAME='libffi' --PACKAGE_VERSION='3.0.10rc0' --PACKAGE_STRING='libffi 3.0.10rc0' --PACKAGE_BUGREPORT='http://gcc.gnu.org/bugs.html' -+PACKAGE_VERSION='3.1-rc1' -+PACKAGE_STRING='libffi 3.1-rc1' -+PACKAGE_BUGREPORT='http://github.com/atgreen/libffi/issues' - PACKAGE_URL='' - - # Factoring default headers for most tests. - ac_includes_default="\ - #include - #ifdef HAVE_SYS_TYPES_H - # include - #endif -@@ -747,19 +636,29 @@ am__EXEEXT_TRUE - LTLIBOBJS - LIBOBJS - toolexeclibdir - toolexecdir - FFI_DEBUG_FALSE - FFI_DEBUG_TRUE - TARGETDIR - TARGET -+FFI_EXEC_TRAMPOLINE_TABLE -+FFI_EXEC_TRAMPOLINE_TABLE_FALSE -+FFI_EXEC_TRAMPOLINE_TABLE_TRUE - sys_symbol_underscore -+HAVE_LONG_DOUBLE_VARIANT - HAVE_LONG_DOUBLE - ALLOCA -+XTENSA_FALSE -+XTENSA_TRUE -+VAX_FALSE -+VAX_TRUE -+TILE_FALSE -+TILE_TRUE - PA64_HPUX_FALSE - PA64_HPUX_TRUE - PA_HPUX_FALSE - PA_HPUX_TRUE - PA_LINUX_FALSE - PA_LINUX_TRUE - SH64_FALSE - SH64_TRUE -@@ -772,64 +671,85 @@ S390_TRUE - FRV_FALSE - FRV_TRUE - LIBFFI_CRIS_FALSE - LIBFFI_CRIS_TRUE - AVR32_FALSE - AVR32_TRUE - ARM_FALSE - ARM_TRUE -+ARC_FALSE -+ARC_TRUE -+AARCH64_FALSE -+AARCH64_TRUE - POWERPC_FREEBSD_FALSE - POWERPC_FREEBSD_TRUE - POWERPC_DARWIN_FALSE - POWERPC_DARWIN_TRUE - POWERPC_AIX_FALSE - POWERPC_AIX_TRUE - POWERPC_FALSE - POWERPC_TRUE -+NIOS2_FALSE -+NIOS2_TRUE - MOXIE_FALSE - MOXIE_TRUE -+METAG_FALSE -+METAG_TRUE -+MICROBLAZE_FALSE -+MICROBLAZE_TRUE -+M88K_FALSE -+M88K_TRUE - M68K_FALSE - M68K_TRUE - M32R_FALSE - M32R_TRUE - IA64_FALSE - IA64_TRUE - ALPHA_FALSE - ALPHA_TRUE -+X86_DARWIN64_FALSE -+X86_DARWIN64_TRUE -+X86_DARWIN32_FALSE -+X86_DARWIN32_TRUE - X86_DARWIN_FALSE - X86_DARWIN_TRUE - X86_WIN64_FALSE - X86_WIN64_TRUE - X86_WIN32_FALSE - X86_WIN32_TRUE - X86_FREEBSD_FALSE - X86_FREEBSD_TRUE - X86_FALSE - X86_TRUE - SPARC_FALSE - SPARC_TRUE -+BFIN_FALSE -+BFIN_TRUE - MIPS_FALSE - MIPS_TRUE - AM_LTLDFLAGS - AM_RUNTESTFLAGS - TESTSUBDIR_FALSE - TESTSUBDIR_TRUE - MAINT - MAINTAINER_MODE_FALSE - MAINTAINER_MODE_TRUE -+PRTDIAG - CPP - OTOOL64 - OTOOL - LIPO - NMEDIT - DSYMUTIL --lt_ECHO -+MANIFEST_TOOL - RANLIB -+ac_ct_AR - AR -+DLLTOOL - OBJDUMP - LN_S - NM - ac_ct_DUMPBIN - DUMPBIN - LD - FGREP - EGREP -@@ -839,29 +759,34 @@ LIBTOOL - am__fastdepCCAS_FALSE - am__fastdepCCAS_TRUE - CCASDEPMODE - CCASFLAGS - CCAS - am__fastdepCC_FALSE - am__fastdepCC_TRUE - CCDEPMODE -+am__nodep - AMDEPBACKSLASH - AMDEP_FALSE - AMDEP_TRUE - am__quote - am__include - DEPDIR - OBJEXT - EXEEXT - ac_ct_CC - CPPFLAGS - LDFLAGS - CFLAGS - CC -+AM_BACKSLASH -+AM_DEFAULT_VERBOSITY -+AM_DEFAULT_V -+AM_V - am__untar - am__tar - AMTAR - am__leading_dot - SET_MAKE - AWK - mkdir_p - MKDIR_P -@@ -875,16 +800,17 @@ AUTOCONF - ACLOCAL - VERSION - PACKAGE - CYGPATH_W - am__isrc - INSTALL_DATA - INSTALL_SCRIPT - INSTALL_PROGRAM -+ax_enable_builddir_sed - target_os - target_vendor - target_cpu - target - host_os - host_vendor - host_cpu - host -@@ -928,24 +854,30 @@ PACKAGE_STRING - PACKAGE_VERSION - PACKAGE_TARNAME - PACKAGE_NAME - PATH_SEPARATOR - SHELL' - ac_subst_files='' - ac_user_opts=' - enable_option_checking -+enable_builddir -+enable_silent_rules - enable_dependency_tracking - enable_shared - enable_static - with_pic - enable_fast_install - with_gnu_ld -+with_sysroot - enable_libtool_lock -+enable_portable_binary -+with_gcc_arch - enable_maintainer_mode -+enable_pax_emutramp - enable_debug - enable_structs - enable_raw_api - enable_purify_safety - ' - ac_precious_vars='build_alias - host_alias - target_alias -@@ -1010,18 +942,19 @@ do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in -- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; -- *) ac_optarg=yes ;; -+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; -+ *=) ac_optarg= ;; -+ *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - -@@ -1056,17 +989,17 @@ do - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && -- as_fn_error "invalid feature name: $ac_useropt" -+ as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" - "enable_$ac_useropt" - "*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; -@@ -1082,17 +1015,17 @@ do - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && -- as_fn_error "invalid feature name: $ac_useropt" -+ as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" - "enable_$ac_useropt" - "*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; -@@ -1286,33 +1219,33 @@ do - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && -- as_fn_error "invalid package name: $ac_useropt" -+ as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" - "with_$ac_useropt" - "*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && -- as_fn_error "invalid package name: $ac_useropt" -+ as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" - "with_$ac_useropt" - "*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; -@@ -1332,50 +1265,50 @@ do - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - -- -*) as_fn_error "unrecognized option: \`$ac_option' --Try \`$0 --help' for more information." -+ -*) as_fn_error $? "unrecognized option: \`$ac_option' -+Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) -- as_fn_error "invalid variable name: \`$ac_envvar'" ;; -+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 -- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} -+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac - done - - if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` -- as_fn_error "missing argument to $ac_option" -+ as_fn_error $? "missing argument to $ac_option" - fi - - if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; -- fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; -+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac - fi - - # Check all directory arguments for consistency. - for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ -@@ -1388,49 +1321,47 @@ do - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac -- as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" -+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" - done - - # There might be people who depend on the old broken behavior: `$host' - # used to hold the argument of --host etc. - # FIXME: To remove some day. - build=$build_alias - host=$host_alias - target=$target_alias - - # FIXME: To remove some day. - if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe -- $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. -- If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi - fi - - ac_tool_prefix= - test -n "$host_alias" && ac_tool_prefix=$host_alias- - - test "$silent" = yes && exec 6>/dev/null - - - ac_pwd=`pwd` && test -n "$ac_pwd" && - ac_ls_di=`ls -di .` && - ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || -- as_fn_error "working directory cannot be determined" -+ as_fn_error $? "working directory cannot be determined" - test "X$ac_ls_di" = "X$ac_pwd_ls_di" || -- as_fn_error "pwd does not report name of working directory" -+ as_fn_error $? "pwd does not report name of working directory" - - - # Find the source files, if location was not specified. - if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || - $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -@@ -1459,21 +1390,21 @@ if test -z "$srcdir"; then - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi - else - ac_srcdir_defaulted=no - fi - if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." -- as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" -+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" - fi - ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" - ac_abs_confdir=`( -- cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" -+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` - # When building in place, set srcdir=. - if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. - fi - # Remove unnecessary trailing slashes from srcdir. - # Double slashes in file names in object file debugging info - # mess up M-x gdb in Emacs. -@@ -1489,31 +1420,31 @@ done - - # - # Report the --help message. - # - if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF --\`configure' configures libffi 3.0.10rc0 to adapt to many kinds of systems. -+\`configure' configures libffi 3.1-rc1 to adapt to many kinds of systems. - - Usage: $0 [OPTION]... [VAR=VALUE]... - - To assign environment variables (e.g., CC, CFLAGS...), specify them as - VAR=VALUE. See below for descriptions of some of the useful variables. - - Defaults for the options are specified in brackets. - - Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit -- -q, --quiet, --silent do not print \`checking...' messages -+ -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - - Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] -@@ -1560,61 +1491,76 @@ System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] - _ACEOF - fi - - if test -n "$ac_init_help"; then - case $ac_init_help in -- short | recursive ) echo "Configuration of libffi 3.0.10rc0:";; -+ short | recursive ) echo "Configuration of libffi 3.1-rc1:";; - esac - cat <<\_ACEOF - - Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] -- --disable-dependency-tracking speeds up one-time build -- --enable-dependency-tracking do not reject slow dependency extractors -+ --disable-builddir disable automatic build in subdir of sources -+ -+ --enable-silent-rules less verbose build output (undo: "make V=1") -+ --disable-silent-rules verbose build output (undo: "make V=0") -+ --enable-dependency-tracking -+ do not reject slow dependency extractors -+ --disable-dependency-tracking -+ speeds up one-time build - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) -- --enable-maintainer-mode enable make rules and dependencies not useful -- (and sometimes confusing) to the casual installer -+ --enable-portable-binary -+ disable compiler optimizations that would produce -+ unportable binaries -+ --enable-maintainer-mode -+ enable make rules and dependencies not useful (and -+ sometimes confusing) to the casual installer -+ --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC - --enable-debug debugging mode - --disable-structs omit code for struct support - --disable-raw-api make the raw api unavailable - --enable-purify-safety purify-safe mode - - Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) -- --with-pic try to use only PIC/non-PIC objects [default=use -+ --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] -+ --with-sysroot=DIR Search for dependent libraries within DIR -+ (or the compiler's sysroot if not specified). -+ --with-gcc-arch= use architecture for gcc -march/-mtune, -+ instead of guessing - - Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CCAS assembler compiler command (defaults to CC) - CCASFLAGS assembler compiler flags (defaults to CFLAGS) - CPP C preprocessor - - Use these variables to override the choices made by `configure' or to help - it to find libraries and programs with nonstandard names/locations. - --Report bugs to . -+Report bugs to . - _ACEOF - ac_status=$? - fi - - if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || -@@ -1667,20 +1613,20 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_ - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done - fi - - test -n "$ac_init_help" && exit $ac_status - if $ac_init_version; then - cat <<\_ACEOF --libffi configure 3.0.10rc0 --generated by GNU Autoconf 2.65 -- --Copyright (C) 2009 Free Software Foundation, Inc. -+libffi configure 3.1-rc1 -+generated by GNU Autoconf 2.69 -+ -+Copyright (C) 2012 Free Software Foundation, Inc. - This configure script is free software; the Free Software Foundation - gives unlimited permission to copy, distribute and modify it. - _ACEOF - exit - fi - - ## ------------------------ ## - ## Autoconf initialization. ## -@@ -1714,17 +1660,17 @@ eval ac_try_echo="\"\$as_me:${as_lineno- - } && test -s conftest.$ac_objext; then : - ac_retval=0 - else - $as_echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 - fi -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - - } # ac_fn_c_try_compile - - # ac_fn_c_try_link LINENO - # ----------------------- - # Try to link conftest.$ac_ext, and return whether this succeeded. - ac_fn_c_try_link () -@@ -1746,45 +1692,45 @@ eval ac_try_echo="\"\$as_me:${as_lineno- - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -+ test -x conftest$ac_exeext - }; then : - ac_retval=0 - else - $as_echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 - fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - - } # ac_fn_c_try_link - - # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES - # ------------------------------------------------------- - # Tests whether HEADER exists and can be compiled using the include files in - # INCLUDES, setting the cache variable VAR accordingly. - ac_fn_c_check_header_compile () - { - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 - $as_echo_n "checking for $2... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -+if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - $4 - #include <$2> - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : -@@ -1792,17 +1738,17 @@ if ac_fn_c_try_compile "$LINENO"; then : - else - eval "$3=no" - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 - $as_echo "$ac_res" >&6; } -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - - } # ac_fn_c_check_header_compile - - # ac_fn_c_try_cpp LINENO - # ---------------------- - # Try to preprocess conftest.$ac_ext, and return whether this succeeded. - ac_fn_c_try_cpp () - { -@@ -1817,28 +1763,28 @@ eval ac_try_echo="\"\$as_me:${as_lineno- - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } >/dev/null && { -+ test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 - else - $as_echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 - fi -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - - } # ac_fn_c_try_cpp - - # ac_fn_c_try_run LINENO - # ---------------------- - # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes - # that executables *can* be run. -@@ -1870,30 +1816,30 @@ eval ac_try_echo="\"\$as_me:${as_lineno- - else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status - fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - - } # ac_fn_c_try_run - - # ac_fn_c_check_func LINENO FUNC VAR - # ---------------------------------- - # Tests whether FUNC exists, setting the cache variable VAR accordingly - ac_fn_c_check_func () - { - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 - $as_echo_n "checking for $2... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -+if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - /* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ - #define $2 innocuous_$2 - -@@ -1938,32 +1884,215 @@ else - eval "$3=no" - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi - eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 - $as_echo "$ac_res" >&6; } -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - - } # ac_fn_c_check_func - -+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -+# -------------------------------------------- -+# Tries to find the compile-time value of EXPR in a program that includes -+# INCLUDES, setting VAR accordingly. Returns whether the value could be -+# computed -+ac_fn_c_compute_int () -+{ -+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ if test "$cross_compiling" = yes; then -+ # Depending upon the size, compute the lo and hi bounds. -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+int -+main () -+{ -+static int test_array [1 - 2 * !(($2) >= 0)]; -+test_array [0] = 0; -+return test_array [0]; -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+int -+main () -+{ -+static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -+test_array [0] = 0; -+return test_array [0]; -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_hi=$ac_mid; break -+else -+ as_fn_arith $ac_mid + 1 && ac_lo=$as_val -+ if test $ac_lo -le $ac_mid; then -+ ac_lo= ac_hi= -+ break -+ fi -+ as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+int -+main () -+{ -+static int test_array [1 - 2 * !(($2) < 0)]; -+test_array [0] = 0; -+return test_array [0]; -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_hi=-1 ac_mid=-1 -+ while :; do -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+int -+main () -+{ -+static int test_array [1 - 2 * !(($2) >= $ac_mid)]; -+test_array [0] = 0; -+return test_array [0]; -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_lo=$ac_mid; break -+else -+ as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val -+ if test $ac_mid -le $ac_hi; then -+ ac_lo= ac_hi= -+ break -+ fi -+ as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ ac_lo= ac_hi= -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+# Binary search between lo and hi bounds. -+while test "x$ac_lo" != "x$ac_hi"; do -+ as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+int -+main () -+{ -+static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -+test_array [0] = 0; -+return test_array [0]; -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_hi=$ac_mid -+else -+ as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in #(( -+?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -+'') ac_retval=1 ;; -+esac -+ else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+static long int longval () { return $2; } -+static unsigned long int ulongval () { return $2; } -+#include -+#include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ return 1; -+ if (($2) < 0) -+ { -+ long int i = longval (); -+ if (i != ($2)) -+ return 1; -+ fprintf (f, "%ld", i); -+ } -+ else -+ { -+ unsigned long int i = ulongval (); -+ if (i != ($2)) -+ return 1; -+ fprintf (f, "%lu", i); -+ } -+ /* Do not output a trailing newline, as this causes \r\n confusion -+ on some platforms. */ -+ return ferror (f) || fclose (f) != 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ echo >>conftest.val; read $3 &5 - $as_echo_n "checking for $2... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -+if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 - fi - eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 - $as_echo "$ac_res" >&6; } - else - # Is the header compilable? - { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -@@ -1989,17 +2118,17 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ - /* end confdefs.h. */ - #include <$2> - _ACEOF - if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes - else - ac_header_preproc=no - fi --rm -f conftest.err conftest.$ac_ext -+rm -f conftest.err conftest.i conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 - $as_echo "$ac_header_preproc" >&6; } - - # So? What about this header? - case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 - $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} -@@ -2012,222 +2141,96 @@ case $ac_header_compiler:$ac_header_prep - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 - $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 - $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 - $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 - $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} --( cat <<\_ASBOX --## ------------------------------------------- ## --## Report this to http://gcc.gnu.org/bugs.html ## --## ------------------------------------------- ## --_ASBOX -+( $as_echo "## ------------------------------------------------------ ## -+## Report this to http://github.com/atgreen/libffi/issues ## -+## ------------------------------------------------------ ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 - $as_echo_n "checking for $2... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -+if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 - else - eval "$3=\$ac_header_compiler" - fi - eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 - $as_echo "$ac_res" >&6; } - fi -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - - } # ac_fn_c_check_header_mongrel - --# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES --# -------------------------------------------- --# Tries to find the compile-time value of EXPR in a program that includes --# INCLUDES, setting VAR accordingly. Returns whether the value could be --# computed --ac_fn_c_compute_int () -+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -+# ------------------------------------------- -+# Tests whether TYPE exists after having included INCLUDES, setting cache -+# variable VAR accordingly. -+ac_fn_c_check_type () - { - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- if test "$cross_compiling" = yes; then -- # Depending upon the size, compute the lo and hi bounds. --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -+$as_echo_n "checking for $2... " >&6; } -+if eval \${$3+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ eval "$3=no" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - $4 - int - main () - { --static int test_array [1 - 2 * !(($2) >= 0)]; --test_array [0] = 0 -- -+if (sizeof ($2)) -+ return 0; - ; - return 0; - } - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : -- ac_lo=0 ac_mid=0 -- while :; do -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - $4 - int - main () - { --static int test_array [1 - 2 * !(($2) <= $ac_mid)]; --test_array [0] = 0 -- -+if (sizeof (($2))) -+ return 0; - ; - return 0; - } - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : -- ac_hi=$ac_mid; break --else -- as_fn_arith $ac_mid + 1 && ac_lo=$as_val -- if test $ac_lo -le $ac_mid; then -- ac_lo= ac_hi= -- break -- fi -- as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -+ -+else -+ eval "$3=yes" - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -- done --else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --$4 --int --main () --{ --static int test_array [1 - 2 * !(($2) < 0)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -- ac_hi=-1 ac_mid=-1 -- while :; do -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --$4 --int --main () --{ --static int test_array [1 - 2 * !(($2) >= $ac_mid)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -- ac_lo=$ac_mid; break --else -- as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val -- if test $ac_mid -le $ac_hi; then -- ac_lo= ac_hi= -- break -- fi -- as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -- done --else -- ac_lo= ac_hi= --fi --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --# Binary search between lo and hi bounds. --while test "x$ac_lo" != "x$ac_hi"; do -- as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --$4 --int --main () --{ --static int test_array [1 - 2 * !(($2) <= $ac_mid)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -- ac_hi=$ac_mid --else -- as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val --fi --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --done --case $ac_lo in #(( --?*) eval "$3=\$ac_lo"; ac_retval=0 ;; --'') ac_retval=1 ;; --esac -- else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --$4 --static long int longval () { return $2; } --static unsigned long int ulongval () { return $2; } --#include --#include --int --main () --{ -- -- FILE *f = fopen ("conftest.val", "w"); -- if (! f) -- return 1; -- if (($2) < 0) -- { -- long int i = longval (); -- if (i != ($2)) -- return 1; -- fprintf (f, "%ld", i); -- } -- else -- { -- unsigned long int i = ulongval (); -- if (i != ($2)) -- return 1; -- fprintf (f, "%lu", i); -- } -- /* Do not output a trailing newline, as this causes \r\n confusion -- on some platforms. */ -- return ferror (f) || fclose (f) != 0; -- -- ; -- return 0; --} --_ACEOF --if ac_fn_c_try_run "$LINENO"; then : -- echo >>conftest.val; read $3 &5 -+$as_echo "$ac_res" >&6; } -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -+ -+} # ac_fn_c_check_type - cat >config.log <<_ACEOF - This file contains any messages produced by compilers while - running configure, to aid debugging if configure makes a mistake. - --It was created by libffi $as_me 3.0.10rc0, which was --generated by GNU Autoconf 2.65. Invocation command line was -+It was created by libffi $as_me 3.1-rc1, which was -+generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - - _ACEOF - exec 5>>config.log - { - cat <<_ASUNAME - ## --------- ## -@@ -2327,21 +2330,19 @@ done - # would cause problems or look ugly. - # WARNING: Use '\'' to represent an apostrophe within the trap. - # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. - trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - -- cat <<\_ASBOX --## ---------------- ## -+ $as_echo "## ---------------- ## - ## Cache variables. ## --## ---------------- ## --_ASBOX -+## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, - ( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( -@@ -2365,56 +2366,50 @@ trap 'exit_status=$? - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort - ) - echo - -- cat <<\_ASBOX --## ----------------- ## -+ $as_echo "## ----------------- ## - ## Output variables. ## --## ----------------- ## --_ASBOX -+## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then -- cat <<\_ASBOX --## ------------------- ## -+ $as_echo "## ------------------- ## - ## File substitutions. ## --## ------------------- ## --_ASBOX -+## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then -- cat <<\_ASBOX --## ----------- ## -+ $as_echo "## ----------- ## - ## confdefs.h. ## --## ----------- ## --_ASBOX -+## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 -@@ -2459,32 +2454,41 @@ cat >>confdefs.h <<_ACEOF - _ACEOF - - - # Let the site file select an alternate cache file if it wants to. - # Prefer an explicitly selected file to automatically selected ones. - ac_site_file1=NONE - ac_site_file2=NONE - if test -n "$CONFIG_SITE"; then -- ac_site_file1=$CONFIG_SITE -+ # We do not want a PATH search for config.site. -+ case $CONFIG_SITE in #(( -+ -*) ac_site_file1=./$CONFIG_SITE;; -+ */*) ac_site_file1=$CONFIG_SITE;; -+ *) ac_site_file1=./$CONFIG_SITE;; -+ esac - elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site - else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site - fi - for ac_site_file in "$ac_site_file1" "$ac_site_file2" - do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 - $as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 -- . "$ac_site_file" -+ . "$ac_site_file" \ -+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error $? "failed to load site script $ac_site_file -+See \`config.log' for more details" "$LINENO" 5; } - fi - done - - if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -@@ -2550,17 +2554,17 @@ for ac_var in $ac_precious_vars; do - esac - fi - done - if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 - $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} -- as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 - fi - ## -------------------- ## - ## Main body of script. ## - ## -------------------- ## - - ac_ext=c - ac_cpp='$CPP $CPPFLAGS' - ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -@@ -2568,60 +2572,66 @@ ac_link='$CC -o conftest$ac_exeext $CFLA - ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - ac_config_headers="$ac_config_headers fficonfig.h" - - - ac_aux_dir= - for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do -- for ac_t in install-sh install.sh shtool; do -- if test -f "$ac_dir/$ac_t"; then -- ac_aux_dir=$ac_dir -- ac_install_sh="$ac_aux_dir/$ac_t -c" -- break 2 -- fi -- done -+ if test -f "$ac_dir/install-sh"; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/install-sh -c" -+ break -+ elif test -f "$ac_dir/install.sh"; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/install.sh -c" -+ break -+ elif test -f "$ac_dir/shtool"; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/shtool install -c" -+ break -+ fi - done - if test -z "$ac_aux_dir"; then -- as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 - fi - - # These three variables are undocumented and unsupported, - # and are intended to be withdrawn in a future Autoconf release. - # They can cause serious problems if a builder's source tree is in a directory - # whose full name contains unusual characters. - ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. - ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. - ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - - # Make sure we can run config.sub. - $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || -- as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 - $as_echo_n "checking build system type... " >&6; } --if test "${ac_cv_build+set}" = set; then : -+if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 - else - ac_build_alias=$build_alias - test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` - test "x$ac_build_alias" = x && -- as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 -+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 - ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || -- as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 -+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 - $as_echo "$ac_cv_build" >&6; } - case $ac_cv_build in - *-*-*) ;; --*) as_fn_error "invalid value of canonical build" "$LINENO" 5;; -+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; - esac - build=$ac_cv_build - ac_save_IFS=$IFS; IFS='-' - set x $ac_cv_build - shift - build_cpu=$1 - build_vendor=$2 - shift; shift -@@ -2629,32 +2639,32 @@ shift; shift - # except with old shells: - build_os=$* - IFS=$ac_save_IFS - case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 - $as_echo_n "checking host system type... " >&6; } --if test "${ac_cv_host+set}" = set; then : -+if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build - else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || -- as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 - fi - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 - $as_echo "$ac_cv_host" >&6; } - case $ac_cv_host in - *-*-*) ;; --*) as_fn_error "invalid value of canonical host" "$LINENO" 5;; -+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; - esac - host=$ac_cv_host - ac_save_IFS=$IFS; IFS='-' - set x $ac_cv_host - shift - host_cpu=$1 - host_vendor=$2 - shift; shift -@@ -2662,32 +2672,32 @@ shift; shift - # except with old shells: - host_os=$* - IFS=$ac_save_IFS - case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 - $as_echo_n "checking target system type... " >&6; } --if test "${ac_cv_target+set}" = set; then : -+if ${ac_cv_target+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host - else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || -- as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 -+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 - fi - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 - $as_echo "$ac_cv_target" >&6; } - case $ac_cv_target in - *-*-*) ;; --*) as_fn_error "invalid value of canonical target" "$LINENO" 5;; -+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; - esac - target=$ac_cv_target - ac_save_IFS=$IFS; IFS='-' - set x $ac_cv_target - shift - target_cpu=$1 - target_vendor=$2 - shift; shift -@@ -2702,19 +2712,127 @@ case $target_os in *\ *) target_os=`echo - # will get canonicalized. - test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - - target_alias=${target_alias-$host_alias} - --. ${srcdir}/configure.host -- --am__api_version='1.11' -+case "${host}" in -+ frv*-elf) -+ LDFLAGS=`echo $LDFLAGS | sed "s/\-B^ *libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/ -+ ;; -+esac -+ -+ -+ # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args -+ if test "${ac_configure_args+set}" != "set" ; then -+ ac_configure_args= -+ for ac_arg in ${1+"$@"}; do -+ ac_configure_args="$ac_configure_args '$ac_arg'" -+ done -+ fi -+ -+# expand $ac_aux_dir to an absolute path -+am_aux_dir=`cd $ac_aux_dir && pwd` -+ -+ -+ax_enable_builddir="." -+# Check whether --enable-builddir was given. -+if test "${enable_builddir+set}" = set; then : -+ enableval=$enable_builddir; ax_enable_builddir="$enableval" -+else -+ ax_enable_builddir="auto" -+fi -+ -+if test ".$ac_srcdir_defaulted" != ".no" ; then -+if test ".$srcdir" = ".." ; then -+ if test -f config.status ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: toplevel srcdir already configured... skipping subdir build" >&5 -+$as_echo "$as_me: toplevel srcdir already configured... skipping subdir build" >&6;} -+ else -+ test ".$ax_enable_builddir" = "." && ax_enable_builddir="." -+ test ".$ax_enable_builddir" = ".no" && ax_enable_builddir="." -+ test ".$TARGET" = "." && TARGET="$target" -+ test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="$TARGET" -+ if test ".$ax_enable_builddir" != ".." ; then # we know where to go and -+ as_dir=$ax_enable_builddir; as_fn_mkdir_p -+ echo __.$ax_enable_builddir.__ > $ax_enable_builddir/conftest.tmp -+ cd $ax_enable_builddir -+ if grep __.$ax_enable_builddir.__ conftest.tmp >/dev/null 2>/dev/null ; then -+ rm conftest.tmp -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: continue configure in default builddir \"./$ax_enable_builddir\"" >&5 -+$as_echo "continue configure in default builddir \"./$ax_enable_builddir\"" >&6; } -+ else -+ as_fn_error $? "could not change to default builddir \"./$ax_enable_builddir\"" "$LINENO" 5 -+ fi -+ srcdir=`echo "$ax_enable_builddir" | -+ sed -e 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g;s,[/]$,,;'` -+ # going to restart from subdirectory location -+ test -f $srcdir/config.log && mv $srcdir/config.log . -+ test -f $srcdir/confdefs.h && mv $srcdir/confdefs.h . -+ test -f $srcdir/conftest.log && mv $srcdir/conftest.log . -+ test -f $srcdir/$cache_file && mv $srcdir/$cache_file . -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&5 -+$as_echo "....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&6; } -+ case "$0" in # restart -+ /\\*) eval $SHELL "'$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;; -+ *) eval $SHELL "'$srcdir/$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;; -+ esac ; exit $? -+ fi -+ fi -+fi fi -+test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="." -+# Extract the first word of "gsed sed", so it can be a program name with args. -+set dummy gsed sed; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_path_ax_enable_builddir_sed+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ case $ax_enable_builddir_sed in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_ax_enable_builddir_sed="$ax_enable_builddir_sed" # Let the user override the test with a path. -+ ;; -+ *) -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_path_ax_enable_builddir_sed="$as_dir/$ac_word$ac_exec_ext" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+ test -z "$ac_cv_path_ax_enable_builddir_sed" && ac_cv_path_ax_enable_builddir_sed="sed" -+ ;; -+esac -+fi -+ax_enable_builddir_sed=$ac_cv_path_ax_enable_builddir_sed -+if test -n "$ax_enable_builddir_sed"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_enable_builddir_sed" >&5 -+$as_echo "$ax_enable_builddir_sed" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ax_enable_builddir_auxdir="$am_aux_dir" -+ac_config_commands="$ac_config_commands buildir" -+ -+ -+am__api_version='1.13' - - # Find a good install program. We prefer a C program (faster), - # so one script is as good as another. But avoid the broken or - # incompatible versions: - # SysV /etc/install, /usr/sbin/install - # SunOS /usr/etc/install - # IRIX /sbin/install - # AIX /bin/install -@@ -2723,17 +2841,17 @@ am__api_version='1.11' - # AFS /usr/afsws/bin/install, which mishandles nonexistent args - # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" - # OS/2's system install, which has a completely different semantic - # ./install, which can be erroneously created by make from ./install.sh. - # Reject install programs that cannot install multiple files. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 - $as_echo_n "checking for a BSD-compatible install... " >&6; } - if test -z "$INSTALL"; then --if test "${ac_cv_path_install+set}" = set; then : -+if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -@@ -2743,17 +2861,17 @@ case $as_dir/ in #(( - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : -@@ -2801,128 +2919,140 @@ fi - test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - - test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - - test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 - $as_echo_n "checking whether build environment is sane... " >&6; } --# Just in case --sleep 1 --echo timestamp > conftest.file - # Reject unsafe characters in $srcdir or the absolute working directory - # name. Accept space and tab only in the latter. - am_lf=' - ' - case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) -- as_fn_error "unsafe absolute working directory name" "$LINENO" 5;; -+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; - esac - case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) -- as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; --esac -- --# Do `set' in a subshell so we don't clobber the current shell's -+ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; -+esac -+ -+# Do 'set' in a subshell so we don't clobber the current shell's - # arguments. Must try -L first in case configure is actually a - # symlink; some systems play weird games with the mod time of symlinks - # (eg FreeBSD returns the mod time of the symlink's containing - # directory). - if ( -- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` -- if test "$*" = "X"; then -- # -L didn't work. -- set X `ls -t "$srcdir/configure" conftest.file` -- fi -- rm -f conftest.file -- if test "$*" != "X $srcdir/configure conftest.file" \ -- && test "$*" != "X conftest.file $srcdir/configure"; then -- -- # If neither matched, then we have a broken ls. This can happen -- # if, for instance, CONFIG_SHELL is bash and it inherits a -- # broken ls alias from the environment. This has actually -- # happened. Such a system could not be considered "sane". -- as_fn_error "ls -t appears to fail. Make sure there is not a broken --alias in your environment" "$LINENO" 5 -- fi -- -+ am_has_slept=no -+ for am_try in 1 2; do -+ echo "timestamp, slept: $am_has_slept" > conftest.file -+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` -+ if test "$*" = "X"; then -+ # -L didn't work. -+ set X `ls -t "$srcdir/configure" conftest.file` -+ fi -+ if test "$*" != "X $srcdir/configure conftest.file" \ -+ && test "$*" != "X conftest.file $srcdir/configure"; then -+ -+ # If neither matched, then we have a broken ls. This can happen -+ # if, for instance, CONFIG_SHELL is bash and it inherits a -+ # broken ls alias from the environment. This has actually -+ # happened. Such a system could not be considered "sane". -+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -+ alias in your environment" "$LINENO" 5 -+ fi -+ if test "$2" = conftest.file || test $am_try -eq 2; then -+ break -+ fi -+ # Just in case. -+ sleep 1 -+ am_has_slept=yes -+ done - test "$2" = conftest.file - ) - then - # Ok. - : - else -- as_fn_error "newly created file is older than distributed files! -+ as_fn_error $? "newly created file is older than distributed files! - Check your system clock" "$LINENO" 5 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -+# If we didn't sleep, we still need to ensure time stamps of config.status and -+# generated files are strictly newer. -+am_sleep_pid= -+if grep 'slept: no' conftest.file >/dev/null 2>&1; then -+ ( sleep 1 ) & -+ am_sleep_pid=$! -+fi -+ -+rm -f conftest.file -+ - test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" - # Use a double $ so make ignores it. - test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" - # Double any \ or $. - # By default was `s,x,x', remove it if useless. - ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' - program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - --# expand $ac_aux_dir to an absolute path --am_aux_dir=`cd $ac_aux_dir && pwd` -- - if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac - fi - # Use eval to expand $SHELL --if eval "$MISSING --run true"; then -- am_missing_run="$MISSING --run " -+if eval "$MISSING --is-lightweight"; then -+ am_missing_run="$MISSING " - else - am_missing_run= -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 --$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} - fi - - if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac - fi - --# Installed binaries are usually stripped using `strip' when the user --# run `make install-strip'. However `strip' might not be the right -+# Installed binaries are usually stripped using 'strip' when the user -+# run "make install-strip". However 'strip' might not be the right - # tool to use in cross-compilation environments, therefore Automake --# will honor the `STRIP' environment variable to overrule this program. -+# will honor the 'STRIP' environment variable to overrule this program. - if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. - set dummy ${ac_tool_prefix}strip; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_STRIP+set}" = set; then : -+if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -2940,29 +3070,29 @@ fi - - fi - if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. - set dummy strip; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : -+if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -2993,27 +3123,27 @@ else - fi - - fi - INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 - $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } - if test -z "$MKDIR_P"; then -- if test "${ac_cv_path_mkdir+set}" = set; then : -+ if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do -- { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue -+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done -@@ -3032,41 +3162,35 @@ fi - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 - $as_echo "$MKDIR_P" >&6; } - --mkdir_p="$MKDIR_P" --case $mkdir_p in -- [\\/$]* | ?:[\\/]*) ;; -- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; --esac -- - for ac_prog in gawk mawk nawk awk - do - # Extract the first word of "$ac_prog", so it can be a program name with args. - set dummy $ac_prog; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_AWK+set}" = set; then : -+if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -3084,25 +3208,25 @@ fi - - test -n "$AWK" && break - done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 - $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } - set x ${MAKE-make} - ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` --if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : -+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 - else - cat >conftest.make <<\_ACEOF - SHELL = /bin/sh - all: - @echo '@@@%%%=$(MAKE)=@@@%%%' - _ACEOF --# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. - case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; - esac - rm -f conftest.make - fi -@@ -3120,39 +3244,78 @@ rm -rf .tst 2>/dev/null - mkdir .tst 2>/dev/null - if test -d .tst; then - am__leading_dot=. - else - am__leading_dot=_ - fi - rmdir .tst 2>/dev/null - -+# Check whether --enable-silent-rules was given. -+if test "${enable_silent_rules+set}" = set; then : -+ enableval=$enable_silent_rules; -+fi -+ -+case $enable_silent_rules in # ((( -+ yes) AM_DEFAULT_VERBOSITY=0;; -+ no) AM_DEFAULT_VERBOSITY=1;; -+ *) AM_DEFAULT_VERBOSITY=1;; -+esac -+am_make=${MAKE-make} -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -+$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -+if ${am_cv_make_support_nested_variables+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if $as_echo 'TRUE=$(BAR$(V)) -+BAR0=false -+BAR1=true -+V=1 -+am__doit: -+ @$(TRUE) -+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then -+ am_cv_make_support_nested_variables=yes -+else -+ am_cv_make_support_nested_variables=no -+fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -+$as_echo "$am_cv_make_support_nested_variables" >&6; } -+if test $am_cv_make_support_nested_variables = yes; then -+ AM_V='$(V)' -+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -+else -+ AM_V=$AM_DEFAULT_VERBOSITY -+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -+fi -+AM_BACKSLASH='\' -+ - if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then -- as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 -+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi - fi - - # test whether we have cygpath - if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi - fi - - - # Define the identity of the package. - PACKAGE='libffi' -- VERSION='3.0.10rc0' -+ VERSION='3.1-rc1' - - - cat >>confdefs.h <<_ACEOF - #define PACKAGE "$PACKAGE" - _ACEOF - - - cat >>confdefs.h <<_ACEOF -@@ -3170,23 +3333,34 @@ AUTOCONF=${AUTOCONF-"${am_missing_run}au - AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - - AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - - MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -+# For better backward compatibility. To be removed once Automake 1.9.x -+# dies out for good. For more background, see: -+# -+# -+mkdir_p='$(MKDIR_P)' -+ - # We need awk for the "check" target. The system "awk" is bad on - # some platforms. --# Always define AMTAR for backward compatibility. -- --AMTAR=${AMTAR-"${am_missing_run}tar"} -- --am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' -+# Always define AMTAR for backward compatibility. Yes, it's still used -+# in the wild :-( We should find a proper way to deprecate it ... -+AMTAR='$${TAR-tar}' -+ -+ -+# We'll loop over all known methods to create a tar archive until one works. -+_am_tools='gnutar pax cpio none' -+ -+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' -+ - - - - - - - # The same as in boehm-gc and libstdc++. Have to borrow it from there. - # We must force CC to /not/ be precious variables; otherwise -@@ -3203,29 +3377,29 @@ ac_cpp='$CPP $CPPFLAGS' - ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' - ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' - ac_compiler_gnu=$ac_cv_c_compiler_gnu - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. - set dummy ${ac_tool_prefix}gcc; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_CC+set}" = set; then : -+if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -3243,29 +3417,29 @@ fi - - fi - if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. - set dummy gcc; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : -+if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -3296,29 +3470,29 @@ else - fi - - if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. - set dummy ${ac_tool_prefix}cc; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_CC+set}" = set; then : -+if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -3336,30 +3510,30 @@ fi - - fi - fi - if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. - set dummy cc; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_CC+set}" = set; then : -+if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. - else - ac_prog_rejected=no - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -@@ -3395,29 +3569,29 @@ fi - if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. - set dummy $ac_tool_prefix$ac_prog; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_CC+set}" = set; then : -+if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -3439,29 +3613,29 @@ fi - if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe - do - # Extract the first word of "$ac_prog", so it can be a program name with args. - set dummy $ac_prog; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : -+if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -3493,18 +3667,18 @@ esac - fi - fi - - fi - - - test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error "no acceptable C compiler found in \$PATH --See \`config.log' for more details." "$LINENO" 5; } -+as_fn_error $? "no acceptable C compiler found in \$PATH -+See \`config.log' for more details" "$LINENO" 5; } - - # Provide some information about the compiler. - $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 - set X $ac_compile - ac_compiler=$2 - for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" - case "(($ac_try" in -@@ -3608,19 +3782,18 @@ fi - if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - $as_echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --{ as_fn_set_status 77 --as_fn_error "C compiler cannot create executables --See \`config.log' for more details." "$LINENO" 5; }; } -+as_fn_error 77 "C compiler cannot create executables -+See \`config.log' for more details" "$LINENO" 5; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 - $as_echo_n "checking for C compiler default output file name... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 - $as_echo "$ac_file" >&6; } -@@ -3652,18 +3825,18 @@ for ac_file in conftest.exe conftest con - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac - done - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error "cannot compute suffix of executables: cannot compile and link --See \`config.log' for more details." "$LINENO" 5; } -+as_fn_error $? "cannot compute suffix of executables: cannot compile and link -+See \`config.log' for more details" "$LINENO" 5; } - fi - rm -f conftest conftest$ac_cv_exeext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 - $as_echo "$ac_cv_exeext" >&6; } - - rm -f conftest.$ac_ext - EXEEXT=$ac_cv_exeext - ac_exeext=$EXEEXT -@@ -3710,30 +3883,30 @@ eval ac_try_echo="\"\$as_me:${as_lineno- - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error "cannot run C compiled programs. -+as_fn_error $? "cannot run C compiled programs. - If you meant to cross compile, use \`--host'. --See \`config.log' for more details." "$LINENO" 5; } -+See \`config.log' for more details" "$LINENO" 5; } - fi - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 - $as_echo "$cross_compiling" >&6; } - - rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out - ac_clean_files=$ac_clean_files_save - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 - $as_echo_n "checking for suffix of object files... " >&6; } --if test "${ac_cv_objext+set}" = set; then : -+if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - int - main () - { -@@ -3763,28 +3936,28 @@ eval ac_try_echo="\"\$as_me:${as_lineno- - esac - done - else - $as_echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error "cannot compute suffix of object files: cannot compile --See \`config.log' for more details." "$LINENO" 5; } -+as_fn_error $? "cannot compute suffix of object files: cannot compile -+See \`config.log' for more details" "$LINENO" 5; } - fi - rm -f conftest.$ac_cv_objext conftest.$ac_ext - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 - $as_echo "$ac_cv_objext" >&6; } - OBJEXT=$ac_cv_objext - ac_objext=$OBJEXT - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 - $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } --if test "${ac_cv_c_compiler_gnu+set}" = set; then : -+if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - int - main () - { -@@ -3811,17 +3984,17 @@ if test $ac_compiler_gnu = yes; then - GCC=yes - else - GCC= - fi - ac_test_CFLAGS=${CFLAGS+set} - ac_save_CFLAGS=$CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 - $as_echo_n "checking whether $CC accepts -g... " >&6; } --if test "${ac_cv_prog_cc_g+set}" = set; then : -+if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 - else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ -@@ -3889,27 +4062,26 @@ else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 - $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } --if test "${ac_cv_prog_cc_c89+set}" = set; then : -+if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 - else - ac_cv_prog_cc_c89=no - ac_save_CC=$CC - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - #include --#include --#include -+struct stat; - /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ - struct buf { int x; }; - FILE * (*rcsopen) (struct buf *, struct stat *, int); - static char *e (p, i) - char **p; - int i; - { - return p[i]; -@@ -4002,17 +4174,17 @@ END - # If we don't find an include directive, just comment out the code. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 - $as_echo_n "checking for style of include used by $am_make... " >&6; } - am__include="#" - am__quote= - _am_result=none - # First try GNU make style include. - echo "include confinc" > confmf --# Ignore all kinds of additional output from `make'. -+# Ignore all kinds of additional output from 'make'. - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; - esac - # Now try BSD make style include. -@@ -4035,40 +4207,42 @@ rm -f confinc confmf - # Check whether --enable-dependency-tracking was given. - if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; - fi - - if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -+ am__nodep='_no' - fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' - else - AMDEP_TRUE='#' - AMDEP_FALSE= - fi - - - - depcc="$CC" am_compiler_list= - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 - $as_echo_n "checking dependency style of $depcc... " >&6; } --if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : -+if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up -- # making a dummy file named `D' -- because `-MD' means `put the output -- # in D'. -+ # making a dummy file named 'D' -- because '-MD' means "put the output -+ # in D". -+ rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a -@@ -4092,44 +4266,44 @@ else - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c -- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with -- # Solaris 8's {/usr,}/bin/sh. -- touch sub/conftst$i.h -+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with -+ # Solaris 10 /bin/sh. -+ echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - -- # We check with `-c' and `-o' for the sake of the "dashmstdout" -+ # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly -- # handle `-M -o', and we need to detect this. Also, some Intel -- # versions had trouble with output in subdirs -+ # handle '-M -o', and we need to detect this. Also, some Intel -+ # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) -- # after this tag, mechanisms are not by side-effect, so they'll -- # only be used when explicitly requested -+ # After this tag, mechanisms are not by side-effect, so they'll -+ # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; -- msvisualcpp | msvcmsys) -- # This compiler won't grok `-c -o', but also, the minuso test has -+ msvc7 | msvc7msys | msvisualcpp | msvcmsys) -+ # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ -@@ -4190,25 +4364,26 @@ test "${CCAS+set}" = set || CCAS=$CC - test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS - - - - depcc="$CCAS" am_compiler_list= - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 - $as_echo_n "checking dependency style of $depcc... " >&6; } --if test "${am_cv_CCAS_dependencies_compiler_type+set}" = set; then : -+if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up -- # making a dummy file named `D' -- because `-MD' means `put the output -- # in D'. -+ # making a dummy file named 'D' -- because '-MD' means "put the output -+ # in D". -+ rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a -@@ -4230,44 +4405,44 @@ else - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c -- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with -- # Solaris 8's {/usr,}/bin/sh. -- touch sub/conftst$i.h -+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with -+ # Solaris 10 /bin/sh. -+ echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - -- # We check with `-c' and `-o' for the sake of the "dashmstdout" -+ # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly -- # handle `-M -o', and we need to detect this. Also, some Intel -- # versions had trouble with output in subdirs -+ # handle '-M -o', and we need to detect this. Also, some Intel -+ # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) -- # after this tag, mechanisms are not by side-effect, so they'll -- # only be used when explicitly requested -+ # After this tag, mechanisms are not by side-effect, so they'll -+ # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; -- msvisualcpp | msvcmsys) -- # This compiler won't grok `-c -o', but also, the minuso test has -+ msvc7 | msvc7msys | msvisualcpp | msvcmsys) -+ # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ -@@ -4320,17 +4495,17 @@ if test "x$CC" != xcc; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 - $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 - $as_echo_n "checking whether cc understands -c and -o together... " >&6; } - fi - set dummy $CC; ac_cc=`$as_echo "$2" | - sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` --if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then : -+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : - $as_echo_n "(cached) " >&6 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - int - main () - { -@@ -4445,36 +4620,105 @@ fi - case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 - $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; - esac - - - --macro_version='2.2.6b' --macro_revision='1.3017' -+macro_version='2.4.2' -+macro_revision='1.3337' - - - - - - - - - - - - - - ltmain="$ac_aux_dir/ltmain.sh" - -+# Backslashify metacharacters that are still active within -+# double-quoted strings. -+sed_quote_subst='s/\(["`$\\]\)/\\\1/g' -+ -+# Same as above, but do not quote variable references. -+double_quote_subst='s/\(["`\\]\)/\\\1/g' -+ -+# Sed substitution to delay expansion of an escaped shell variable in a -+# double_quote_subst'ed string. -+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -+ -+# Sed substitution to delay expansion of an escaped single quote. -+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' -+ -+# Sed substitution to avoid accidental globbing in evaled expressions -+no_glob_subst='s/\*/\\\*/g' -+ -+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -+$as_echo_n "checking how to print strings... " >&6; } -+# Test print first, because it will be a builtin if present. -+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ -+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then -+ ECHO='print -r --' -+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then -+ ECHO='printf %s\n' -+else -+ # Use this function as a fallback that always works. -+ func_fallback_echo () -+ { -+ eval 'cat <<_LTECHO_EOF -+$1 -+_LTECHO_EOF' -+ } -+ ECHO='func_fallback_echo' -+fi -+ -+# func_echo_all arg... -+# Invoke $ECHO with all args, space-separated. -+func_echo_all () -+{ -+ $ECHO "" -+} -+ -+case "$ECHO" in -+ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -+$as_echo "printf" >&6; } ;; -+ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -+$as_echo "print -r" >&6; } ;; -+ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -+$as_echo "cat" >&6; } ;; -+esac -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 - $as_echo_n "checking for a sed that does not truncate output... " >&6; } --if test "${ac_cv_path_SED+set}" = set; then : -+if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 - else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} -@@ -4484,17 +4728,17 @@ else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" -- { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -+ as_fn_executable_p "$ac_path_SED" || continue - # Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED - case `"$ac_path_SED" --version 2>&1` in - *GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; - *) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" -@@ -4519,17 +4763,17 @@ case `"$ac_path_SED" --version 2>&1` in - esac - - $ac_path_SED_found && break 3 - done - done - done - IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then -- as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5 -+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi - else - ac_cv_path_SED=$SED - fi - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 - $as_echo "$ac_cv_path_SED" >&6; } -@@ -4546,31 +4790,31 @@ Xsed="$SED -e 1s/^X//" - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 - $as_echo_n "checking for grep that handles long lines and -e... " >&6; } --if test "${ac_cv_path_GREP+set}" = set; then : -+if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" -- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -+ as_fn_executable_p "$ac_path_GREP" || continue - # Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP - case `"$ac_path_GREP" --version 2>&1` in - *GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; - *) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" -@@ -4595,48 +4839,48 @@ case `"$ac_path_GREP" --version 2>&1` in - esac - - $ac_path_GREP_found && break 3 - done - done - done - IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then -- as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 -+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi - else - ac_cv_path_GREP=$GREP - fi - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 - $as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 - $as_echo_n "checking for egrep... " >&6; } --if test "${ac_cv_path_EGREP+set}" = set; then : -+if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 - else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" -- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -+ as_fn_executable_p "$ac_path_EGREP" || continue - # Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP - case `"$ac_path_EGREP" --version 2>&1` in - *GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; - *) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" -@@ -4661,49 +4905,49 @@ case `"$ac_path_EGREP" --version 2>&1` i - esac - - $ac_path_EGREP_found && break 3 - done - done - done - IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then -- as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 -+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi - else - ac_cv_path_EGREP=$EGREP - fi - - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 - $as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 - $as_echo_n "checking for fgrep... " >&6; } --if test "${ac_cv_path_FGREP+set}" = set; then : -+if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 - else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" -- { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -+ as_fn_executable_p "$ac_path_FGREP" || continue - # Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP - case `"$ac_path_FGREP" --version 2>&1` in - *GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; - *) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" -@@ -4728,17 +4972,17 @@ case `"$ac_path_FGREP" --version 2>&1` i - esac - - $ac_path_FGREP_found && break 3 - done - done - done - IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then -- as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 -+ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi - else - ac_cv_path_FGREP=$FGREP - fi - - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -@@ -4807,17 +5051,17 @@ if test "$GCC" = yes; then - esac - elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 - $as_echo_n "checking for GNU ld... " >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 - $as_echo_n "checking for non-GNU ld... " >&6; } - fi --if test "${lt_cv_path_LD+set}" = set; then : -+if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then -@@ -4844,20 +5088,20 @@ fi - LD="$lt_cv_path_LD" - if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 - $as_echo "$LD" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - fi --test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 -+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 - $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } --if test "${lt_cv_prog_gnu_ld+set}" = set; then : -+if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 - else - # I'd rather use --version here, but apparently some GNU lds only accept -v. - case `$LD -v 2>&1 &5 - $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } --if test "${lt_cv_path_NM+set}" = set; then : -+if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" - else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then -@@ -4927,36 +5171,39 @@ else - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 - $as_echo "$lt_cv_path_NM" >&6; } - if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" - else - # Didn't find any BSD compatible name lister, look for dumpbin. -- if test -n "$ac_tool_prefix"; then -- for ac_prog in "dumpbin -symbols" "link -dump -symbols" -+ if test -n "$DUMPBIN"; then : -+ # Let the user override the test. -+ else -+ if test -n "$ac_tool_prefix"; then -+ for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. - set dummy $ac_tool_prefix$ac_prog; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_DUMPBIN+set}" = set; then : -+if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -4972,35 +5219,35 @@ else - fi - - - test -n "$DUMPBIN" && break - done - fi - if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN -- for ac_prog in "dumpbin -symbols" "link -dump -symbols" -+ for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_prog", so it can be a program name with args. - set dummy $ac_prog; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then : -+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -5027,42 +5274,51 @@ yes:) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac - DUMPBIN=$ac_ct_DUMPBIN - fi - fi - -+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in -+ *COFF*) -+ DUMPBIN="$DUMPBIN -symbols" -+ ;; -+ *) -+ DUMPBIN=: -+ ;; -+ esac -+ fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi - fi - test -z "$NM" && NM=nm - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 - $as_echo_n "checking the name lister ($NM) interface... " >&6; } --if test "${lt_cv_nm_interface+set}" = set; then : -+if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 - else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext -- (eval echo "\"\$as_me:5054: $ac_compile\"" >&5) -+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 -- (eval echo "\"\$as_me:5057: $NM \\\"conftest.$ac_objext\\\"\"" >&5) -+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 -- (eval echo "\"\$as_me:5060: output\"" >&5) -+ (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 - $as_echo "$lt_cv_nm_interface" >&6; } -@@ -5076,17 +5332,17 @@ if test "$LN_S" = "ln -s"; then - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 - $as_echo "no, using $LN_S" >&6; } - fi - - # find the maximum length of command line arguments - { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 - $as_echo_n "checking the maximum length of command line arguments... " >&6; } --if test "${lt_cv_sys_max_cmd_len+set}" = set; then : -+if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 - else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc -@@ -5109,16 +5365,21 @@ else - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - -+ mint*) -+ # On MiNT this can take a long time and run out of memory. -+ lt_cv_sys_max_cmd_len=8192; -+ ;; -+ - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. -@@ -5134,16 +5395,21 @@ else - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - -+ os2*) -+ # The test takes a long time on OS/2. -+ lt_cv_sys_max_cmd_len=8192 -+ ;; -+ - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then -@@ -5173,18 +5439,18 @@ else - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. -- while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ -- = "XX$teststring$teststring"; } >/dev/null 2>&1 && -+ while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ -+ = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= -@@ -5216,18 +5482,18 @@ max_cmd_len=$lt_cv_sys_max_cmd_len - : ${MV="mv -f"} - : ${RM="rm -f"} - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 - $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } - # Try some XSI features - xsi_shell=no - ( _lt_dummy="a/b/c" -- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ -- = c,a/b,, \ -+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ -+ = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 - $as_echo "$xsi_shell" >&6; } - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -@@ -5266,32 +5532,111 @@ esac - - - - - - - - -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -+$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -+if ${lt_cv_to_host_file_cmd+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ case $host in -+ *-*-mingw* ) -+ case $build in -+ *-*-mingw* ) # actually msys -+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 -+ ;; -+ *-*-cygwin* ) -+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 -+ ;; -+ * ) # otherwise, assume *nix -+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 -+ ;; -+ esac -+ ;; -+ *-*-cygwin* ) -+ case $build in -+ *-*-mingw* ) # actually msys -+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin -+ ;; -+ *-*-cygwin* ) -+ lt_cv_to_host_file_cmd=func_convert_file_noop -+ ;; -+ * ) # otherwise, assume *nix -+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin -+ ;; -+ esac -+ ;; -+ * ) # unhandled hosts (and "normal" native builds) -+ lt_cv_to_host_file_cmd=func_convert_file_noop -+ ;; -+esac -+ -+fi -+ -+to_host_file_cmd=$lt_cv_to_host_file_cmd -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -+$as_echo "$lt_cv_to_host_file_cmd" >&6; } -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -+if ${lt_cv_to_tool_file_cmd+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ #assume ordinary cross tools, or native build. -+lt_cv_to_tool_file_cmd=func_convert_file_noop -+case $host in -+ *-*-mingw* ) -+ case $build in -+ *-*-mingw* ) # actually msys -+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 -+ ;; -+ esac -+ ;; -+esac -+ -+fi -+ -+to_tool_file_cmd=$lt_cv_to_tool_file_cmd -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -+$as_echo "$lt_cv_to_tool_file_cmd" >&6; } -+ -+ -+ -+ -+ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 - $as_echo_n "checking for $LD option to reload object files... " >&6; } --if test "${lt_cv_ld_reload_flag+set}" = set; then : -+if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 - else - lt_cv_ld_reload_flag='-r' - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 - $as_echo "$lt_cv_ld_reload_flag" >&6; } - reload_flag=$lt_cv_ld_reload_flag - case $reload_flag in - "" | " "*) ;; - *) reload_flag=" $reload_flag" ;; - esac - reload_cmds='$LD$reload_flag -o $output$reload_objs' - case $host_os in -+ cygwin* | mingw* | pw32* | cegcc*) -+ if test "$GCC" != yes; then -+ reload_cmds=false -+ fi -+ ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; - esac -@@ -5304,29 +5649,29 @@ esac - - - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. - set dummy ${ac_tool_prefix}objdump; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_OBJDUMP+set}" = set; then : -+if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -5344,29 +5689,29 @@ fi - - fi - if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. - set dummy objdump; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : -+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -5403,17 +5748,17 @@ test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 - $as_echo_n "checking how to recognize dependent libraries... " >&6; } --if test "${lt_cv_deplibs_check_method+set}" = set; then : -+if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 - else - lt_cv_file_magic_cmd='$MAGIC_CMD' - lt_cv_file_magic_test_file= - lt_cv_deplibs_check_method='unknown' - # Need to set the preceding variable on all platforms that support - # interlibrary dependencies. - # 'none' -- dependencies not supported. -@@ -5445,26 +5790,28 @@ cygwin*) - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - - mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. -- if ( file / ) >/dev/null 2>&1; then -+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. -+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else -- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' -+ # Keep this pattern in sync with the one in func_win32_libid. -+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - --cegcc) -+cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - - darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; -@@ -5484,29 +5831,33 @@ freebsd* | dragonfly*) - lt_cv_deplibs_check_method=pass_all - fi - ;; - - gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -+haiku*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ - hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) -- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' -+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) -- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' -+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - - interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' -@@ -5517,18 +5868,18 @@ irix5* | irix6* | nonstopux*) - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - --# This must be Linux ELF. --linux* | k*bsd*-gnu) -+# This must be glibc/ELF. -+linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' -@@ -5599,154 +5950,387 @@ sysv4 | sysv4.3*) - tpf*) - lt_cv_deplibs_check_method=pass_all - ;; - esac - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 - $as_echo "$lt_cv_deplibs_check_method" >&6; } -+ -+file_magic_glob= -+want_nocaseglob=no -+if test "$build" = "$host"; then -+ case $host_os in -+ mingw* | pw32*) -+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then -+ want_nocaseglob=yes -+ else -+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` -+ fi -+ ;; -+ esac -+fi -+ - file_magic_cmd=$lt_cv_file_magic_cmd - deplibs_check_method=$lt_cv_deplibs_check_method - test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - if test -n "$ac_tool_prefix"; then -- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. --set dummy ${ac_tool_prefix}ar; ac_word=$2 -+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -+set dummy ${ac_tool_prefix}dlltool; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_AR+set}" = set; then : -- $as_echo_n "(cached) " >&6 --else -- if test -n "$AR"; then -- ac_cv_prog_AR="$AR" # Let the user override the test. -+if ${ac_cv_prog_DLLTOOL+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$DLLTOOL"; then -+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -- ac_cv_prog_AR="${ac_tool_prefix}ar" -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - - fi - fi --AR=$ac_cv_prog_AR --if test -n "$AR"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 --$as_echo "$AR" >&6; } -+DLLTOOL=$ac_cv_prog_DLLTOOL -+if test -n "$DLLTOOL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -+$as_echo "$DLLTOOL" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - fi - - - fi --if test -z "$ac_cv_prog_AR"; then -- ac_ct_AR=$AR -- # Extract the first word of "ar", so it can be a program name with args. --set dummy ar; ac_word=$2 -+if test -z "$ac_cv_prog_DLLTOOL"; then -+ ac_ct_DLLTOOL=$DLLTOOL -+ # Extract the first word of "dlltool", so it can be a program name with args. -+set dummy dlltool; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : -- $as_echo_n "(cached) " >&6 --else -- if test -n "$ac_ct_AR"; then -- ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_DLLTOOL"; then -+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -- ac_cv_prog_ac_ct_AR="ar" -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - - fi - fi --ac_ct_AR=$ac_cv_prog_ac_ct_AR --if test -n "$ac_ct_AR"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 --$as_echo "$ac_ct_AR" >&6; } -+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -+if test -n "$ac_ct_DLLTOOL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -+$as_echo "$ac_ct_DLLTOOL" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - fi - -- if test "x$ac_ct_AR" = x; then -- AR="false" -+ if test "x$ac_ct_DLLTOOL" = x; then -+ DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in - yes:) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -+ DLLTOOL=$ac_ct_DLLTOOL -+ fi -+else -+ DLLTOOL="$ac_cv_prog_DLLTOOL" -+fi -+ -+test -z "$DLLTOOL" && DLLTOOL=dlltool -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -+$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_sharedlib_from_linklib_cmd='unknown' -+ -+case $host_os in -+cygwin* | mingw* | pw32* | cegcc*) -+ # two different shell functions defined in ltmain.sh -+ # decide which to use based on capabilities of $DLLTOOL -+ case `$DLLTOOL --help 2>&1` in -+ *--identify-strict*) -+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib -+ ;; -+ *) -+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback -+ ;; -+ esac -+ ;; -+*) -+ # fallback: assume linklib IS sharedlib -+ lt_cv_sharedlib_from_linklib_cmd="$ECHO" -+ ;; -+esac -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO -+ -+ -+ -+ -+ -+ -+ -+ -+if test -n "$ac_tool_prefix"; then -+ for ac_prog in ar -+ do -+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -+set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_AR+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$AR"; then -+ ac_cv_prog_AR="$AR" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+AR=$ac_cv_prog_AR -+if test -n "$AR"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -+$as_echo "$AR" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ test -n "$AR" && break -+ done -+fi -+if test -z "$AR"; then -+ ac_ct_AR=$AR -+ for ac_prog in ar -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_AR+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_AR"; then -+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_AR="$ac_prog" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_AR=$ac_cv_prog_ac_ct_AR -+if test -n "$ac_ct_AR"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -+$as_echo "$ac_ct_AR" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ test -n "$ac_ct_AR" && break -+done -+ -+ if test "x$ac_ct_AR" = x; then -+ AR="false" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac - AR=$ac_ct_AR - fi --else -- AR="$ac_cv_prog_AR" --fi -- --test -z "$AR" && AR=ar --test -z "$AR_FLAGS" && AR_FLAGS=cru -- -- -- -- -+fi -+ -+: ${AR=ar} -+: ${AR_FLAGS=cru} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -+$as_echo_n "checking for archiver @FILE support... " >&6; } -+if ${lt_cv_ar_at_file+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_ar_at_file=no -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ echo conftest.$ac_objext > conftest.lst -+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' -+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 -+ (eval $lt_ar_try) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } -+ if test "$ac_status" -eq 0; then -+ # Ensure the archiver fails upon bogus file names. -+ rm -f conftest.$ac_objext libconftest.a -+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 -+ (eval $lt_ar_try) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } -+ if test "$ac_status" -ne 0; then -+ lt_cv_ar_at_file=@ -+ fi -+ fi -+ rm -f conftest.* libconftest.a -+ -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -+$as_echo "$lt_cv_ar_at_file" >&6; } -+ -+if test "x$lt_cv_ar_at_file" = xno; then -+ archiver_list_spec= -+else -+ archiver_list_spec=$lt_cv_ar_at_file -+fi - - - - - - - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. - set dummy ${ac_tool_prefix}strip; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_STRIP+set}" = set; then : -+if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -5764,29 +6348,29 @@ fi - - fi - if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. - set dummy strip; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : -+if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -5823,29 +6407,29 @@ test -z "$STRIP" && STRIP=: - - - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. - set dummy ${ac_tool_prefix}ranlib; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_RANLIB+set}" = set; then : -+if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -5863,29 +6447,29 @@ fi - - fi - if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. - set dummy ranlib; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : -+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -5925,24 +6509,36 @@ test -z "$RANLIB" && RANLIB=: - # Determine commands to create old-style static archives. - old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' - old_postinstall_cmds='chmod 644 $oldlib' - old_postuninstall_cmds= - - if test -n "$RANLIB"; then - case $host_os in - openbsd*) -- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" -+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) -- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" -- ;; -- esac -- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" --fi -+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" -+ ;; -+ esac -+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -+fi -+ -+case $host_os in -+ darwin*) -+ lock_old_archive_extraction=yes ;; -+ *) -+ lock_old_archive_extraction=no ;; -+esac -+ -+ -+ -+ -+ - - - - - - - - -@@ -5980,17 +6576,17 @@ LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - - # Allow CC to be a program name with arguments. - compiler=$CC - - - # Check for command to grab the raw symbol name followed by C symbol from nm. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 - $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } --if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then : -+if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 - else - - # These are sane defaults that work on at least a few old systems. - # [They come from Ultrix. What could be older than Ultrix?!! ;)] - - # Character class describing NM global symbol codes. - symcode='[BCDEGRST]' -@@ -6041,18 +6637,18 @@ case `$NM -V 2>&1` in - esac - - # Transform an extracted symbol line into a proper C declaration. - # Some systems (esp. on ia64) link data and code symbols differently, - # so use this general approach. - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - - # Transform an extracted symbol line into symbol name and symbol address --lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" --lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" -+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - - # Handle CRLF in mingw tool chain - opt_cr= - case $build_os in - mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; - esac -@@ -6066,28 +6662,30 @@ for ac_symprfx in "" "_"; do - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ - " {last_section=section; section=\$ 3};"\ -+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ - " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ - " \$ 0!~/External *\|/{next};"\ - " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ - " {if(hide[section]) next};"\ - " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ - " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ - " s[1]~/^[@?]/{print s[1], s[1]; next};"\ - " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ - " ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi -+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF - #ifdef __cplusplus - extern "C" { -@@ -6103,44 +6701,56 @@ int main(){nm_test_var='a';nm_test_func( - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 -- (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 -+ (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -+/* DATA imports from DLLs on WIN32 con't be const, because runtime -+ relocations are performed -- see ld's documentation on pseudo-relocs. */ -+# define LT_DLSYM_CONST -+#elif defined(__osf__) -+/* This system does not cope well with relocations in const data. */ -+# define LT_DLSYM_CONST -+#else -+# define LT_DLSYM_CONST const -+#endif -+ - #ifdef __cplusplus - extern "C" { - #endif - - _LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - - /* The mapping between symbol names and symbols. */ --const struct { -+LT_DLSYM_CONST struct { - const char *name; - void *address; - } - lt__PROGRAM__LTX_preloaded_symbols[] = - { - { "@PROGRAM@", (void *) 0 }, - _LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext -@@ -6156,29 +6766,29 @@ static const void *lt_preloaded_setup() - #endif - - #ifdef __cplusplus - } - #endif - _LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext -- lt_save_LIBS="$LIBS" -- lt_save_CFLAGS="$CFLAGS" -+ lt_globsym_save_LIBS=$LIBS -+ lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi -- LIBS="$lt_save_LIBS" -- CFLAGS="$lt_save_CFLAGS" -+ LIBS=$lt_globsym_save_LIBS -+ CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 -@@ -6205,33 +6815,81 @@ fi - if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 - $as_echo "failed" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 - $as_echo "ok" >&6; } - fi - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+# Response file support. -+if test "$lt_cv_nm_interface" = "MS dumpbin"; then -+ nm_file_list_spec='@' -+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then -+ nm_file_list_spec='@' -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -+$as_echo_n "checking for sysroot... " >&6; } -+ -+# Check whether --with-sysroot was given. -+if test "${with_sysroot+set}" = set; then : -+ withval=$with_sysroot; -+else -+ with_sysroot=no -+fi -+ -+ -+lt_sysroot= -+case ${with_sysroot} in #( -+ yes) -+ if test "$GCC" = yes; then -+ lt_sysroot=`$CC --print-sysroot 2>/dev/null` -+ fi -+ ;; #( -+ /*) -+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` -+ ;; #( -+ no|'') -+ ;; #( -+ *) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -+$as_echo "${with_sysroot}" >&6; } -+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 -+ ;; -+esac -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -+$as_echo "${lt_sysroot:-no}" >&6; } - - - - - - # Check whether --enable-libtool-lock was given. - if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -@@ -6258,17 +6916,17 @@ ia64-*-hpux*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; - *-*-irix6*) - # Find out which ABI we are using. -- echo '#line 6266 "configure"' > conftest.$ac_ext -+ echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) -@@ -6358,17 +7016,17 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux* - ;; - - *-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 - $as_echo_n "checking whether the C compiler needs -belf... " >&6; } --if test "${lt_cv_cc_needs_belf+set}" = set; then : -+if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 - else - ac_ext=c - ac_cpp='$CPP $CPPFLAGS' - ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' - ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' - ac_compiler_gnu=$ac_cv_c_compiler_gnu - -@@ -6399,64 +7057,194 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 - $as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; --sparc*-*solaris*) -+*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in -- yes*) LD="${LD-ld} -m elf64_sparc" ;; -+ yes*) -+ case $host in -+ i?86-*-solaris*) -+ LD="${LD-ld} -m elf_x86_64" -+ ;; -+ sparc*-*-solaris*) -+ LD="${LD-ld} -m elf64_sparc" -+ ;; -+ esac -+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available. -+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then -+ LD="${LD-ld}_sol2" -+ fi -+ ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - esac - - need_locks="$enable_libtool_lock" - -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -+set dummy ${ac_tool_prefix}mt; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$MANIFEST_TOOL"; then -+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -+if test -n "$MANIFEST_TOOL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -+$as_echo "$MANIFEST_TOOL" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then -+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL -+ # Extract the first word of "mt", so it can be a program name with args. -+set dummy mt; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_MANIFEST_TOOL"; then -+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -+if test -n "$ac_ct_MANIFEST_TOOL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_MANIFEST_TOOL" = x; then -+ MANIFEST_TOOL=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL -+ fi -+else -+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -+fi -+ -+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -+if ${lt_cv_path_mainfest_tool+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_path_mainfest_tool=no -+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 -+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out -+ cat conftest.err >&5 -+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then -+ lt_cv_path_mainfest_tool=yes -+ fi -+ rm -f conftest* -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -+$as_echo "$lt_cv_path_mainfest_tool" >&6; } -+if test "x$lt_cv_path_mainfest_tool" != xyes; then -+ MANIFEST_TOOL=: -+fi -+ -+ -+ -+ -+ - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. - set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_DSYMUTIL+set}" = set; then : -+if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -6474,29 +7262,29 @@ fi - - fi - if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. - set dummy dsymutil; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then : -+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -6526,29 +7314,29 @@ else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" - fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. - set dummy ${ac_tool_prefix}nmedit; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_NMEDIT+set}" = set; then : -+if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -6566,29 +7354,29 @@ fi - - fi - if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. - set dummy nmedit; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then : -+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -6618,29 +7406,29 @@ else - NMEDIT="$ac_cv_prog_NMEDIT" - fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. - set dummy ${ac_tool_prefix}lipo; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_LIPO+set}" = set; then : -+if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -6658,29 +7446,29 @@ fi - - fi - if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. - set dummy lipo; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then : -+if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -6710,29 +7498,29 @@ else - LIPO="$ac_cv_prog_LIPO" - fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. - set dummy ${ac_tool_prefix}otool; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_OTOOL+set}" = set; then : -+if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -6750,29 +7538,29 @@ fi - - fi - if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. - set dummy otool; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then : -+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -6802,29 +7590,29 @@ else - OTOOL="$ac_cv_prog_OTOOL" - fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. - set dummy ${ac_tool_prefix}otool64; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_OTOOL64+set}" = set; then : -+if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -6842,29 +7630,29 @@ fi - - fi - if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. - set dummy otool64; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then : -+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done - done - IFS=$as_save_IFS - -@@ -6917,46 +7705,53 @@ fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 - $as_echo_n "checking for -single_module linker flag... " >&6; } --if test "${lt_cv_apple_cc_single_mod+set}" = set; then : -+if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 - else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? -- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then -+ # If there is a non-empty error log, and "single_module" -+ # appears in it, assume the flag caused a linker warning -+ if test -s conftest.err && $GREP single_module conftest.err; then -+ cat conftest.err >&5 -+ # Otherwise, if the output was created with a 0 exit code from -+ # the compiler, it worked. -+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 - $as_echo "$lt_cv_apple_cc_single_mod" >&6; } -+ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 - $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } --if test "${lt_cv_ld_exported_symbols_list+set}" = set; then : -+if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 - else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ -@@ -6976,16 +7771,51 @@ else - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 - $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -+$as_echo_n "checking for -force_load linker flag... " >&6; } -+if ${lt_cv_ld_force_load+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_ld_force_load=no -+ cat > conftest.c << _LT_EOF -+int forced_loaded() { return 2;} -+_LT_EOF -+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 -+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 -+ echo "$AR cru libconftest.a conftest.o" >&5 -+ $AR cru libconftest.a conftest.o 2>&5 -+ echo "$RANLIB libconftest.a" >&5 -+ $RANLIB libconftest.a 2>&5 -+ cat > conftest.c << _LT_EOF -+int main() { return 0;} -+_LT_EOF -+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 -+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err -+ _lt_result=$? -+ if test -s conftest.err && $GREP force_load conftest.err; then -+ cat conftest.err >&5 -+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then -+ lt_cv_ld_force_load=yes -+ else -+ cat conftest.err >&5 -+ fi -+ rm -f conftest.err libconftest.a conftest conftest.c -+ rm -rf conftest.dSYM -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -+$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment -@@ -7003,17 +7833,17 @@ fi - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi -- if test "$DSYMUTIL" != ":"; then -+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - - ac_ext=c -@@ -7023,17 +7853,17 @@ ac_link='$CC -o conftest$ac_exeext $CFLA - ac_compiler_gnu=$ac_cv_c_compiler_gnu - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 - $as_echo_n "checking how to run the C preprocessor... " >&6; } - # On Suns, sometimes $CPP names a directory. - if test -n "$CPP" && test -d "$CPP"; then - CPP= - fi - if test -z "$CPP"; then -- if test "${ac_cv_prog_CPP+set}" = set; then : -+ if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 - else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false - for ac_c_preproc_warn_flag in '' yes - do -@@ -7053,37 +7883,37 @@ do - Syntax error - _ACEOF - if ac_fn_c_try_cpp "$LINENO"; then : - - else - # Broken: fails on valid input. - continue - fi --rm -f conftest.err conftest.$ac_ext -+rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - _ACEOF - if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. - continue - else - # Passes both tests. - ac_preproc_ok=: - break - fi --rm -f conftest.err conftest.$ac_ext -+rm -f conftest.err conftest.i conftest.$ac_ext - - done - # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. --rm -f conftest.err conftest.$ac_ext -+rm -f conftest.i conftest.err conftest.$ac_ext - if $ac_preproc_ok; then : - break - fi - - done - ac_cv_prog_CPP=$CPP - - fi -@@ -7112,56 +7942,56 @@ do - Syntax error - _ACEOF - if ac_fn_c_try_cpp "$LINENO"; then : - - else - # Broken: fails on valid input. - continue - fi --rm -f conftest.err conftest.$ac_ext -+rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - _ACEOF - if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. - continue - else - # Passes both tests. - ac_preproc_ok=: - break - fi --rm -f conftest.err conftest.$ac_ext -+rm -f conftest.err conftest.i conftest.$ac_ext - - done - # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. --rm -f conftest.err conftest.$ac_ext -+rm -f conftest.i conftest.err conftest.$ac_ext - if $ac_preproc_ok; then : - - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error "C preprocessor \"$CPP\" fails sanity check --See \`config.log' for more details." "$LINENO" 5; } -+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -+See \`config.log' for more details" "$LINENO" 5; } - fi - - ac_ext=c - ac_cpp='$CPP $CPPFLAGS' - ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' - ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' - ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 - $as_echo_n "checking for ANSI C header files... " >&6; } --if test "${ac_cv_header_stdc+set}" = set; then : -+if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - #include - #include - #include -@@ -7268,42 +8098,43 @@ fi - - # On IRIX 5.3, sys/types and inttypes.h are conflicting. - for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h - do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` - ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default - " --eval as_val=\$$as_ac_Header -- if test "x$as_val" = x""yes; then : -+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF - #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF - - fi - - done - - - for ac_header in dlfcn.h - do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default - " --if test "x$ac_cv_header_dlfcn_h" = x""yes; then : -+if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_DLFCN_H 1 - _ACEOF - - fi - - done - - - -+ -+ - # Set options - - - - enable_dlopen=no - - - enable_win32_dll=no -@@ -7369,17 +8200,32 @@ fi - - - - - - - # Check whether --with-pic was given. - if test "${with_pic+set}" = set; then : -- withval=$with_pic; pic_mode="$withval" -+ withval=$with_pic; lt_p=${PACKAGE-default} -+ case $withval in -+ yes|no) pic_mode=$withval ;; -+ *) -+ pic_mode=default -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for lt_pkg in $withval; do -+ IFS="$lt_save_ifs" -+ if test "X$lt_pkg" = "X$lt_p"; then -+ pic_mode=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac - else - pic_mode=default - fi - - - test -z "$pic_mode" && pic_mode=default - - -@@ -7446,16 +8292,21 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtoo - - - - - - - - -+ -+ -+ -+ -+ - test -z "$LN_S" && LN_S="ln -s" - - - - - - - -@@ -7467,17 +8318,17 @@ test -z "$LN_S" && LN_S="ln -s" - - - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 - $as_echo_n "checking for objdir... " >&6; } --if test "${lt_cv_objdir+set}" = set; then : -+if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 - else - rm -f .libs 2>/dev/null - mkdir .libs 2>/dev/null - if test -d .libs; then - lt_cv_objdir=.libs - else - # MS-DOS does not allow filenames that begin with a dot. -@@ -7495,58 +8346,28 @@ objdir=$lt_cv_objdir - - cat >>confdefs.h <<_ACEOF - #define LT_OBJDIR "$lt_cv_objdir/" - _ACEOF - - - - -- -- -- -- -- -- -- -- -- -- -- -- -- - case $host_os in - aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; - esac - --# Sed substitution that helps us do robust quoting. It backslashifies --# metacharacters that are still active within double-quoted strings. --sed_quote_subst='s/\(["`$\\]\)/\\\1/g' -- --# Same as above, but do not quote variable references. --double_quote_subst='s/\(["`\\]\)/\\\1/g' -- --# Sed substitution to delay expansion of an escaped shell variable in a --# double_quote_subst'ed string. --delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -- --# Sed substitution to delay expansion of an escaped single quote. --delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' -- --# Sed substitution to avoid accidental globbing in evaled expressions --no_glob_subst='s/\*/\\\*/g' -- - # Global variables: - ofile=libtool - can_build_shared=yes - - # All known linkers require a `.a' archive for static linking (except MSVC, - # which needs '.lib'). - libext=a - -@@ -7565,27 +8386,27 @@ test -z "$ac_objext" && ac_objext=o - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done --cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - - # Only perform the check for file, if the check method requires it - test -z "$MAGIC_CMD" && MAGIC_CMD=file - case $deplibs_check_method in - file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 - $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } --if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : -+if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 - else - case $MAGIC_CMD in - [\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; - *) - lt_save_MAGIC_CMD="$MAGIC_CMD" -@@ -7641,17 +8462,17 @@ fi - - - - - if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 - $as_echo_n "checking for file... " >&6; } --if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : -+if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 - else - case $MAGIC_CMD in - [\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; - *) - lt_save_MAGIC_CMD="$MAGIC_CMD" -@@ -7765,50 +8586,59 @@ eval "$ac_compile" 2>&1 >/dev/null | $SE - - ac_outfile=conftest.$ac_objext - echo "$lt_simple_link_test_code" >conftest.$ac_ext - eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err - _lt_linker_boilerplate=`cat conftest.err` - $RM -r conftest* - - -+## CAVEAT EMPTOR: -+## There is no encapsulation within the following macros, do not change -+## the running order or otherwise move them around unless you know exactly -+## what you are doing... - if test -n "$compiler"; then - - lt_prog_compiler_no_builtin_flag= - - if test "$GCC" = yes; then -- lt_prog_compiler_no_builtin_flag=' -fno-builtin' -+ case $cc_basename in -+ nvcc*) -+ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; -+ *) -+ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; -+ esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 - $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } --if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then : -+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 - else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:7792: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 -- echo "$as_me:7796: \$? = $ac_status" >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - - fi -@@ -7827,18 +8657,16 @@ fi - - - - - lt_prog_compiler_wl= - lt_prog_compiler_pic= - lt_prog_compiler_static= - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 --$as_echo_n "checking for $compiler option to produce PIC... " >&6; } - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. -@@ -7876,16 +8704,22 @@ lt_prog_compiler_static= - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - -+ haiku*) -+ # PIC is the default for Haiku. -+ # The "-static" flag exists, but is broken. -+ lt_prog_compiler_static= -+ ;; -+ - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; -@@ -7918,16 +8752,25 @@ lt_prog_compiler_static= - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac -+ -+ case $cc_basename in -+ nvcc*) # Cuda Compiler Driver 2.2 -+ lt_prog_compiler_wl='-Xlinker ' -+ if test -n "$lt_prog_compiler_pic"; then -+ lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" -+ fi -+ ;; -+ esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' -@@ -7959,17 +8802,17 @@ lt_prog_compiler_static= - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - -- linux* | k*bsd*-gnu) -+ linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. -@@ -7980,47 +8823,68 @@ lt_prog_compiler_static= - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; -- pgcc* | pgf77* | pgf90* | pgf95*) -+ nagfor*) -+ # NAG Fortran compiler -+ lt_prog_compiler_wl='-Wl,-Wl,,' -+ lt_prog_compiler_pic='-PIC' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; -- xl*) -- # IBM XL C 8.0/Fortran 10.1 on PPC -+ xl* | bgxl* | bgf* | mpixl*) -+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in -+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) -+ # Sun Fortran 8.3 passes all unrecognized flags to the linker -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ lt_prog_compiler_wl='' -+ ;; -+ *Sun\ F* | *Sun*Fortran*) -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ lt_prog_compiler_wl='-Qoption ld ' -+ ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; -- *Sun\ F*) -- # Sun Fortran 8.3 passes all unrecognized flags to the linker -- lt_prog_compiler_pic='-KPIC' -+ *Intel*\ [CF]*Compiler*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-fPIC' -+ lt_prog_compiler_static='-static' -+ ;; -+ *Portland\ Group*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' -- lt_prog_compiler_wl='' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' -@@ -8042,17 +8906,17 @@ lt_prog_compiler_static= - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in -- f77* | f90* | f95*) -+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' -@@ -8099,55 +8963,59 @@ case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; - esac --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 --$as_echo "$lt_prog_compiler_pic" >&6; } -- -- -- -- -- -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -+$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -+if ${lt_cv_prog_compiler_pic+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -+$as_echo "$lt_cv_prog_compiler_pic" >&6; } -+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - - # - # Check to make sure the PIC flag actually works. - # - if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 - $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } --if test "${lt_cv_prog_compiler_pic_works+set}" = set; then : -+if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 - else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:8131: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 -- echo "$as_me:8135: \$? = $ac_status" >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - - fi -@@ -8166,36 +9034,41 @@ fi - - fi - - - - - - -+ -+ -+ -+ -+ - # - # Check to make sure the static flag actually works. - # - wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 - $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } --if test "${lt_cv_prog_compiler_static_works+set}" = set; then : -+if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 - else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 -- $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp -+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi -@@ -8215,17 +9088,17 @@ fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 - $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } --if test "${lt_cv_prog_compiler_c_o+set}" = set; then : -+if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 - else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext -@@ -8234,26 +9107,26 @@ else - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:8236: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 -- echo "$as_me:8240: \$? = $ac_status" >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp -+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for -@@ -8270,17 +9143,17 @@ fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 - $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } --if test "${lt_cv_prog_compiler_c_o+set}" = set; then : -+if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 - else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext -@@ -8289,26 +9162,26 @@ else - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:8291: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 -- echo "$as_me:8295: \$? = $ac_status" >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp -+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for -@@ -8364,17 +9237,16 @@ fi - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= -- hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= -@@ -8411,17 +9283,43 @@ fi - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes -+ -+ # On some targets, GNU ld is compatible enough with the native linker -+ # that we're better off using the native interface for both. -+ lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then -+ case $host_os in -+ aix*) -+ # The AIX port of GNU ld has always aspired to compatibility -+ # with the native linker. However, as the warning in the GNU ld -+ # block says, versions before 2.19.5* couldn't really create working -+ # shared libraries, regardless of the interface used. -+ case `$LD -v 2>&1` in -+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;; -+ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; -+ *\ \(GNU\ Binutils\)\ [3-9]*) ;; -+ *) -+ lt_use_gnu_ld_interface=yes -+ ;; -+ esac -+ ;; -+ *) -+ lt_use_gnu_ld_interface=yes -+ ;; -+ esac -+ fi -+ -+ if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -@@ -8429,36 +9327,38 @@ fi - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in -+ *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - --*** Warning: the GNU linker, at least up to release 2.9.1, is reported -+*** Warning: the GNU linker, at least up to release 2.19, is reported - *** to be unable to reliably create shared libraries on AIX. - *** Therefore, libtool is disabling shared libraries support. If you --*** really care for shared libraries, you may want to modify your PATH --*** so that a non-GNU linker is found, and then restart. -+*** really care for shared libraries, you may want to install binutils -+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -+*** You will then need to restart the configuration process. - - _LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) -@@ -8484,20 +9384,22 @@ fi - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' -+ export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes -- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' -+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' -+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else -@@ -8505,108 +9407,117 @@ fi - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - -+ haiku*) -+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ link_all_deplibs=yes -+ ;; -+ - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - -- gnu* | linux* | tpf* | k*bsd*-gnu) -+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then -- tmp_addflag= -+ tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler -- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; -- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers -- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -+ pgf77* | pgf90* | pgf95* | pgfortran*) -+ # Portland Group f77 and f90 compilers -+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; -- xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) -+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; -+ nvcc*) # Cuda Compiler Driver 2.2 -+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' -+ compiler_needs_object=yes -+ ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 -- whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -+ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in -- xlf*) -+ xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' -- hardcode_libdir_flag_spec= -- hardcode_libdir_flag_spec_ld='-rpath $libdir' -- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ -- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' -+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else -- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -@@ -8614,18 +9525,18 @@ fi - *** create shared libraries on Solaris systems. Therefore, libtool - *** is disabling shared libraries support. We urge you to upgrade GNU - *** binutils to release 2.9.1 or newer. Another option is to modify - *** your PATH or compiler configuration so that the native linker is - *** used, and then restart. - - _LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) -@@ -8661,18 +9572,18 @@ fi - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= -@@ -8702,18 +9613,20 @@ fi - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm -+ # Also, AIX nm treats weak defined symbols like other global -+ # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then -- export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. -@@ -8790,93 +9703,124 @@ fi - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ if test "${lt_cv_aix_libpath+set}" = set; then -+ aix_libpath=$lt_cv_aix_libpath -+else -+ if ${lt_cv_aix_libpath_+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - int - main () - { - - ; - return 0; - } - _ACEOF - if ac_fn_c_try_link "$LINENO"; then : - --lt_aix_libpath_sed=' -- /Import File Strings/,/^$/ { -- /^0/ { -- s/^0 *\(.*\)$/\1/ -- p -- } -- }' --aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` --# Check for a 64-bit object if we didn't find anything. --if test -z "$aix_libpath"; then -- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` --fi -+ lt_aix_libpath_sed=' -+ /Import File Strings/,/^$/ { -+ /^0/ { -+ s/^0 *\([^ ]*\) *$/\1/ -+ p -+ } -+ }' -+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -+ # Check for a 64-bit object if we didn't find anything. -+ if test -z "$lt_cv_aix_libpath_"; then -+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -+ fi - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext --if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -+ if test -z "$lt_cv_aix_libpath_"; then -+ lt_cv_aix_libpath_="/usr/lib:/lib" -+ fi -+ -+fi -+ -+ aix_libpath=$lt_cv_aix_libpath_ -+fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" -- archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ if test "${lt_cv_aix_libpath+set}" = set; then -+ aix_libpath=$lt_cv_aix_libpath -+else -+ if ${lt_cv_aix_libpath_+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - int - main () - { - - ; - return 0; - } - _ACEOF - if ac_fn_c_try_link "$LINENO"; then : - --lt_aix_libpath_sed=' -- /Import File Strings/,/^$/ { -- /^0/ { -- s/^0 *\(.*\)$/\1/ -- p -- } -- }' --aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` --# Check for a 64-bit object if we didn't find anything. --if test -z "$aix_libpath"; then -- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` --fi -+ lt_aix_libpath_sed=' -+ /Import File Strings/,/^$/ { -+ /^0/ { -+ s/^0 *\([^ ]*\) *$/\1/ -+ p -+ } -+ }' -+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -+ # Check for a 64-bit object if we didn't find anything. -+ if test -z "$lt_cv_aix_libpath_"; then -+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -+ fi - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext --if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -+ if test -z "$lt_cv_aix_libpath_"; then -+ lt_cv_aix_libpath_="/usr/lib:/lib" -+ fi -+ -+fi -+ -+ aix_libpath=$lt_cv_aix_libpath_ -+fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' -- # Exported symbols can be pulled into shared objects from archives -- whole_archive_flag_spec='$convenience' -+ if test "$with_gnu_ld" = yes; then -+ # We only use this code for GNU lds that support --whole-archive. -+ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -+ else -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec='$convenience' -+ fi - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) -@@ -8898,48 +9842,97 @@ if test -z "$aix_libpath"; then aix_libp - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. -- hardcode_libdir_flag_spec=' ' -- allow_undefined_flag=unsupported -- # Tell ltmain to make .lib files, not .a files. -- libext=lib -- # Tell ltmain to make .dll files, not .so files. -- shrext_cmds=".dll" -- # FIXME: Setting linknames here is a bad hack. -- archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' -- # The linker will automatically build a .lib file if we build a DLL. -- old_archive_from_new_cmds='true' -- # FIXME: Should let the user specify the lib program. -- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' -- fix_srcfile_path='' -- enable_shared_with_static_runtimes=yes -+ case $cc_basename in -+ cl*) -+ # Native MSVC -+ hardcode_libdir_flag_spec=' ' -+ allow_undefined_flag=unsupported -+ always_export_symbols=yes -+ file_list_spec='@' -+ # Tell ltmain to make .lib files, not .a files. -+ libext=lib -+ # Tell ltmain to make .dll files, not .so files. -+ shrext_cmds=".dll" -+ # FIXME: Setting linknames here is a bad hack. -+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' -+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; -+ else -+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; -+ fi~ -+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ -+ linknames=' -+ # The linker will not automatically build a static lib if we build a DLL. -+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true' -+ enable_shared_with_static_runtimes=yes -+ exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' -+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' -+ # Don't use ranlib -+ old_postinstall_cmds='chmod 644 $oldlib' -+ postlink_cmds='lt_outputfile="@OUTPUT@"~ -+ lt_tool_outputfile="@TOOL_OUTPUT@"~ -+ case $lt_outputfile in -+ *.exe|*.EXE) ;; -+ *) -+ lt_outputfile="$lt_outputfile.exe" -+ lt_tool_outputfile="$lt_tool_outputfile.exe" -+ ;; -+ esac~ -+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then -+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; -+ $RM "$lt_outputfile.manifest"; -+ fi' -+ ;; -+ *) -+ # Assume MSVC wrapper -+ hardcode_libdir_flag_spec=' ' -+ allow_undefined_flag=unsupported -+ # Tell ltmain to make .lib files, not .a files. -+ libext=lib -+ # Tell ltmain to make .dll files, not .so files. -+ shrext_cmds=".dll" -+ # FIXME: Setting linknames here is a bad hack. -+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' -+ # The linker will automatically build a .lib file if we build a DLL. -+ old_archive_from_new_cmds='true' -+ # FIXME: Should let the user specify the lib program. -+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' -+ enable_shared_with_static_runtimes=yes -+ ;; -+ esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported -- whole_archive_flag_spec='' -+ if test "$lt_cv_ld_force_load" = "yes"; then -+ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' -+ -+ else -+ whole_archive_flag_spec='' -+ fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then -- output_verbose_link_cmd=echo -+ output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi -@@ -8947,105 +9940,139 @@ if test -z "$aix_libpath"; then aix_libp - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - -- freebsd1*) -- ld_shlibs=no -- ;; -- - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. -- freebsd2*) -+ freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) -- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then -- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) -- if test "$GCC" = yes -a "$with_gnu_ld" = no; then -- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then -+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -- hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) -- if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) -- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) -- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) -- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ -+ # Older versions of the 11.00 compiler do not understand -b yet -+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -+$as_echo_n "checking if $CC understands -b... " >&6; } -+if ${lt_cv_prog_compiler__b+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_prog_compiler__b=no -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS -b" -+ echo "$lt_simple_link_test_code" > conftest.$ac_ext -+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then -+ # The linker can only warn and ignore the option if not recognized -+ # So say no if there are warnings -+ if test -s conftest.err; then -+ # Append any errors to the config.log. -+ cat conftest.err 1>&5 -+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if diff conftest.exp conftest.er2 >/dev/null; then -+ lt_cv_prog_compiler__b=yes -+ fi -+ else -+ lt_cv_prog_compiler__b=yes -+ fi -+ fi -+ $RM -r conftest* -+ LDFLAGS="$save_LDFLAGS" -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -+$as_echo "$lt_cv_prog_compiler__b" >&6; } -+ -+if test x"$lt_cv_prog_compiler__b" = xyes; then -+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+else -+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+fi -+ - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in -@@ -9063,36 +10090,49 @@ if test -z "$aix_libpath"; then aix_libp - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then -- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. -- save_LDFLAGS="$LDFLAGS" -- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --int foo(void) {} -+ # This should be the same for all languages, so no per-tag cache variable. -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -+if ${lt_cv_irix_exported_symbol+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+int foo (void) { return 0; } - _ACEOF - if ac_fn_c_try_link "$LINENO"; then : -- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' -- -+ lt_cv_irix_exported_symbol=yes -+else -+ lt_cv_irix_exported_symbol=no - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -- LDFLAGS="$save_LDFLAGS" -+ LDFLAGS="$save_LDFLAGS" -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -+$as_echo "$lt_cv_irix_exported_symbol" >&6; } -+ if test "$lt_cv_irix_exported_symbol" = yes; then -+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' -+ fi - else -- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' -+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' -+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - -@@ -9144,58 +10184,58 @@ rm -f core conftest.err conftest.$ac_obj - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported -- archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' -+ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' -- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' -- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' -- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' -- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ -- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' -+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' -- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' -+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; -@@ -9373,54 +10413,60 @@ x|xyes) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 - $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -- $RM conftest* -- echo "$lt_simple_compile_test_code" > conftest.$ac_ext -- -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+if ${lt_cv_archive_cmds_need_lc+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ $RM conftest* -+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext -+ -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then -- soname=conftest -- lib=conftest -- libobjs=conftest.$ac_objext -- deplibs= -- wl=$lt_prog_compiler_wl -- pic_flag=$lt_prog_compiler_pic -- compiler_flags=-v -- linker_flags=-v -- verstring= -- output_objdir=. -- libname=conftest -- lt_save_allow_undefined_flag=$allow_undefined_flag -- allow_undefined_flag= -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 -+ soname=conftest -+ lib=conftest -+ libobjs=conftest.$ac_objext -+ deplibs= -+ wl=$lt_prog_compiler_wl -+ pic_flag=$lt_prog_compiler_pic -+ compiler_flags=-v -+ linker_flags=-v -+ verstring= -+ output_objdir=. -+ libname=conftest -+ lt_save_allow_undefined_flag=$allow_undefined_flag -+ allow_undefined_flag= -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -- then -- archive_cmds_need_lc=no -- else -- archive_cmds_need_lc=yes -- fi -- allow_undefined_flag=$lt_save_allow_undefined_flag -- else -- cat conftest.err 1>&5 -- fi -- $RM conftest* -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 --$as_echo "$archive_cmds_need_lc" >&6; } -+ then -+ lt_cv_archive_cmds_need_lc=no -+ else -+ lt_cv_archive_cmds_need_lc=yes -+ fi -+ allow_undefined_flag=$lt_save_allow_undefined_flag -+ else -+ cat conftest.err 1>&5 -+ fi -+ $RM conftest* -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } -+ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; - esac - - - -@@ -9568,52 +10614,54 @@ esac - - - - - - - - -- -- -- -- -- - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 - $as_echo_n "checking dynamic linker characteristics... " >&6; } - - if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac -- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` -- if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then -+ case $host_os in -+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; -+ *) lt_sed_strip_eq="s,=/,/,g" ;; -+ esac -+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` -+ case $lt_search_path_spec in -+ *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. -- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` -- else -- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -- fi -+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` -+ ;; -+ *) -+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` -+ ;; -+ esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done -- lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' -+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' - BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { -@@ -9623,17 +10671,23 @@ BEGIN {RS=" "; FS="/|\n";} { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } - }'` -- sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` -+ # AWK program above erroneously prepends '/' to C:/dos/paths -+ # for these hosts. -+ case $host_os in -+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ -+ $SED 's,/\([A-Za-z]:\),\1,g'` ;; -+ esac -+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` - else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - fi - library_names_spec= - libname_spec='lib$name' - soname_spec= - shrext_cmds=".so" - postinstall_cmds= -@@ -9649,26 +10703,26 @@ need_lib_prefix=unknown - hardcode_into_libs=no - - # when you set need_version to no, make sure it does not cause -set_version - # flags to be left without arguments - need_version=unknown - - case $host_os in - aix3*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - - aix[4-9]*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else -@@ -9711,29 +10765,29 @@ amigaos*) - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. -- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' -+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - - beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - - bsdi[45]*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and -@@ -9742,18 +10796,19 @@ bsdi[45]*) - ;; - - cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - -- case $GCC,$host_os in -- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) -+ case $GCC,$cc_basename in -+ yes,*) -+ # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ -@@ -9764,46 +10819,93 @@ cygwin* | mingw* | pw32* | cegcc*) - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" -+ -+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -- sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -- if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then -- # It is most probably a Windows format PATH printed by -- # mingw gcc, but we are running on Cygwin. Gcc prints its search -- # path with ; separators, and with drive letters. We can handle the -- # drive letters (cygwin fileutils understands them), so leave them, -- # especially as we might pass files found there to a mingw objdump, -- # which wouldn't understand a cygwinified path. Ahh. -- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` -- else -- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -- fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac -+ dynamic_linker='Win32 ld.exe' -+ ;; -+ -+ *,cl*) -+ # Native MSVC -+ libname_spec='$name' -+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -+ library_names_spec='${libname}.dll.lib' -+ -+ case $build_os in -+ mingw*) -+ sys_lib_search_path_spec= -+ lt_save_ifs=$IFS -+ IFS=';' -+ for lt_path in $LIB -+ do -+ IFS=$lt_save_ifs -+ # Let DOS variable expansion print the short 8.3 style file name. -+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` -+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" -+ done -+ IFS=$lt_save_ifs -+ # Convert to MSYS style. -+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` -+ ;; -+ cygwin*) -+ # Convert to unix form, then to dos form, then back to unix form -+ # but this time dos style (no spaces!) so that the unix form looks -+ # like /cygdrive/c/PROGRA~1:/cygdr... -+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` -+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` -+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -+ ;; -+ *) -+ sys_lib_search_path_spec="$LIB" -+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then -+ # It is most probably a Windows format PATH. -+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` -+ else -+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -+ fi -+ # FIXME: find the short name or the path components, as spaces are -+ # common. (e.g. "Program Files" -> "PROGRA~1") -+ ;; -+ esac -+ -+ # DLL is installed to $(libdir)/../bin by postinstall_cmds -+ postinstall_cmds='base_file=`basename \${file}`~ -+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ -+ dldir=$destdir/`dirname \$dlpath`~ -+ test -d \$dldir || mkdir -p \$dldir~ -+ $install_prog $dir/$dlname \$dldir/$dlname' -+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ -+ dlpath=$dir/\$dldll~ -+ $RM \$dlpath' -+ shlibpath_overrides_runpath=yes -+ dynamic_linker='Win32 link.exe' - ;; - - *) -+ # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' -- ;; -- esac -- dynamic_linker='Win32 ld.exe' -+ dynamic_linker='Win32 ld.exe' -+ ;; -+ esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - - darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no -@@ -9814,36 +10916,32 @@ darwin* | rhapsody*) - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - - dgux*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - --freebsd1*) -- dynamic_linker=no -- ;; -- - freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in -- freebsd[123]*) objformat=aout ;; -+ freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no -@@ -9851,17 +10949,17 @@ freebsd* | dragonfly*) - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in -- freebsd2*) -+ freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) -@@ -9871,22 +10969,36 @@ freebsd* | dragonfly*) - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - - gnu*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ ;; -+ -+haiku*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ dynamic_linker="$host_os runtime_loader" -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - - hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no -@@ -9922,38 +11034,40 @@ hpux9* | hpux10* | hpux11*) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac -- # HP-UX runs *really* slowly unless shared libraries are mode 555. -+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' -+ # or fails outright, so override atomically: -+ install_override_mode=555 - ;; - - interix[3-9]*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - - irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' -@@ -9980,64 +11094,74 @@ irix5* | irix6* | nonstopux*) - hardcode_into_libs=yes - ;; - - # No shared lib support for Linux oldld, aout, or coff. - linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - --# This must be Linux ELF. --linux* | k*bsd*-gnu) -- version_type=linux -+# This must be glibc/ELF. -+linux* | k*bsd*-gnu | kopensolaris*-gnu) -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no -+ - # Some binutils ld are patched to set DT_RUNPATH -- save_LDFLAGS=$LDFLAGS -- save_libdir=$libdir -- eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ -- LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ if ${lt_cv_shlibpath_overrides_runpath+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_shlibpath_overrides_runpath=no -+ save_LDFLAGS=$LDFLAGS -+ save_libdir=$libdir -+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ -+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - int - main () - { - - ; - return 0; - } - _ACEOF - if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : -- shlibpath_overrides_runpath=yes -+ lt_cv_shlibpath_overrides_runpath=yes - fi - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -- LDFLAGS=$save_LDFLAGS -- libdir=$save_libdir -+ LDFLAGS=$save_LDFLAGS -+ libdir=$save_libdir -+ -+fi -+ -+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then -- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" -+ - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. -@@ -10058,17 +11182,17 @@ netbsd*) - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - - newsos6) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - - *nto* | *qnx*) - version_type=qnx - need_lib_prefix=no -@@ -10127,17 +11251,17 @@ osf3* | osf4* | osf5*) - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - - rdos*) - dynamic_linker=no - ;; - - solaris*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable -@@ -10152,17 +11276,17 @@ sunos4*) - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - - sysv4 | sysv4.3*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH -@@ -10176,17 +11300,17 @@ sysv4 | sysv4.3*) - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - - sysv4*MP*) - if test -d /usr/nec ;then -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf -@@ -10207,27 +11331,27 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - - tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - - uts4*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - - *) - dynamic_linker=no - ;; -@@ -10329,16 +11453,21 @@ fi - - - - - - - - -+ -+ -+ -+ -+ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 - $as_echo_n "checking how to hardcode library paths into programs... " >&6; } - hardcode_action= - if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. -@@ -10401,17 +11530,17 @@ else - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 - $as_echo_n "checking for dlopen in -ldl... " >&6; } --if test "${ac_cv_lib_dl_dlopen+set}" = set; then : -+if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-ldl $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -10435,36 +11564,36 @@ else - ac_cv_lib_dl_dlopen=no - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 - $as_echo "$ac_cv_lib_dl_dlopen" >&6; } --if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : -+if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" - else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - - fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" --if test "x$ac_cv_func_shl_load" = x""yes; then : -+if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 - $as_echo_n "checking for shl_load in -ldld... " >&6; } --if test "${ac_cv_lib_dld_shl_load+set}" = set; then : -+if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-ldld $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -10488,26 +11617,26 @@ else - ac_cv_lib_dld_shl_load=no - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 - $as_echo "$ac_cv_lib_dld_shl_load" >&6; } --if test "x$ac_cv_lib_dld_shl_load" = x""yes; then : -+if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" - else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" --if test "x$ac_cv_func_dlopen" = x""yes; then : -+if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 - $as_echo_n "checking for dlopen in -ldl... " >&6; } --if test "${ac_cv_lib_dl_dlopen+set}" = set; then : -+if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-ldl $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -10531,22 +11660,22 @@ else - ac_cv_lib_dl_dlopen=no - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 - $as_echo "$ac_cv_lib_dl_dlopen" >&6; } --if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : -+if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 - $as_echo_n "checking for dlopen in -lsvld... " >&6; } --if test "${ac_cv_lib_svld_dlopen+set}" = set; then : -+if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-lsvld $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -10570,22 +11699,22 @@ else - ac_cv_lib_svld_dlopen=no - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 - $as_echo "$ac_cv_lib_svld_dlopen" >&6; } --if test "x$ac_cv_lib_svld_dlopen" = x""yes; then : -+if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 - $as_echo_n "checking for dld_link in -ldld... " >&6; } --if test "${ac_cv_lib_dld_dld_link+set}" = set; then : -+if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-ldld $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -10609,17 +11738,17 @@ else - ac_cv_lib_dld_dld_link=no - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 - $as_echo "$ac_cv_lib_dld_dld_link" >&6; } --if test "x$ac_cv_lib_dld_dld_link" = x""yes; then : -+if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" - fi - - - fi - - - fi -@@ -10650,26 +11779,26 @@ fi - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 - $as_echo_n "checking whether a program can dlopen itself... " >&6; } --if test "${lt_cv_dlopen_self+set}" = set; then : -+if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross - else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 10661 "configure" -+#line $LINENO "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H - #include - #endif - - #include - -@@ -10700,26 +11829,36 @@ else - # else - # define LT_DLLAZY_OR_NOW 0 - # endif - # endif - # endif - # endif - #endif - --void fnord() { int i=42;} -+/* When -fvisbility=hidden is used, assume the code has been annotated -+ correspondingly for the symbols needed. */ -+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -+int fnord () __attribute__((visibility("default"))); -+#endif -+ -+int fnord () { return 42; } - int main () - { - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; -- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -+ else -+ { -+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -+ else puts (dlerror ()); -+ } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; - } - _LT_EOF -@@ -10746,26 +11885,26 @@ rm -fr conftest* - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 - $as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 - $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } --if test "${lt_cv_dlopen_self_static+set}" = set; then : -+if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross - else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 10757 "configure" -+#line $LINENO "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H - #include - #endif - - #include - -@@ -10796,26 +11935,36 @@ else - # else - # define LT_DLLAZY_OR_NOW 0 - # endif - # endif - # endif - # endif - #endif - --void fnord() { int i=42;} -+/* When -fvisbility=hidden is used, assume the code has been annotated -+ correspondingly for the symbols needed. */ -+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -+int fnord () __attribute__((visibility("default"))); -+#endif -+ -+int fnord () { return 42; } - int main () - { - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; -- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -+ else -+ { -+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -+ else puts (dlerror ()); -+ } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; - } - _LT_EOF -@@ -10974,26 +12123,1043 @@ CC="$lt_save_CC" - - - - - - - - -+ -+ - ac_config_commands="$ac_config_commands libtool" - - - - - # Only expand once: - - - - -+# Test for 64-bit build. -+# The cast to long int works around a bug in the HP C Compiler -+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+# This bug is HP SR number 8606223364. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 -+$as_echo_n "checking size of size_t... " >&6; } -+if ${ac_cv_sizeof_size_t+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : -+ -+else -+ if test "$ac_cv_type_size_t" = yes; then -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error 77 "cannot compute sizeof (size_t) -+See \`config.log' for more details" "$LINENO" 5; } -+ else -+ ac_cv_sizeof_size_t=0 -+ fi -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 -+$as_echo "$ac_cv_sizeof_size_t" >&6; } -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t -+_ACEOF -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5 -+$as_echo_n "checking for C compiler vendor... " >&6; } -+if ${ax_cv_c_compiler_vendor+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ # note: don't check for gcc first since some other compilers define __GNUC__ -+ vendors="intel: __ICC,__ECC,__INTEL_COMPILER -+ ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__ -+ pathscale: __PATHCC__,__PATHSCALE__ -+ clang: __clang__ -+ gnu: __GNUC__ -+ sun: __SUNPRO_C,__SUNPRO_CC -+ hp: __HP_cc,__HP_aCC -+ dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER -+ borland: __BORLANDC__,__TURBOC__ -+ comeau: __COMO__ -+ cray: _CRAYC -+ kai: __KCC -+ lcc: __LCC__ -+ sgi: __sgi,sgi -+ microsoft: _MSC_VER -+ metrowerks: __MWERKS__ -+ watcom: __WATCOMC__ -+ portland: __PGI -+ unknown: UNKNOWN" -+ for ventest in $vendors; do -+ case $ventest in -+ *:) vendor=$ventest; continue ;; -+ *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; -+ esac -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ #if !($vencpp) -+ thisisanerror; -+ #endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ break -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+ ax_cv_c_compiler_vendor=`echo $vendor | cut -d: -f1` -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5 -+$as_echo "$ax_cv_c_compiler_vendor" >&6; } -+ -+ -+ -+ -+ -+ -+# Check whether --enable-portable-binary was given. -+if test "${enable_portable_binary+set}" = set; then : -+ enableval=$enable_portable_binary; acx_maxopt_portable=$enableval -+else -+ acx_maxopt_portable=no -+fi -+ -+ -+# Try to determine "good" native compiler flags if none specified via CFLAGS -+if test "$ac_test_CFLAGS" != "set"; then -+ CFLAGS="" -+ case $ax_cv_c_compiler_vendor in -+ dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host" -+ if test "x$acx_maxopt_portable" = xno; then -+ CFLAGS="$CFLAGS -arch host" -+ fi;; -+ -+ sun) CFLAGS="-native -fast -xO5 -dalign" -+ if test "x$acx_maxopt_portable" = xyes; then -+ CFLAGS="$CFLAGS -xarch=generic" -+ fi;; -+ -+ hp) CFLAGS="+Oall +Optrs_ansi +DSnative" -+ if test "x$acx_maxopt_portable" = xyes; then -+ CFLAGS="$CFLAGS +DAportable" -+ fi;; -+ -+ ibm) if test "x$acx_maxopt_portable" = xno; then -+ xlc_opt="-qarch=auto -qtune=auto" -+ else -+ xlc_opt="-qtune=auto" -+ fi -+ as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$xlc_opt" | $as_tr_sh` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $xlc_opt" >&5 -+$as_echo_n "checking whether C compiler accepts $xlc_opt... " >&6; } -+if eval \${$as_CACHEVAR+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ ax_check_save_flags=$CFLAGS -+ CFLAGS="$CFLAGS $xlc_opt" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ eval "$as_CACHEVAR=yes" -+else -+ eval "$as_CACHEVAR=no" -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ CFLAGS=$ax_check_save_flags -+fi -+eval ac_res=\$$as_CACHEVAR -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : -+ CFLAGS="-O3 -qansialias -w $xlc_opt" -+else -+ CFLAGS="-O3 -qansialias -w" -+ echo "******************************************************" -+ echo "* You seem to have the IBM C compiler. It is *" -+ echo "* recommended for best performance that you use: *" -+ echo "* *" -+ echo "* CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *" -+ echo "* ^^^ ^^^ *" -+ echo "* where xxx is pwr2, pwr3, 604, or whatever kind of *" -+ echo "* CPU you have. (Set the CFLAGS environment var. *" -+ echo "* and re-run configure.) For more info, man cc. *" -+ echo "******************************************************" -+fi -+ -+ ;; -+ -+ intel) CFLAGS="-O3 -ansi_alias" -+ if test "x$acx_maxopt_portable" = xno; then -+ icc_archflag=unknown -+ icc_flags="" -+ case $host_cpu in -+ i686*|x86_64*) -+ # icc accepts gcc assembly syntax, so these should work: -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5 -+$as_echo_n "checking for x86 cpuid 0 output... " >&6; } -+if ${ax_cv_gcc_x86_cpuid_0+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test "$cross_compiling" = yes; then : -+ ax_cv_gcc_x86_cpuid_0=unknown -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+ -+ int op = 0, eax, ebx, ecx, edx; -+ FILE *f; -+ __asm__("cpuid" -+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) -+ : "a" (op)); -+ f = fopen("conftest_cpuid", "w"); if (!f) return 1; -+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); -+ fclose(f); -+ return 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid -+else -+ ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5 -+$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; } -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5 -+$as_echo_n "checking for x86 cpuid 1 output... " >&6; } -+if ${ax_cv_gcc_x86_cpuid_1+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test "$cross_compiling" = yes; then : -+ ax_cv_gcc_x86_cpuid_1=unknown -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+ -+ int op = 1, eax, ebx, ecx, edx; -+ FILE *f; -+ __asm__("cpuid" -+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) -+ : "a" (op)); -+ f = fopen("conftest_cpuid", "w"); if (!f) return 1; -+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); -+ fclose(f); -+ return 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid -+else -+ ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5 -+$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; } -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+ case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG -+ *:756e6547:*:*) # Intel -+ case $ax_cv_gcc_x86_cpuid_1 in -+ *6a?:*[234]:*:*|*6[789b]?:*:*:*) icc_flags="-xK";; -+ *f3[347]:*:*:*|*f41347:*:*:*) icc_flags="-xP -xN -xW -xK";; -+ *f??:*:*:*) icc_flags="-xN -xW -xK";; -+ esac ;; -+ esac ;; -+ esac -+ if test "x$icc_flags" != x; then -+ for flag in $icc_flags; do -+ as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -+$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -+if eval \${$as_CACHEVAR+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ ax_check_save_flags=$CFLAGS -+ CFLAGS="$CFLAGS $flag" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ eval "$as_CACHEVAR=yes" -+else -+ eval "$as_CACHEVAR=no" -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ CFLAGS=$ax_check_save_flags -+fi -+eval ac_res=\$$as_CACHEVAR -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : -+ icc_archflag=$flag; break -+else -+ : -+fi -+ -+ done -+ fi -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icc architecture flag" >&5 -+$as_echo_n "checking for icc architecture flag... " >&6; } -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icc_archflag" >&5 -+$as_echo "$icc_archflag" >&6; } -+ if test "x$icc_archflag" != xunknown; then -+ CFLAGS="$CFLAGS $icc_archflag" -+ fi -+ fi -+ ;; -+ -+ gnu) -+ # default optimization flags for gcc on all systems -+ CFLAGS="-O3 -fomit-frame-pointer" -+ -+ # -malign-double for x86 systems -+ # LIBFFI -- DON'T DO THIS - CHANGES ABI -+ # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double") -+ -+ # -fstrict-aliasing for gcc-2.95+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstrict-aliasing" >&5 -+$as_echo_n "checking whether C compiler accepts -fstrict-aliasing... " >&6; } -+if ${ax_cv_check_cflags___fstrict_aliasing+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ ax_check_save_flags=$CFLAGS -+ CFLAGS="$CFLAGS -fstrict-aliasing" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ax_cv_check_cflags___fstrict_aliasing=yes -+else -+ ax_cv_check_cflags___fstrict_aliasing=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ CFLAGS=$ax_check_save_flags -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fstrict_aliasing" >&5 -+$as_echo "$ax_cv_check_cflags___fstrict_aliasing" >&6; } -+if test x"$ax_cv_check_cflags___fstrict_aliasing" = xyes; then : -+ CFLAGS="$CFLAGS -fstrict-aliasing" -+else -+ : -+fi -+ -+ -+ # note that we enable "unsafe" fp optimization with other compilers, too -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -ffast-math" >&5 -+$as_echo_n "checking whether C compiler accepts -ffast-math... " >&6; } -+if ${ax_cv_check_cflags___ffast_math+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ ax_check_save_flags=$CFLAGS -+ CFLAGS="$CFLAGS -ffast-math" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ax_cv_check_cflags___ffast_math=yes -+else -+ ax_cv_check_cflags___ffast_math=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ CFLAGS=$ax_check_save_flags -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___ffast_math" >&5 -+$as_echo "$ax_cv_check_cflags___ffast_math" >&6; } -+if test x"$ax_cv_check_cflags___ffast_math" = xyes; then : -+ CFLAGS="$CFLAGS -ffast-math" -+else -+ : -+fi -+ -+ -+ -+ -+ -+ -+# Check whether --with-gcc-arch was given. -+if test "${with_gcc_arch+set}" = set; then : -+ withval=$with_gcc_arch; ax_gcc_arch=$withval -+else -+ ax_gcc_arch=yes -+fi -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5 -+$as_echo_n "checking for gcc architecture flag... " >&6; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -+$as_echo "" >&6; } -+if ${ax_cv_gcc_archflag+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ax_cv_gcc_archflag="unknown" -+ -+if test "$GCC" = yes; then -+ -+if test "x$ax_gcc_arch" = xyes; then -+ax_gcc_arch="" -+if test "$cross_compiling" = no; then -+case $host_cpu in -+ i[3456]86*|x86_64*) # use cpuid codes -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5 -+$as_echo_n "checking for x86 cpuid 0 output... " >&6; } -+if ${ax_cv_gcc_x86_cpuid_0+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test "$cross_compiling" = yes; then : -+ ax_cv_gcc_x86_cpuid_0=unknown -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+ -+ int op = 0, eax, ebx, ecx, edx; -+ FILE *f; -+ __asm__("cpuid" -+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) -+ : "a" (op)); -+ f = fopen("conftest_cpuid", "w"); if (!f) return 1; -+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); -+ fclose(f); -+ return 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid -+else -+ ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5 -+$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; } -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5 -+$as_echo_n "checking for x86 cpuid 1 output... " >&6; } -+if ${ax_cv_gcc_x86_cpuid_1+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test "$cross_compiling" = yes; then : -+ ax_cv_gcc_x86_cpuid_1=unknown -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+ -+ int op = 1, eax, ebx, ecx, edx; -+ FILE *f; -+ __asm__("cpuid" -+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) -+ : "a" (op)); -+ f = fopen("conftest_cpuid", "w"); if (!f) return 1; -+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); -+ fclose(f); -+ return 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid -+else -+ ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5 -+$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; } -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+ case $ax_cv_gcc_x86_cpuid_0 in -+ *:756e6547:*:*) # Intel -+ case $ax_cv_gcc_x86_cpuid_1 in -+ *5[48]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;; -+ *5??:*:*:*) ax_gcc_arch=pentium ;; -+ *0?6[3456]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; -+ *0?6a?:*[01]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; -+ *0?6a?:*[234]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; -+ *0?6[9de]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;; -+ *0?6[78b]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; -+ *0?6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;; -+ *1?6[7d]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;; -+ *1?6[aef]?:*:*:*|*2?6[5cef]?:*:*:*) ax_gcc_arch="corei7 core2 pentium-m pentium3 pentiumpro" ;; -+ *1?6c?:*:*:*|*[23]?66?:*:*:*) ax_gcc_arch="atom core2 pentium-m pentium3 pentiumpro" ;; -+ *2?6[ad]?:*:*:*) ax_gcc_arch="corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; -+ *0?6??:*:*:*) ax_gcc_arch=pentiumpro ;; -+ *6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;; -+ ?000?f3[347]:*:*:*|?000?f41347:*:*:*|?000?f6?:*:*:*) -+ case $host_cpu in -+ x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;; -+ *) ax_gcc_arch="prescott pentium4 pentiumpro" ;; -+ esac ;; -+ ?000?f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";; -+ esac ;; -+ *:68747541:*:*) # AMD -+ case $ax_cv_gcc_x86_cpuid_1 in -+ *5[67]?:*:*:*) ax_gcc_arch=k6 ;; -+ *5[8d]?:*:*:*) ax_gcc_arch="k6-2 k6" ;; -+ *5[9]?:*:*:*) ax_gcc_arch="k6-3 k6" ;; -+ *60?:*:*:*) ax_gcc_arch=k7 ;; -+ *6[12]?:*:*:*) ax_gcc_arch="athlon k7" ;; -+ *6[34]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;; -+ *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;; -+ *6[68a]?:*:*:*) -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0x80000006 output" >&5 -+$as_echo_n "checking for x86 cpuid 0x80000006 output... " >&6; } -+if ${ax_cv_gcc_x86_cpuid_0x80000006+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test "$cross_compiling" = yes; then : -+ ax_cv_gcc_x86_cpuid_0x80000006=unknown -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+ -+ int op = 0x80000006, eax, ebx, ecx, edx; -+ FILE *f; -+ __asm__("cpuid" -+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) -+ : "a" (op)); -+ f = fopen("conftest_cpuid", "w"); if (!f) return 1; -+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); -+ fclose(f); -+ return 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ ax_cv_gcc_x86_cpuid_0x80000006=`cat conftest_cpuid`; rm -f conftest_cpuid -+else -+ ax_cv_gcc_x86_cpuid_0x80000006=unknown; rm -f conftest_cpuid -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x80000006" >&5 -+$as_echo "$ax_cv_gcc_x86_cpuid_0x80000006" >&6; } -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ # L2 cache size -+ case $ax_cv_gcc_x86_cpuid_0x80000006 in -+ *:*:*[1-9a-f]??????:*) # (L2 = ecx >> 16) >= 256 -+ ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;; -+ *) ax_gcc_arch="athlon-4 athlon k7" ;; -+ esac ;; -+ ?00??f[4cef8b]?:*:*:*) ax_gcc_arch="athlon64 k8" ;; -+ ?00??f5?:*:*:*) ax_gcc_arch="opteron k8" ;; -+ ?00??f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;; -+ ?00??f??:*:*:*) ax_gcc_arch="k8" ;; -+ ?05??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;; -+ ?06??f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;; -+ *f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;; -+ esac ;; -+ *:746e6543:*:*) # IDT -+ case $ax_cv_gcc_x86_cpuid_1 in -+ *54?:*:*:*) ax_gcc_arch=winchip-c6 ;; -+ *58?:*:*:*) ax_gcc_arch=winchip2 ;; -+ *6[78]?:*:*:*) ax_gcc_arch=c3 ;; -+ *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;; -+ esac ;; -+ esac -+ if test x"$ax_gcc_arch" = x; then # fallback -+ case $host_cpu in -+ i586*) ax_gcc_arch=pentium ;; -+ i686*) ax_gcc_arch=pentiumpro ;; -+ esac -+ fi -+ ;; -+ -+ sparc*) -+ # Extract the first word of "prtdiag", so it can be a program name with args. -+set dummy prtdiag; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_path_PRTDIAG+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ case $PRTDIAG in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_PRTDIAG="$PRTDIAG" # Let the user override the test with a path. -+ ;; -+ *) -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+as_dummy="$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/" -+for as_dir in $as_dummy -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_path_PRTDIAG="$as_dir/$ac_word$ac_exec_ext" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+ test -z "$ac_cv_path_PRTDIAG" && ac_cv_path_PRTDIAG="prtdiag" -+ ;; -+esac -+fi -+PRTDIAG=$ac_cv_path_PRTDIAG -+if test -n "$PRTDIAG"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRTDIAG" >&5 -+$as_echo "$PRTDIAG" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null` -+ cputype=`echo "$cputype" | tr -d ' -' | sed 's/SPARCIIi/SPARCII/' | tr $as_cr_LETTERS $as_cr_letters` -+ case $cputype in -+ *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;; -+ *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;; -+ *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;; -+ *supersparc*|*tms390z5[05]*) ax_gcc_arch="supersparc v8" ;; -+ *hypersparc*|*rt62[056]*) ax_gcc_arch="hypersparc v8" ;; -+ *cypress*) ax_gcc_arch=cypress ;; -+ esac ;; -+ -+ alphaev5) ax_gcc_arch=ev5 ;; -+ alphaev56) ax_gcc_arch=ev56 ;; -+ alphapca56) ax_gcc_arch="pca56 ev56" ;; -+ alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;; -+ alphaev6) ax_gcc_arch=ev6 ;; -+ alphaev67) ax_gcc_arch=ev67 ;; -+ alphaev68) ax_gcc_arch="ev68 ev67" ;; -+ alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;; -+ alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;; -+ alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;; -+ -+ powerpc*) -+ cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null` -+ cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'` -+ case $cputype in -+ *750*) ax_gcc_arch="750 G3" ;; -+ *740[0-9]*) ax_gcc_arch="$cputype 7400 G4" ;; -+ *74[4-5][0-9]*) ax_gcc_arch="$cputype 7450 G4" ;; -+ *74[0-9][0-9]*) ax_gcc_arch="$cputype G4" ;; -+ *970*) ax_gcc_arch="970 G5 power4";; -+ *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";; -+ *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";; -+ 603ev|8240) ax_gcc_arch="$cputype 603e 603";; -+ *) ax_gcc_arch=$cputype ;; -+ esac -+ ax_gcc_arch="$ax_gcc_arch powerpc" -+ ;; -+esac -+fi # not cross-compiling -+fi # guess arch -+ -+if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then -+for arch in $ax_gcc_arch; do -+ if test "x$acx_maxopt_portable" = xyes; then # if we require portable code -+ flags="-mtune=$arch" -+ # -mcpu=$arch and m$arch generate nonportable code on every arch except -+ # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr. -+ case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac -+ else -+ flags="-march=$arch -mcpu=$arch -m$arch" -+ fi -+ for flag in $flags; do -+ as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -+$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -+if eval \${$as_CACHEVAR+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ ax_check_save_flags=$CFLAGS -+ CFLAGS="$CFLAGS $flag" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ eval "$as_CACHEVAR=yes" -+else -+ eval "$as_CACHEVAR=no" -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ CFLAGS=$ax_check_save_flags -+fi -+eval ac_res=\$$as_CACHEVAR -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : -+ ax_cv_gcc_archflag=$flag; break -+else -+ : -+fi -+ -+ done -+ test "x$ax_cv_gcc_archflag" = xunknown || break -+done -+fi -+ -+fi # $GCC=yes -+ -+fi -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5 -+$as_echo_n "checking for gcc architecture flag... " >&6; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_archflag" >&5 -+$as_echo "$ax_cv_gcc_archflag" >&6; } -+if test "x$ax_cv_gcc_archflag" = xunknown; then -+ : -+else -+ CFLAGS="$CFLAGS $ax_cv_gcc_archflag" -+fi -+ -+ ;; -+ esac -+ -+ if test -z "$CFLAGS"; then -+ echo "" -+ echo "********************************************************" -+ echo "* WARNING: Don't know the best CFLAGS for this system *" -+ echo "* Use ./configure CFLAGS=... to specify your own flags *" -+ echo "* (otherwise, a default of CFLAGS=-O3 will be used) *" -+ echo "********************************************************" -+ echo "" -+ CFLAGS="-O3" -+ fi -+ -+ as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CFLAGS" | $as_tr_sh` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CFLAGS" >&5 -+$as_echo_n "checking whether C compiler accepts $CFLAGS... " >&6; } -+if eval \${$as_CACHEVAR+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ ax_check_save_flags=$CFLAGS -+ CFLAGS="$CFLAGS $CFLAGS" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ eval "$as_CACHEVAR=yes" -+else -+ eval "$as_CACHEVAR=no" -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ CFLAGS=$ax_check_save_flags -+fi -+eval ac_res=\$$as_CACHEVAR -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : -+ : -+else -+ -+ echo "" -+ echo "********************************************************" -+ echo "* WARNING: The guessed CFLAGS don't seem to work with *" -+ echo "* your compiler. *" -+ echo "* Use ./configure CFLAGS=... to specify your own flags *" -+ echo "********************************************************" -+ echo "" -+ CFLAGS="" -+ -+fi -+ -+ -+fi -+ -+# The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro -+# compiler. -+if test "$ax_cv_c_compiler_vendor" != "sun"; then -+ if ${CFLAGS+:} false; then : -+ case " $CFLAGS " in -+ *" "*) -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains "; } >&5 -+ (: CFLAGS already contains ) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } -+ ;; -+ *) -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \""; } >&5 -+ (: CFLAGS="$CFLAGS ") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } -+ CFLAGS="$CFLAGS " -+ ;; -+ esac -+else -+ CFLAGS="" -+fi -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for maximum warnings" >&5 -+$as_echo_n "checking CFLAGS for maximum warnings... " >&6; } -+if ${ac_cv_cflags_warn_all+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_cv_cflags_warn_all="no, unknown" -+ac_save_CFLAGS="$CFLAGS" -+for ac_arg in "-warn all % -warn all" "-pedantic % -Wall" "-xstrconst % -v" "-std1 % -verbose -w0 -warnprotos" "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" "-ansi -ansiE % -fullwarn" "+ESlit % +w1" "-Xc % -pvctl,fullmsg" "-h conform % -h msglevel 2" # -+do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_cflags_warn_all=`echo $ac_arg | sed -e 's,.*% *,,'` ; break -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+CFLAGS="$ac_save_CFLAGS" -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_warn_all" >&5 -+$as_echo "$ac_cv_cflags_warn_all" >&6; } -+ -+case ".$ac_cv_cflags_warn_all" in -+ .ok|.ok,*) ;; -+ .|.no|.no,*) ;; -+ *) if ${CFLAGS+:} false; then : -+ case " $CFLAGS " in -+ *" $ac_cv_cflags_warn_all "*) -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$ac_cv_cflags_warn_all"; } >&5 -+ (: CFLAGS already contains $ac_cv_cflags_warn_all) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } -+ ;; -+ *) -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ac_cv_cflags_warn_all\""; } >&5 -+ (: CFLAGS="$CFLAGS $ac_cv_cflags_warn_all") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } -+ CFLAGS="$CFLAGS $ac_cv_cflags_warn_all" -+ ;; -+ esac -+else -+ CFLAGS="$ac_cv_cflags_warn_all" -+fi -+ ;; -+esac -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+fi -+ -+if test "x$GCC" = "xyes"; then -+ CFLAGS="$CFLAGS -fexceptions" -+ touch local.exp -+else -+ cat > local.exp <&5 - $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } - # Check whether --enable-maintainer-mode was given. - if test "${enable_maintainer_mode+set}" = set; then : - enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval - else - USE_MAINTAINER_MODE=no -@@ -11011,61 +13177,61 @@ fi - - MAINT=$MAINTAINER_MODE_TRUE - - - - for ac_header in sys/mman.h - do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" --if test "x$ac_cv_header_sys_mman_h" = x""yes; then : -+if test "x$ac_cv_header_sys_mman_h" = xyes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_SYS_MMAN_H 1 - _ACEOF - - fi - - done - - for ac_func in mmap - do : - ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" --if test "x$ac_cv_func_mmap" = x""yes; then : -+if test "x$ac_cv_func_mmap" = xyes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_MMAP 1 - _ACEOF - - fi - done - - - ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" --if test "x$ac_cv_header_sys_mman_h" = x""yes; then : -+if test "x$ac_cv_header_sys_mman_h" = xyes; then : - libffi_header_sys_mman_h=yes - else - libffi_header_sys_mman_h=no - fi - - - ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" --if test "x$ac_cv_func_mmap" = x""yes; then : -+if test "x$ac_cv_func_mmap" = xyes; then : - libffi_func_mmap=yes - else - libffi_func_mmap=no - fi - - if test "$libffi_header_sys_mman_h" != yes \ - || test "$libffi_func_mmap" != yes; then - ac_cv_func_mmap_file=no - ac_cv_func_mmap_dev_zero=no - ac_cv_func_mmap_anon=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5 - $as_echo_n "checking whether read-only mmap of a plain file works... " >&6; } --if test "${ac_cv_func_mmap_file+set}" = set; then : -+if ${ac_cv_func_mmap_file+:} false; then : - $as_echo_n "(cached) " >&6 - else - # Add a system to this blacklist if - # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a - # memory area containing the same data that you'd get if you applied - # read() to the same fd. The only system known to have a problem here - # is VMS, where text files have record structure. - case "$host_os" in -@@ -11074,17 +13240,17 @@ else - *) - ac_cv_func_mmap_file=yes;; - esac - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5 - $as_echo "$ac_cv_func_mmap_file" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5 - $as_echo_n "checking whether mmap from /dev/zero works... " >&6; } --if test "${ac_cv_func_mmap_dev_zero+set}" = set; then : -+if ${ac_cv_func_mmap_dev_zero+:} false; then : - $as_echo_n "(cached) " >&6 - else - # Add a system to this blacklist if it has mmap() but /dev/zero - # does not exist, or if mmapping /dev/zero does not give anonymous - # zeroed pages with both the following properties: - # 1. If you map N consecutive pages in with one call, and then - # unmap any subset of those pages, the pages that were not - # explicitly unmapped remain accessible. -@@ -11100,17 +13266,17 @@ else - esac - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5 - $as_echo "$ac_cv_func_mmap_dev_zero" >&6; } - - # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5 - $as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; } --if test "${ac_cv_decl_map_anon+set}" = set; then : -+if ${ac_cv_decl_map_anon+:} false; then : - $as_echo_n "(cached) " >&6 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - #include - #include - -@@ -11136,17 +13302,17 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5 - $as_echo "$ac_cv_decl_map_anon" >&6; } - - if test $ac_cv_decl_map_anon = no; then - ac_cv_func_mmap_anon=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap with MAP_ANON(YMOUS) works" >&5 - $as_echo_n "checking whether mmap with MAP_ANON(YMOUS) works... " >&6; } --if test "${ac_cv_func_mmap_anon+set}" = set; then : -+if ${ac_cv_func_mmap_anon+:} false; then : - $as_echo_n "(cached) " >&6 - else - # Add a system to this blacklist if it has mmap() and MAP_ANON or - # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) - # doesn't give anonymous zeroed pages with the same properties listed - # above for use of /dev/zero. - # Systems known to be in this category are Windows, VMS, and SCO Unix. - case "$host_os" in -@@ -11183,114 +13349,197 @@ fi - TESTSUBDIR_FALSE='#' - else - TESTSUBDIR_TRUE='#' - TESTSUBDIR_FALSE= - fi - - - TARGETDIR="unknown" -+HAVE_LONG_DOUBLE_VARIANT=0 - case "$host" in -+ aarch64*-*-*) -+ TARGET=AARCH64; TARGETDIR=aarch64 -+ ;; -+ - alpha*-*-*) - TARGET=ALPHA; TARGETDIR=alpha; - # Support 128-bit long double, changeable via command-line switch. - HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)' - ;; - -+ arc*-*-*) -+ TARGET=ARC; TARGETDIR=arc -+ ;; -+ - arm*-*-*) - TARGET=ARM; TARGETDIR=arm - ;; - - amd64-*-freebsd* | amd64-*-openbsd*) - TARGET=X86_64; TARGETDIR=x86 - ;; - - amd64-*-freebsd*) - TARGET=X86_64; TARGETDIR=x86 -+ ;; -+ -+ amd64-*-freebsd*) -+ TARGET=X86_64; TARGETDIR=x86 - ;; - - avr32*-*-*) - TARGET=AVR32; TARGETDIR=avr32 - ;; - -+ bfin*) -+ TARGET=BFIN; TARGETDIR=bfin -+ ;; -+ - cris-*-*) - TARGET=LIBFFI_CRIS; TARGETDIR=cris - ;; - - frv-*-*) - TARGET=FRV; TARGETDIR=frv - ;; - -- hppa*-*-linux* | hppa*-*-openbsd* | parisc*-*-linux*) -+ hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*) - TARGET=PA_LINUX; TARGETDIR=pa - ;; - hppa*64-*-hpux*) - TARGET=PA64_HPUX; TARGETDIR=pa - ;; - hppa*-*-hpux*) - TARGET=PA_HPUX; TARGETDIR=pa - ;; - - i?86-*-freebsd* | i?86-*-openbsd*) - TARGET=X86_FREEBSD; TARGETDIR=x86 - ;; -- i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2*) -+ i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix*) - TARGET=X86_WIN32; TARGETDIR=x86 -- # All mingw/cygwin/win32 builds require this for sharedlib -- AM_LTLDFLAGS="-no-undefined" -+ # All mingw/cygwin/win32 builds require -no-undefined for sharedlib. -+ # We must also check with_cross_host to decide if this is a native -+ # or cross-build and select where to install dlls appropriately. -+ if test -n "$with_cross_host" && -+ test x"$with_cross_host" != x"no"; then -+ AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"'; -+ else -+ AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"'; -+ fi - ;; - i?86-*-darwin*) - TARGET=X86_DARWIN; TARGETDIR=x86 - ;; - i?86-*-solaris2.1[0-9]*) -- TARGET=X86_64; TARGETDIR=x86 -- ;; -- i?86-*-*) -- TARGET=X86; TARGETDIR=x86 -+ TARGETDIR=x86 -+ if test $ac_cv_sizeof_size_t = 4; then -+ TARGET=X86; -+ else -+ TARGET=X86_64; -+ fi -+ ;; -+ -+ x86_64-*-darwin*) -+ TARGET=X86_DARWIN; TARGETDIR=x86 -+ ;; -+ -+ x86_64-*-cygwin* | x86_64-*-mingw*) -+ TARGET=X86_WIN64; TARGETDIR=x86 -+ # All mingw/cygwin/win32 builds require -no-undefined for sharedlib. -+ # We must also check with_cross_host to decide if this is a native -+ # or cross-build and select where to install dlls appropriately. -+ if test -n "$with_cross_host" && -+ test x"$with_cross_host" != x"no"; then -+ AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"'; -+ else -+ AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"'; -+ fi -+ ;; -+ -+ i?86-*-* | x86_64-*-*) -+ TARGETDIR=x86 -+ if test $ac_cv_sizeof_size_t = 4; then -+ case "$host" in -+ *-gnux32) -+ TARGET=X86_64 -+ ;; -+ *) -+ TARGET=X86 -+ ;; -+ esac -+ else -+ TARGET=X86_64; -+ fi - ;; - - ia64*-*-*) - TARGET=IA64; TARGETDIR=ia64 - ;; - - m32r*-*-*) - TARGET=M32R; TARGETDIR=m32r - ;; - - m68k-*-*) - TARGET=M68K; TARGETDIR=m68k - ;; - -- mips-sgi-irix5.* | mips-sgi-irix6.*) -+ m88k-*-*) -+ TARGET=M88K; TARGETDIR=m88k -+ ;; -+ -+ microblaze*-*-*) -+ TARGET=MICROBLAZE; TARGETDIR=microblaze -+ ;; -+ -+ moxie-*-*) -+ TARGET=MOXIE; TARGETDIR=moxie -+ ;; -+ -+ metag-*-*) -+ TARGET=METAG; TARGETDIR=metag -+ ;; -+ -+ mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*) - TARGET=MIPS; TARGETDIR=mips - ;; - mips*-*linux* | mips*-*-openbsd*) - # Support 128-bit long double for NewABI. - HAVE_LONG_DOUBLE='defined(__mips64)' - TARGET=MIPS; TARGETDIR=mips - ;; - -- moxie-*-*) -- TARGET=MOXIE; TARGETDIR=moxie -+ nios2*-linux*) -+ TARGET=NIOS2; TARGETDIR=nios2 - ;; - - powerpc*-*-linux* | powerpc-*-sysv*) - TARGET=POWERPC; TARGETDIR=powerpc -+ HAVE_LONG_DOUBLE_VARIANT=1 -+ ;; -+ powerpc-*-amigaos*) -+ TARGET=POWERPC; TARGETDIR=powerpc - ;; - powerpc-*-beos*) - TARGET=POWERPC; TARGETDIR=powerpc - ;; -- powerpc-*-darwin*) -+ powerpc-*-darwin* | powerpc64-*-darwin*) - TARGET=POWERPC_DARWIN; TARGETDIR=powerpc - ;; - powerpc-*-aix* | rs6000-*-aix*) - TARGET=POWERPC_AIX; TARGETDIR=powerpc - ;; - powerpc-*-freebsd* | powerpc-*-openbsd*) - TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc -+ HAVE_LONG_DOUBLE_VARIANT=1 -+ ;; -+ powerpc64-*-freebsd*) -+ TARGET=POWERPC; TARGETDIR=powerpc - ;; - powerpc*-*-rtems*) - TARGET=POWERPC; TARGETDIR=powerpc - ;; - - s390-*-* | s390x-*-*) - TARGET=S390; TARGETDIR=s390 - ;; -@@ -11301,44 +13550,53 @@ case "$host" in - sh64-*-* | sh5*-*-*) - TARGET=SH64; TARGETDIR=sh64 - ;; - - sparc*-*-*) - TARGET=SPARC; TARGETDIR=sparc - ;; - -- x86_64-*-darwin*) -- TARGET=X86_DARWIN; TARGETDIR=x86 -- ;; -- -- x86_64-*-cygwin* | x86_64-*-mingw*) -- TARGET=X86_WIN64; TARGETDIR=x86 -- ;; -- -- x86_64-*-*) -- TARGET=X86_64; TARGETDIR=x86 -- ;; -+ tile*-*) -+ TARGET=TILE; TARGETDIR=tile -+ ;; -+ -+ vax-*-*) -+ TARGET=VAX; TARGETDIR=vax -+ ;; -+ -+ xtensa*-*) -+ TARGET=XTENSA; TARGETDIR=xtensa -+ ;; -+ - esac - - - - - if test $TARGETDIR = unknown; then -- as_fn_error "\"libffi has not been ported to $host.\"" "$LINENO" 5 -+ as_fn_error $? "\"libffi has not been ported to $host.\"" "$LINENO" 5 - fi - - if test x$TARGET = xMIPS; then - MIPS_TRUE= - MIPS_FALSE='#' - else - MIPS_TRUE='#' - MIPS_FALSE= - fi - -+ if test x$TARGET = xBFIN; then -+ BFIN_TRUE= -+ BFIN_FALSE='#' -+else -+ BFIN_TRUE='#' -+ BFIN_FALSE= -+fi -+ - if test x$TARGET = xSPARC; then - SPARC_TRUE= - SPARC_FALSE='#' - else - SPARC_TRUE='#' - SPARC_FALSE= - fi - -@@ -11377,16 +13635,32 @@ fi - if test x$TARGET = xX86_DARWIN; then - X86_DARWIN_TRUE= - X86_DARWIN_FALSE='#' - else - X86_DARWIN_TRUE='#' - X86_DARWIN_FALSE= - fi - -+ if test x$TARGET = xX86_DARWIN && test $ac_cv_sizeof_size_t = 4; then -+ X86_DARWIN32_TRUE= -+ X86_DARWIN32_FALSE='#' -+else -+ X86_DARWIN32_TRUE='#' -+ X86_DARWIN32_FALSE= -+fi -+ -+ if test x$TARGET = xX86_DARWIN && test $ac_cv_sizeof_size_t = 8; then -+ X86_DARWIN64_TRUE= -+ X86_DARWIN64_FALSE='#' -+else -+ X86_DARWIN64_TRUE='#' -+ X86_DARWIN64_FALSE= -+fi -+ - if test x$TARGET = xALPHA; then - ALPHA_TRUE= - ALPHA_FALSE='#' - else - ALPHA_TRUE='#' - ALPHA_FALSE= - fi - -@@ -11409,24 +13683,56 @@ fi - if test x$TARGET = xM68K; then - M68K_TRUE= - M68K_FALSE='#' - else - M68K_TRUE='#' - M68K_FALSE= - fi - -+ if test x$TARGET = xM88K; then -+ M88K_TRUE= -+ M88K_FALSE='#' -+else -+ M88K_TRUE='#' -+ M88K_FALSE= -+fi -+ -+ if test x$TARGET = xMICROBLAZE; then -+ MICROBLAZE_TRUE= -+ MICROBLAZE_FALSE='#' -+else -+ MICROBLAZE_TRUE='#' -+ MICROBLAZE_FALSE= -+fi -+ -+ if test x$TARGET = xMETAG; then -+ METAG_TRUE= -+ METAG_FALSE='#' -+else -+ METAG_TRUE='#' -+ METAG_FALSE= -+fi -+ - if test x$TARGET = xMOXIE; then - MOXIE_TRUE= - MOXIE_FALSE='#' - else - MOXIE_TRUE='#' - MOXIE_FALSE= - fi - -+ if test x$TARGET = xNIOS2; then -+ NIOS2_TRUE= -+ NIOS2_FALSE='#' -+else -+ NIOS2_TRUE='#' -+ NIOS2_FALSE= -+fi -+ - if test x$TARGET = xPOWERPC; then - POWERPC_TRUE= - POWERPC_FALSE='#' - else - POWERPC_TRUE='#' - POWERPC_FALSE= - fi - -@@ -11449,16 +13755,32 @@ fi - if test x$TARGET = xPOWERPC_FREEBSD; then - POWERPC_FREEBSD_TRUE= - POWERPC_FREEBSD_FALSE='#' - else - POWERPC_FREEBSD_TRUE='#' - POWERPC_FREEBSD_FALSE= - fi - -+ if test x$TARGET = xAARCH64; then -+ AARCH64_TRUE= -+ AARCH64_FALSE='#' -+else -+ AARCH64_TRUE='#' -+ AARCH64_FALSE= -+fi -+ -+ if test x$TARGET = xARC; then -+ ARC_TRUE= -+ ARC_FALSE='#' -+else -+ ARC_TRUE='#' -+ ARC_FALSE= -+fi -+ - if test x$TARGET = xARM; then - ARM_TRUE= - ARM_FALSE='#' - else - ARM_TRUE='#' - ARM_FALSE= - fi - -@@ -11537,20 +13859,44 @@ fi - if test x$TARGET = xPA64_HPUX; then - PA64_HPUX_TRUE= - PA64_HPUX_FALSE='#' - else - PA64_HPUX_TRUE='#' - PA64_HPUX_FALSE= - fi - -+ if test x$TARGET = xTILE; then -+ TILE_TRUE= -+ TILE_FALSE='#' -+else -+ TILE_TRUE='#' -+ TILE_FALSE= -+fi -+ -+ if test x$TARGET = xVAX; then -+ VAX_TRUE= -+ VAX_FALSE='#' -+else -+ VAX_TRUE='#' -+ VAX_FALSE= -+fi -+ -+ if test x$TARGET = xXTENSA; then -+ XTENSA_TRUE= -+ XTENSA_FALSE='#' -+else -+ XTENSA_TRUE='#' -+ XTENSA_FALSE= -+fi -+ - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 - $as_echo_n "checking for ANSI C header files... " >&6; } --if test "${ac_cv_header_stdc+set}" = set; then : -+if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - #include - #include - #include -@@ -11653,29 +13999,40 @@ if test $ac_cv_header_stdc = yes; then - - $as_echo "#define STDC_HEADERS 1" >>confdefs.h - - fi - - for ac_func in memcpy - do : - ac_fn_c_check_func "$LINENO" "memcpy" "ac_cv_func_memcpy" --if test "x$ac_cv_func_memcpy" = x""yes; then : -+if test "x$ac_cv_func_memcpy" = xyes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_MEMCPY 1 - _ACEOF - - fi - done - -+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -+if test "x$ac_cv_type_size_t" = xyes; then : -+ -+else -+ -+cat >>confdefs.h <<_ACEOF -+#define size_t unsigned int -+_ACEOF -+ -+fi -+ - # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works - # for constant arguments. Useless! - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 - $as_echo_n "checking for working alloca.h... " >&6; } --if test "${ac_cv_working_alloca_h+set}" = set; then : -+if ${ac_cv_working_alloca_h+:} false; then : - $as_echo_n "(cached) " >&6 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - int - main () - { -@@ -11698,17 +14055,17 @@ fi - if test $ac_cv_working_alloca_h = yes; then - - $as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h - - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 - $as_echo_n "checking for alloca... " >&6; } --if test "${ac_cv_func_alloca_works+set}" = set; then : -+if ${ac_cv_func_alloca_works+:} false; then : - $as_echo_n "(cached) " >&6 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #ifdef __GNUC__ - # define alloca __builtin_alloca - #else - # ifdef _MSC_VER -@@ -11717,17 +14074,17 @@ else - # else - # ifdef HAVE_ALLOCA_H - # include - # else - # ifdef _AIX - #pragma alloca - # else - # ifndef alloca /* predefined by HP cc +Olibcalls */ --char *alloca (); -+void *alloca (size_t); - # endif - # endif - # endif - # endif - #endif - - int - main () -@@ -11761,17 +14118,17 @@ else - - ALLOCA=\${LIBOBJDIR}alloca.$ac_objext - - $as_echo "#define C_ALLOCA 1" >>confdefs.h - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 - $as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } --if test "${ac_cv_os_cray+set}" = set; then : -+if ${ac_cv_os_cray+:} false; then : - $as_echo_n "(cached) " >&6 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #if defined CRAY && ! defined CRAY2 - webecray - #else - wenotbecray -@@ -11788,58 +14145,54 @@ rm -f conftest* - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 - $as_echo "$ac_cv_os_cray" >&6; } - if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` - ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" --eval as_val=\$$as_ac_var -- if test "x$as_val" = x""yes; then : -+if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - - cat >>confdefs.h <<_ACEOF - #define CRAY_STACKSEG_END $ac_func - _ACEOF - - break - fi - - done - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 - $as_echo_n "checking stack direction for C alloca... " >&6; } --if test "${ac_cv_c_stack_direction+set}" = set; then : -+if ${ac_cv_c_stack_direction+:} false; then : - $as_echo_n "(cached) " >&6 - else - if test "$cross_compiling" = yes; then : - ac_cv_c_stack_direction=0 - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - $ac_includes_default - int --find_stack_direction () --{ -- static char *addr = 0; -- auto char dummy; -- if (addr == 0) -- { -- addr = &dummy; -- return find_stack_direction (); -- } -- else -- return (&dummy > addr) ? 1 : -1; --} -- --int --main () --{ -- return find_stack_direction () < 0; -+find_stack_direction (int *addr, int depth) -+{ -+ int dir, dummy = 0; -+ if (! addr) -+ addr = &dummy; -+ *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; -+ dir = depth ? find_stack_direction (addr, depth - 1) : 0; -+ return dir + dummy; -+} -+ -+int -+main (int argc, char **argv) -+{ -+ return find_stack_direction (0, argc + !argv + 20) < 0; - } - _ACEOF - if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_stack_direction=1 - else - ac_cv_c_stack_direction=-1 - fi - rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -@@ -11858,28 +14211,27 @@ fi - - - # The cast to long int works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 - $as_echo_n "checking size of double... " >&6; } --if test "${ac_cv_sizeof_double+set}" = set; then : -+if ${ac_cv_sizeof_double+:} false; then : - $as_echo_n "(cached) " >&6 - else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : - - else - if test "$ac_cv_type_double" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --{ as_fn_set_status 77 --as_fn_error "cannot compute sizeof (double) --See \`config.log' for more details." "$LINENO" 5; }; } -+as_fn_error 77 "cannot compute sizeof (double) -+See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_double=0 - fi - fi - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 - $as_echo "$ac_cv_sizeof_double" >&6; } -@@ -11892,28 +14244,27 @@ cat >>confdefs.h <<_ACEOF - - - # The cast to long int works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5 - $as_echo_n "checking size of long double... " >&6; } --if test "${ac_cv_sizeof_long_double+set}" = set; then : -+if ${ac_cv_sizeof_long_double+:} false; then : - $as_echo_n "(cached) " >&6 - else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default"; then : - - else - if test "$ac_cv_type_long_double" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --{ as_fn_set_status 77 --as_fn_error "cannot compute sizeof (long double) --See \`config.log' for more details." "$LINENO" 5; }; } -+as_fn_error 77 "cannot compute sizeof (long double) -+See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long_double=0 - fi - fi - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5 - $as_echo "$ac_cv_sizeof_long_double" >&6; } -@@ -11924,30 +14275,38 @@ cat >>confdefs.h <<_ACEOF - #define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double - _ACEOF - - - - # Also AC_SUBST this variable for ffi.h. - if test -z "$HAVE_LONG_DOUBLE"; then - HAVE_LONG_DOUBLE=0 -- if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then -- if test $ac_cv_sizeof_long_double != 0; then -+ if test $ac_cv_sizeof_long_double != 0; then -+ if test $HAVE_LONG_DOUBLE_VARIANT != 0; then -+ -+$as_echo "#define HAVE_LONG_DOUBLE_VARIANT 1" >>confdefs.h -+ - HAVE_LONG_DOUBLE=1 -+ else -+ if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then -+ HAVE_LONG_DOUBLE=1 - - $as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h - -- fi -- fi --fi -+ fi -+ fi -+ fi -+fi -+ - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 - $as_echo_n "checking whether byte ordering is bigendian... " >&6; } --if test "${ac_cv_c_bigendian+set}" = set; then : -+if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 - else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #ifndef __APPLE_CC__ - not a universal capable compiler -@@ -12155,59 +14514,60 @@ fi - no) - ;; #( - universal) - - $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) -- as_fn_error "unknown endianness -+ as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .cfi pseudo-op support" >&5 - $as_echo_n "checking assembler .cfi pseudo-op support... " >&6; } --if test "${libffi_cv_as_cfi_pseudo_op+set}" = set; then : -- $as_echo_n "(cached) " >&6 --else -- -- libffi_cv_as_cfi_pseudo_op=unknown -+if ${gcc_cv_as_cfi_pseudo_op+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ gcc_cv_as_cfi_pseudo_op=unknown - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - asm (".cfi_startproc\n\t.cfi_endproc"); - int - main () - { - - ; - return 0; - } - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : -- libffi_cv_as_cfi_pseudo_op=yes --else -- libffi_cv_as_cfi_pseudo_op=no -+ gcc_cv_as_cfi_pseudo_op=yes -+else -+ gcc_cv_as_cfi_pseudo_op=no - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_cfi_pseudo_op" >&5 --$as_echo "$libffi_cv_as_cfi_pseudo_op" >&6; } --if test "x$libffi_cv_as_cfi_pseudo_op" = xyes; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_cfi_pseudo_op" >&5 -+$as_echo "$gcc_cv_as_cfi_pseudo_op" >&6; } -+ if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then - - $as_echo "#define HAVE_AS_CFI_PSEUDO_OP 1" >>confdefs.h - --fi -+ fi -+ - - if test x$TARGET = xSPARC; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler and linker support unaligned pc related relocs" >&5 - $as_echo_n "checking assembler and linker support unaligned pc related relocs... " >&6; } --if test "${libffi_cv_as_sparc_ua_pcrel+set}" = set; then : -+if ${libffi_cv_as_sparc_ua_pcrel+:} false; then : - $as_echo_n "(cached) " >&6 - else - - save_CFLAGS="$CFLAGS" - save_LDFLAGS="$LDFLAGS" - CFLAGS="$CFLAGS -fpic" - LDFLAGS="$LDFLAGS -shared" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -@@ -12236,29 +14596,29 @@ fi - if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then - - $as_echo "#define HAVE_AS_SPARC_UA_PCREL 1" >>confdefs.h - - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .register pseudo-op support" >&5 - $as_echo_n "checking assembler .register pseudo-op support... " >&6; } --if test "${libffi_cv_as_register_pseudo_op+set}" = set; then : -+if ${libffi_cv_as_register_pseudo_op+:} false; then : - $as_echo_n "(cached) " >&6 - else - - libffi_cv_as_register_pseudo_op=unknown - # Check if we have .register - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ -+ -+int -+main () -+{ - asm (".register %g2, #scratch"); --int --main () --{ -- - ; - return 0; - } - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - libffi_cv_as_register_pseudo_op=yes - else - libffi_cv_as_register_pseudo_op=no -@@ -12273,50 +14633,50 @@ fi - $as_echo "#define HAVE_AS_REGISTER_PSEUDO_OP 1" >>confdefs.h - - fi - fi - - if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5 - $as_echo_n "checking assembler supports pc related relocs... " >&6; } --if test "${libffi_cv_as_x86_pcrel+set}" = set; then : -+if ${libffi_cv_as_x86_pcrel+:} false; then : - $as_echo_n "(cached) " >&6 - else - - libffi_cv_as_x86_pcrel=no - echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s -- if $CC $CFLAGS -c conftest.s > /dev/null; then -+ if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then - libffi_cv_as_x86_pcrel=yes - fi - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_pcrel" >&5 - $as_echo "$libffi_cv_as_x86_pcrel" >&6; } - if test "x$libffi_cv_as_x86_pcrel" = xyes; then - - $as_echo "#define HAVE_AS_X86_PCREL 1" >>confdefs.h - - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .ascii pseudo-op support" >&5 - $as_echo_n "checking assembler .ascii pseudo-op support... " >&6; } --if test "${libffi_cv_as_ascii_pseudo_op+set}" = set; then : -+if ${libffi_cv_as_ascii_pseudo_op+:} false; then : - $as_echo_n "(cached) " >&6 - else - - libffi_cv_as_ascii_pseudo_op=unknown - # Check if we have .ascii - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ --asm (".ascii \"string\""); --int --main () --{ -- -+ -+int -+main () -+{ -+asm (".ascii \\"string\\""); - ; - return 0; - } - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - libffi_cv_as_ascii_pseudo_op=yes - else - libffi_cv_as_ascii_pseudo_op=no -@@ -12329,29 +14689,29 @@ fi - if test "x$libffi_cv_as_ascii_pseudo_op" = xyes; then - - $as_echo "#define HAVE_AS_ASCII_PSEUDO_OP 1" >>confdefs.h - - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .string pseudo-op support" >&5 - $as_echo_n "checking assembler .string pseudo-op support... " >&6; } --if test "${libffi_cv_as_string_pseudo_op+set}" = set; then : -+if ${libffi_cv_as_string_pseudo_op+:} false; then : - $as_echo_n "(cached) " >&6 - else - - libffi_cv_as_string_pseudo_op=unknown - # Check if we have .string - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ --asm (".string \"string\""); --int --main () --{ -- -+ -+int -+main () -+{ -+asm (".string \\"string\\""); - ; - return 0; - } - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - libffi_cv_as_string_pseudo_op=yes - else - libffi_cv_as_string_pseudo_op=no -@@ -12363,20 +14723,30 @@ fi - $as_echo "$libffi_cv_as_string_pseudo_op" >&6; } - if test "x$libffi_cv_as_string_pseudo_op" = xyes; then - - $as_echo "#define HAVE_AS_STRING_PSEUDO_OP 1" >>confdefs.h - - fi - fi - --if test x$TARGET = xX86_WIN64; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5 -+# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. -+# Check whether --enable-pax_emutramp was given. -+if test "${enable_pax_emutramp+set}" = set; then : -+ enableval=$enable_pax_emutramp; if test "$enable_pax_emutramp" = "yes"; then -+ -+$as_echo "#define FFI_MMAP_EXEC_EMUTRAMP_PAX 1" >>confdefs.h -+ -+ fi -+fi -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5 - $as_echo_n "checking for _ prefix in compiled symbols... " >&6; } --if test "${lt_cv_sys_symbol_underscore+set}" = set; then : -+if ${lt_cv_sys_symbol_underscore+:} false; then : - $as_echo_n "(cached) " >&6 - else - lt_cv_sys_symbol_underscore=no - cat > conftest.$ac_ext <<_LT_EOF - void nm_test_func(){} - int main(){nm_test_func;return 0;} - _LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -@@ -12411,36 +14781,50 @@ int main(){nm_test_func;return 0;} - rm -rf conftest* - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_symbol_underscore" >&5 - $as_echo "$lt_cv_sys_symbol_underscore" >&6; } - sys_symbol_underscore=$lt_cv_sys_symbol_underscore - - -- if test "x$sys_symbol_underscore" = xyes; then -+if test "x$sys_symbol_underscore" = xyes; then - - $as_echo "#define SYMBOL_UNDERSCORE 1" >>confdefs.h - -- fi --fi -- -+fi -+ -+FFI_EXEC_TRAMPOLINE_TABLE=0 - case "$target" in -- # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages -- *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*) -+ *arm*-apple-darwin*) -+ FFI_EXEC_TRAMPOLINE_TABLE=1 -+ -+$as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h -+ -+ ;; -+ *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*) - - $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h - - ;; - esac -+ if test x$FFI_EXEC_TRAMPOLINE_TABLE = x1; then -+ FFI_EXEC_TRAMPOLINE_TABLE_TRUE= -+ FFI_EXEC_TRAMPOLINE_TABLE_FALSE='#' -+else -+ FFI_EXEC_TRAMPOLINE_TABLE_TRUE='#' -+ FFI_EXEC_TRAMPOLINE_TABLE_FALSE= -+fi -+ -+ - - if test x$TARGET = xX86_64; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking toolchain supports unwind section type" >&5 - $as_echo_n "checking toolchain supports unwind section type... " >&6; } --if test "${libffi_cv_as_x86_64_unwind_section_type+set}" = set; then : -+if ${libffi_cv_as_x86_64_unwind_section_type+:} false; then : - $as_echo_n "(cached) " >&6 - else - - cat > conftest1.s << EOF - .text - .globl foo - foo: - jmp bar -@@ -12466,77 +14850,80 @@ fi - $as_echo "$libffi_cv_as_x86_64_unwind_section_type" >&6; } - if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then - - $as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h - - fi - fi - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5 -+if test "x$GCC" = "xyes"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5 - $as_echo_n "checking whether .eh_frame section should be read-only... " >&6; } --if test "${libffi_cv_ro_eh_frame+set}" = set; then : -- $as_echo_n "(cached) " >&6 --else -- -- libffi_cv_ro_eh_frame=no -- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c -- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then -- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then -- libffi_cv_ro_eh_frame=yes -- elif grep '.section.*eh_frame.*#alloc' conftest.c \ -- | grep -v '#write' > /dev/null; then -- libffi_cv_ro_eh_frame=yes -- fi -- fi -- rm -f conftest.* -+if ${libffi_cv_ro_eh_frame+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ libffi_cv_ro_eh_frame=no -+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c -+ if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then -+ objdump -h conftest.o > conftest.dump 2>&1 -+ libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1` -+ libffi_test_line=`expr $libffi_eh_frame_line + 1`p -+ sed -n $libffi_test_line conftest.dump > conftest.line -+ if grep READONLY conftest.line > /dev/null; then -+ libffi_cv_ro_eh_frame=yes -+ fi -+ fi -+ rm -f conftest.* - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_ro_eh_frame" >&5 - $as_echo "$libffi_cv_ro_eh_frame" >&6; } --if test "x$libffi_cv_ro_eh_frame" = xyes; then -+ if test "x$libffi_cv_ro_eh_frame" = xyes; then - - $as_echo "#define HAVE_RO_EH_FRAME 1" >>confdefs.h - - - $as_echo "#define EH_FRAME_FLAGS \"a\"" >>confdefs.h - --else -+ else - - $as_echo "#define EH_FRAME_FLAGS \"aw\"" >>confdefs.h - --fi -- --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5 -+ fi -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5 - $as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; } --if test "${libffi_cv_hidden_visibility_attribute+set}" = set; then : -- $as_echo_n "(cached) " >&6 --else -- -- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c -- libffi_cv_hidden_visibility_attribute=no -- if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5' -+if ${libffi_cv_hidden_visibility_attribute+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c -+ libffi_cv_hidden_visibility_attribute=no -+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then -- if grep '\.hidden.*foo' conftest.s >/dev/null; then -- libffi_cv_hidden_visibility_attribute=yes -- fi -- fi -- rm -f conftest.* -+ if grep '\.hidden.*foo' conftest.s >/dev/null; then -+ libffi_cv_hidden_visibility_attribute=yes -+ fi -+ fi -+ rm -f conftest.* - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_hidden_visibility_attribute" >&5 - $as_echo "$libffi_cv_hidden_visibility_attribute" >&6; } --if test $libffi_cv_hidden_visibility_attribute = yes; then -+ if test $libffi_cv_hidden_visibility_attribute = yes; then - - $as_echo "#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1" >>confdefs.h - -+ fi - fi - - - - - - - -@@ -12563,16 +14950,24 @@ fi - if test "${enable_structs+set}" = set; then : - enableval=$enable_structs; if test "$enable_structs" = "no"; then - - $as_echo "#define FFI_NO_STRUCTS 1" >>confdefs.h - - fi - fi - -+ if test "$enable_debug" = "yes"; then -+ FFI_DEBUG_TRUE= -+ FFI_DEBUG_FALSE='#' -+else -+ FFI_DEBUG_TRUE='#' -+ FFI_DEBUG_FALSE= -+fi -+ - - # Check whether --enable-raw-api was given. - if test "${enable_raw_api+set}" = set; then : - enableval=$enable_raw_api; if test "$enable_raw_api" = "no"; then - - $as_echo "#define FFI_NO_RAW_API 1" >>confdefs.h - - fi -@@ -12584,37 +14979,37 @@ if test "${enable_purify_safety+set}" = - enableval=$enable_purify_safety; if test "$enable_purify_safety" = "yes"; then - - $as_echo "#define USING_PURIFY 1" >>confdefs.h - - fi - fi - - --if test -n "$with_cross_host" && -- test x"$with_cross_host" != x"no"; then -- toolexecdir='$(exec_prefix)/$(target_alias)' -- toolexeclibdir='$(toolexecdir)/lib' --else -- toolexecdir='$(libdir)/gcc-lib/$(target_alias)' -+# These variables are only ever used when we cross-build to X86_WIN32. -+# And we only support this with GCC, so... -+if test "x$GCC" = "xyes"; then -+ if test -n "$with_cross_host" && -+ test x"$with_cross_host" != x"no"; then -+ toolexecdir='$(exec_prefix)/$(target_alias)' -+ toolexeclibdir='$(toolexecdir)/lib' -+ else -+ toolexecdir='$(libdir)/gcc-lib/$(target_alias)' -+ toolexeclibdir='$(libdir)' -+ fi -+ multi_os_directory=`$CC -print-multi-os-directory` -+ case $multi_os_directory in -+ .) ;; # Avoid trailing /. -+ ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; -+ esac -+ -+else - toolexeclibdir='$(libdir)' - fi --multi_os_directory=`$CC -print-multi-os-directory` --case $multi_os_directory in -- .) ;; # Avoid trailing /. -- *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; --esac -- -- -- --if test "${multilib}" = "yes"; then -- multilib_arg="--enable-multilib" --else -- multilib_arg= --fi -+ - - ac_config_commands="$ac_config_commands include" - - ac_config_commands="$ac_config_commands src" - - - ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETDIR/ffitarget.h" - -@@ -12681,192 +15076,268 @@ cat >confcache <<\_ACEOF - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache - if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then -- test "x$cache_file" != "x/dev/null" && -+ if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 - $as_echo "$as_me: updating cache $cache_file" >&6;} -- cat confcache >$cache_file -+ if test ! -f "$cache_file" || test -h "$cache_file"; then -+ cat confcache >"$cache_file" -+ else -+ case $cache_file in #( -+ */* | ?:*) -+ mv -f confcache "$cache_file"$$ && -+ mv -f "$cache_file"$$ "$cache_file" ;; #( -+ *) -+ mv -f confcache "$cache_file" ;; -+ esac -+ fi -+ fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 - $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi - fi - rm -f confcache - - test "x$prefix" = xNONE && prefix=$ac_default_prefix - # Let make expand exec_prefix. - test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - - DEFS=-DHAVE_CONFIG_H - - ac_libobjs= - ac_ltlibobjs= -+U= - for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' - done - LIBOBJS=$ac_libobjs - - LTLIBOBJS=$ac_ltlibobjs - - -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -+$as_echo_n "checking that generated files are newer than configure... " >&6; } -+ if test -n "$am_sleep_pid"; then -+ # Hide warnings about reused PIDs. -+ wait $am_sleep_pid 2>/dev/null -+ fi -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -+$as_echo "done" >&6; } - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' - else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= - fi - - if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then -- as_fn_error "conditional \"AMDEP\" was never defined. -+ as_fn_error $? "conditional \"AMDEP\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then -- as_fn_error "conditional \"am__fastdepCC\" was never defined. -+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then -- as_fn_error "conditional \"am__fastdepCCAS\" was never defined. -+ as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then -- as_fn_error "conditional \"MAINTAINER_MODE\" was never defined. -+ as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${TESTSUBDIR_TRUE}" && test -z "${TESTSUBDIR_FALSE}"; then -- as_fn_error "conditional \"TESTSUBDIR\" was never defined. -+ as_fn_error $? "conditional \"TESTSUBDIR\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${MIPS_TRUE}" && test -z "${MIPS_FALSE}"; then -- as_fn_error "conditional \"MIPS\" was never defined. -+ as_fn_error $? "conditional \"MIPS\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -+if test -z "${BFIN_TRUE}" && test -z "${BFIN_FALSE}"; then -+ as_fn_error $? "conditional \"BFIN\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - if test -z "${SPARC_TRUE}" && test -z "${SPARC_FALSE}"; then -- as_fn_error "conditional \"SPARC\" was never defined. -+ as_fn_error $? "conditional \"SPARC\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${X86_TRUE}" && test -z "${X86_FALSE}"; then -- as_fn_error "conditional \"X86\" was never defined. -+ as_fn_error $? "conditional \"X86\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${X86_FREEBSD_TRUE}" && test -z "${X86_FREEBSD_FALSE}"; then -- as_fn_error "conditional \"X86_FREEBSD\" was never defined. -+ as_fn_error $? "conditional \"X86_FREEBSD\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${X86_WIN32_TRUE}" && test -z "${X86_WIN32_FALSE}"; then -- as_fn_error "conditional \"X86_WIN32\" was never defined. -+ as_fn_error $? "conditional \"X86_WIN32\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${X86_WIN64_TRUE}" && test -z "${X86_WIN64_FALSE}"; then -- as_fn_error "conditional \"X86_WIN64\" was never defined. -+ as_fn_error $? "conditional \"X86_WIN64\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${X86_DARWIN_TRUE}" && test -z "${X86_DARWIN_FALSE}"; then -- as_fn_error "conditional \"X86_DARWIN\" was never defined. -+ as_fn_error $? "conditional \"X86_DARWIN\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -+if test -z "${X86_DARWIN32_TRUE}" && test -z "${X86_DARWIN32_FALSE}"; then -+ as_fn_error $? "conditional \"X86_DARWIN32\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+if test -z "${X86_DARWIN64_TRUE}" && test -z "${X86_DARWIN64_FALSE}"; then -+ as_fn_error $? "conditional \"X86_DARWIN64\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - if test -z "${ALPHA_TRUE}" && test -z "${ALPHA_FALSE}"; then -- as_fn_error "conditional \"ALPHA\" was never defined. -+ as_fn_error $? "conditional \"ALPHA\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${IA64_TRUE}" && test -z "${IA64_FALSE}"; then -- as_fn_error "conditional \"IA64\" was never defined. -+ as_fn_error $? "conditional \"IA64\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${M32R_TRUE}" && test -z "${M32R_FALSE}"; then -- as_fn_error "conditional \"M32R\" was never defined. -+ as_fn_error $? "conditional \"M32R\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${M68K_TRUE}" && test -z "${M68K_FALSE}"; then -- as_fn_error "conditional \"M68K\" was never defined. -+ as_fn_error $? "conditional \"M68K\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -+if test -z "${M88K_TRUE}" && test -z "${M88K_FALSE}"; then -+ as_fn_error $? "conditional \"M88K\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+if test -z "${MICROBLAZE_TRUE}" && test -z "${MICROBLAZE_FALSE}"; then -+ as_fn_error $? "conditional \"MICROBLAZE\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+if test -z "${METAG_TRUE}" && test -z "${METAG_FALSE}"; then -+ as_fn_error $? "conditional \"METAG\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - if test -z "${MOXIE_TRUE}" && test -z "${MOXIE_FALSE}"; then -- as_fn_error "conditional \"MOXIE\" was never defined. -+ as_fn_error $? "conditional \"MOXIE\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -+if test -z "${NIOS2_TRUE}" && test -z "${NIOS2_FALSE}"; then -+ as_fn_error $? "conditional \"NIOS2\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - if test -z "${POWERPC_TRUE}" && test -z "${POWERPC_FALSE}"; then -- as_fn_error "conditional \"POWERPC\" was never defined. -+ as_fn_error $? "conditional \"POWERPC\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${POWERPC_AIX_TRUE}" && test -z "${POWERPC_AIX_FALSE}"; then -- as_fn_error "conditional \"POWERPC_AIX\" was never defined. -+ as_fn_error $? "conditional \"POWERPC_AIX\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${POWERPC_DARWIN_TRUE}" && test -z "${POWERPC_DARWIN_FALSE}"; then -- as_fn_error "conditional \"POWERPC_DARWIN\" was never defined. -+ as_fn_error $? "conditional \"POWERPC_DARWIN\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${POWERPC_FREEBSD_TRUE}" && test -z "${POWERPC_FREEBSD_FALSE}"; then -- as_fn_error "conditional \"POWERPC_FREEBSD\" was never defined. -+ as_fn_error $? "conditional \"POWERPC_FREEBSD\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -+if test -z "${AARCH64_TRUE}" && test -z "${AARCH64_FALSE}"; then -+ as_fn_error $? "conditional \"AARCH64\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+if test -z "${ARC_TRUE}" && test -z "${ARC_FALSE}"; then -+ as_fn_error $? "conditional \"ARC\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - if test -z "${ARM_TRUE}" && test -z "${ARM_FALSE}"; then -- as_fn_error "conditional \"ARM\" was never defined. -+ as_fn_error $? "conditional \"ARM\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${AVR32_TRUE}" && test -z "${AVR32_FALSE}"; then -- as_fn_error "conditional \"AVR32\" was never defined. -+ as_fn_error $? "conditional \"AVR32\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${LIBFFI_CRIS_TRUE}" && test -z "${LIBFFI_CRIS_FALSE}"; then -- as_fn_error "conditional \"LIBFFI_CRIS\" was never defined. -+ as_fn_error $? "conditional \"LIBFFI_CRIS\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${FRV_TRUE}" && test -z "${FRV_FALSE}"; then -- as_fn_error "conditional \"FRV\" was never defined. -+ as_fn_error $? "conditional \"FRV\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${S390_TRUE}" && test -z "${S390_FALSE}"; then -- as_fn_error "conditional \"S390\" was never defined. -+ as_fn_error $? "conditional \"S390\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${X86_64_TRUE}" && test -z "${X86_64_FALSE}"; then -- as_fn_error "conditional \"X86_64\" was never defined. -+ as_fn_error $? "conditional \"X86_64\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${SH_TRUE}" && test -z "${SH_FALSE}"; then -- as_fn_error "conditional \"SH\" was never defined. -+ as_fn_error $? "conditional \"SH\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${SH64_TRUE}" && test -z "${SH64_FALSE}"; then -- as_fn_error "conditional \"SH64\" was never defined. -+ as_fn_error $? "conditional \"SH64\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${PA_LINUX_TRUE}" && test -z "${PA_LINUX_FALSE}"; then -- as_fn_error "conditional \"PA_LINUX\" was never defined. -+ as_fn_error $? "conditional \"PA_LINUX\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${PA_HPUX_TRUE}" && test -z "${PA_HPUX_FALSE}"; then -- as_fn_error "conditional \"PA_HPUX\" was never defined. -+ as_fn_error $? "conditional \"PA_HPUX\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - if test -z "${PA64_HPUX_TRUE}" && test -z "${PA64_HPUX_FALSE}"; then -- as_fn_error "conditional \"PA64_HPUX\" was never defined. -+ as_fn_error $? "conditional \"PA64_HPUX\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -- -+if test -z "${TILE_TRUE}" && test -z "${TILE_FALSE}"; then -+ as_fn_error $? "conditional \"TILE\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+if test -z "${VAX_TRUE}" && test -z "${VAX_FALSE}"; then -+ as_fn_error $? "conditional \"VAX\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+if test -z "${XTENSA_TRUE}" && test -z "${XTENSA_FALSE}"; then -+ as_fn_error $? "conditional \"XTENSA\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+ -+if test -z "${FFI_EXEC_TRAMPOLINE_TABLE_TRUE}" && test -z "${FFI_EXEC_TRAMPOLINE_TABLE_FALSE}"; then -+ as_fn_error $? "conditional \"FFI_EXEC_TRAMPOLINE_TABLE\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then -- as_fn_error "conditional \"FFI_DEBUG\" was never defined. -+ as_fn_error $? "conditional \"FFI_DEBUG\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -- --: ${CONFIG_STATUS=./config.status} -+if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then -+ as_fn_error $? "conditional \"FFI_DEBUG\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+ -+: "${CONFIG_STATUS=./config.status}" - ac_write_fail=0 - ac_clean_files_save=$ac_clean_files - ac_clean_files="$ac_clean_files $CONFIG_STATUS" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 - $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} - as_write_fail=0 - cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 - #! $SHELL -@@ -12957,16 +15428,17 @@ fi - # IFS - # We need space, tab and new line, in precisely that order. Quoting is - # there to prevent editors from complaining about space-tab. - # (If _AS_PATH_WALK were called with IFS unset, it would disable word - # splitting by setting IFS to empty value.) - IFS=" "" $as_nl" - - # Find who we are. Look in the path if we contain no directory separator. -+as_myself= - case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -@@ -13002,29 +15474,29 @@ LC_ALL=C - export LC_ALL - LANGUAGE=C - export LANGUAGE - - # CDPATH. - (unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - --# as_fn_error ERROR [LINENO LOG_FD] --# --------------------------------- -+# as_fn_error STATUS ERROR [LINENO LOG_FD] -+# ---------------------------------------- - # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are - # provided, also output the error to LOG_FD, referencing LINENO. Then exit the --# script with status $?, using 1 if that was 0. -+# script with STATUS, using 1 if that was 0. - as_fn_error () - { -- as_status=$?; test $as_status -eq 0 && as_status=1 -- if test "$3"; then -- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 -- fi -- $as_echo "$as_me: error: $1" >&2 -+ as_status=$1; test $as_status -eq 0 && as_status=1 -+ if test "$4"; then -+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 -+ fi -+ $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status - } # as_fn_error - - - # as_fn_set_status STATUS - # ----------------------- - # Set $? to STATUS, without forking. - as_fn_set_status () -@@ -13152,26 +15624,26 @@ else - mkdir conf$$.dir 2>/dev/null - fi - if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. -- # In both cases, we have to default to `cp -p'. -+ # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || -- as_ln_s='cp -p' -+ as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else -- as_ln_s='cp -p' -- fi --else -- as_ln_s='cp -p' -+ as_ln_s='cp -pR' -+ fi -+else -+ as_ln_s='cp -pR' - fi - rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file - rmdir conf$$.dir 2>/dev/null - - - # as_fn_mkdir_p - # ------------- - # Create "$as_dir" as a directory, including parents if necessary. -@@ -13210,49 +15682,37 @@ as_fn_mkdir_p () - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" -- } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" -+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - - } # as_fn_mkdir_p - if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' - else - test -d ./-p && rmdir ./-p - as_mkdir_p=false - fi - --if test -x / >/dev/null 2>&1; then -- as_test_x='test -x' --else -- if ls -dL / >/dev/null 2>&1; then -- as_ls_L_option=L -- else -- as_ls_L_option= -- fi -- as_test_x=' -- eval sh -c '\'' -- if test -d "$1"; then -- test -d "$1/."; -- else -- case $1 in #( -- -*)set "./$1";; -- esac; -- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( -- ???[sx]*):;;*)false;;esac;fi -- '\'' sh -- ' --fi --as_executable_p=$as_test_x -+ -+# as_fn_executable_p FILE -+# ----------------------- -+# Test if FILE is an executable regular file. -+as_fn_executable_p () -+{ -+ test -f "$1" && test -x "$1" -+} # as_fn_executable_p -+as_test_x='test -x' -+as_executable_p=as_fn_executable_p - - # Sed expression to map a string onto a valid CPP name. - as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - - # Sed expression to map a string onto a valid variable name. - as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -@@ -13263,18 +15723,18 @@ exec 6>&1 - _ASEOF - test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - - cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - # Save the log message, to keep $0 and so on meaningful, and to - # report actual input values of CONFIG_FILES etc. instead of their - # values after options handling. - ac_log=" --This file was extended by libffi $as_me 3.0.10rc0, which was --generated by GNU Autoconf 2.65. Invocation command line was -+This file was extended by libffi $as_me 3.1-rc1, which was -+generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - - on `(hostname || uname -n) 2>/dev/null | sed 1q` -@@ -13327,27 +15787,27 @@ Configuration headers: - $config_headers - - Configuration links: - $config_links - - Configuration commands: - $config_commands - --Report bugs to ." -+Report bugs to ." - - _ACEOF - cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" - ac_cs_version="\\ --libffi config.status 3.0.10rc0 --configured by $0, generated by GNU Autoconf 2.65, -+libffi config.status 3.1-rc1 -+configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - --Copyright (C) 2009 Free Software Foundation, Inc. -+Copyright (C) 2012 Free Software Foundation, Inc. - This config.status script is free software; the Free Software Foundation - gives unlimited permission to copy, distribute and modify it." - - ac_pwd='$ac_pwd' - srcdir='$srcdir' - INSTALL='$INSTALL' - MKDIR_P='$MKDIR_P' - AWK='$AWK' -@@ -13355,21 +15815,26 @@ test -n "\$AWK" || AWK=awk - _ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - # The default lists apply if the user does not specify any file. - ac_need_defaults=: - while test $# != 0 - do - case $1 in -- --*=*) -+ --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; -+ --*=) -+ ac_option=`expr "X$1" : 'X\([^=]*\)='` -+ ac_optarg= -+ ac_shift=: -+ ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in -@@ -13381,38 +15846,39 @@ do - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; -+ '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header -- as_fn_error "ambiguous option: \`$1' -+ as_fn_error $? "ambiguous option: \`$1' - Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. -- -*) as_fn_error "unrecognized option: \`$1' -+ -*) as_fn_error $? "unrecognized option: \`$1' - Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift - done -@@ -13422,17 +15888,17 @@ ac_configure_extra_args= - if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" - fi - - _ACEOF - cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - if \$ac_cs_recheck; then -- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" - fi - - _ACEOF -@@ -13446,211 +15912,246 @@ exec 5>>config.log - $as_echo "$ac_log" - } >&5 - - _ACEOF - cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - # - # INIT-COMMANDS - # -+ax_enable_builddir_srcdir="$srcdir" # $srcdir -+ax_enable_builddir_host="$HOST" # $HOST / $host -+ax_enable_builddir_version="$VERSION" # $VERSION -+ax_enable_builddir_package="$PACKAGE" # $PACKAGE -+ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX -+ax_enable_builddir_sed="$ax_enable_builddir_sed" # $SED -+ax_enable_builddir="$ax_enable_builddir" # $SUB -+ - AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - - # The HP-UX ksh and POSIX shell print the target directory to stdout - # if CDPATH is set. - (unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - sed_quote_subst='$sed_quote_subst' - double_quote_subst='$double_quote_subst' - delay_variable_subst='$delay_variable_subst' --macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' --macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' --enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' --enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' --pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' --enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' --host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' --host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' --host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' --build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' --build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' --build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' --SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' --Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' --GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' --EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' --FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' --LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' --NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' --LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' --max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' --ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' --exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' --lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' --lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' --lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' --reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' --reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' --OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' --deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' --file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' --AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' --AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' --STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' --RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' --old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' --old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' --old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' --CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' --CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' --compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' --GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' --lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' --lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' --lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' --lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' --objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' --SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' --ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' --MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' --lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' --lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' --lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' --lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' --lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' --need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' --DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' --NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' --LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' --OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' --OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' --libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' --shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' --extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' --archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' --enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' --export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' --whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' --compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' --old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' --old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' --archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' --archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' --module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' --module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' --with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' --allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' --no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' --inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' --link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' --fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' --always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' --export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' --exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' --include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' --prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' --file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' --variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' --need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' --need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' --version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' --runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' --shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' --shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' --libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' --library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' --soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' --postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' --postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' --finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' --finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' --sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' --sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' --hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' --enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' --enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' --enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' --old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' --striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' -+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' - - LTCC='$LTCC' - LTCFLAGS='$LTCFLAGS' - compiler='$compiler_DEFAULT' - -+# A function that is used when there is no print builtin or printf. -+func_fallback_echo () -+{ -+ eval 'cat <<_LTECHO_EOF -+\$1 -+_LTECHO_EOF' -+} -+ - # Quote evaled strings. --for var in SED \ -+for var in SHELL \ -+ECHO \ -+PATH_SEPARATOR \ -+SED \ - GREP \ - EGREP \ - FGREP \ - LD \ - NM \ - LN_S \ - lt_SP2NL \ - lt_NL2SP \ - reload_flag \ - OBJDUMP \ - deplibs_check_method \ - file_magic_cmd \ -+file_magic_glob \ -+want_nocaseglob \ -+DLLTOOL \ -+sharedlib_from_linklib_cmd \ - AR \ - AR_FLAGS \ -+archiver_list_spec \ - STRIP \ - RANLIB \ - CC \ - CFLAGS \ - compiler \ - lt_cv_sys_global_symbol_pipe \ - lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ --SHELL \ --ECHO \ -+nm_file_list_spec \ - lt_prog_compiler_no_builtin_flag \ -+lt_prog_compiler_pic \ - lt_prog_compiler_wl \ --lt_prog_compiler_pic \ - lt_prog_compiler_static \ - lt_cv_prog_compiler_c_o \ - need_locks \ -+MANIFEST_TOOL \ - DSYMUTIL \ - NMEDIT \ - LIPO \ - OTOOL \ - OTOOL64 \ - shrext_cmds \ - export_dynamic_flag_spec \ - whole_archive_flag_spec \ - compiler_needs_object \ - with_gnu_ld \ - allow_undefined_flag \ - no_undefined_flag \ - hardcode_libdir_flag_spec \ --hardcode_libdir_flag_spec_ld \ - hardcode_libdir_separator \ --fix_srcfile_path \ - exclude_expsyms \ - include_expsyms \ - file_list_spec \ - variables_saved_for_relink \ - libname_spec \ - library_names_spec \ - soname_spec \ -+install_override_mode \ - finish_eval \ - old_striplib \ - striplib; do -- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in -+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) -- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" -+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac - done - - # Double-quote double-evaled strings. -@@ -13662,37 +16163,32 @@ extract_expsyms_cmds \ - old_archive_from_new_cmds \ - old_archive_from_expsyms_cmds \ - archive_cmds \ - archive_expsym_cmds \ - module_cmds \ - module_expsym_cmds \ - export_symbols_cmds \ - prelink_cmds \ -+postlink_cmds \ - postinstall_cmds \ - postuninstall_cmds \ - finish_cmds \ - sys_lib_search_path_spec \ - sys_lib_dlsearch_path_spec; do -- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in -+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) -- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" -+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac - done - --# Fix-up fallback echo if it was mangled by the above quoting rules. --case \$lt_ECHO in --*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` -- ;; --esac -- - ac_aux_dir='$ac_aux_dir' - xsi_shell='$xsi_shell' - lt_shell_append='$lt_shell_append' - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes INIT. - if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -@@ -13713,29 +16209,30 @@ TARGETDIR="$TARGETDIR" - - cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - - # Handling of arguments. - for ac_config_target in $ac_config_targets - do - case $ac_config_target in - "fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;; -+ "buildir") CONFIG_COMMANDS="$CONFIG_COMMANDS buildir" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;; - "src") CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;; - "include/ffitarget.h") CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETDIR/ffitarget.h" ;; - "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; - "include/ffi.h") CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;; - "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; - "libffi.pc") CONFIG_FILES="$CONFIG_FILES libffi.pc" ;; - -- *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; -+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac - done - - - # If the user did not use the arguments to specify the items to instantiate, - # then the envvar interface is used. Set only those that are not. - # We use the long form for the default assignment because of an extremely - # bizarre bug on SunOS 4.1.3. -@@ -13749,82 +16246,84 @@ fi - # Have a temporary directory for convenience. Make it in the build tree - # simply because there is no reason against having it here, and in addition, - # creating and moving files from /tmp can sometimes cause problems. - # Hook for its removal unless debugging. - # Note that there is a small window in which the directory will not be cleaned: - # after its creation but before its name has been assigned to `$tmp'. - $debug || - { -- tmp= -+ tmp= ac_tmp= - trap 'exit_status=$? -- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -+ : "${ac_tmp:=$tmp}" -+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status - ' 0 - trap 'as_fn_exit 1' 1 2 13 15 - } - # Create a (secure) tmp directory for tmp files. - - { - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && -- test -n "$tmp" && test -d "$tmp" -+ test -d "$tmp" - } || - { - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") --} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 -+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -+ac_tmp=$tmp - - # Set up the scripts for CONFIG_FILES section. - # No need to generate them if there are no CONFIG_FILES. - # This happens for instance with `./config.status config.h'. - if test -n "$CONFIG_FILES"; then - - - ac_cr=`echo X | tr X '\015'` - # On cygwin, bash can eat \r inside `` if the user requested igncr. - # But we know of no other shell where ac_cr would be empty at this - # point, so we can use a bashism as a fallback. - if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' - fi - ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` - if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then -- ac_cs_awk_cr='\r' -+ ac_cs_awk_cr='\\r' - else - ac_cs_awk_cr=$ac_cr - fi - --echo 'BEGIN {' >"$tmp/subs1.awk" && -+echo 'BEGIN {' >"$ac_tmp/subs1.awk" && - _ACEOF - - - { - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" - } >conf$$subs.sh || -- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 --ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` -+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` - ac_delim='%!_!# ' - for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || -- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 -+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then -- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 -+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi - done - rm -f conf$$subs.sh - - cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 --cat >>"\$tmp/subs1.awk" <<\\_ACAWK && -+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && - _ACEOF - sed -n ' - h - s/^/S["/; s/!.*/"]=/ - p - g - s/^[^!]*!// - :repl -@@ -13862,17 +16361,17 @@ t delim - /^[^""]/{ - N - s/\n// - } - ' >>$CONFIG_STATUS || ac_write_fail=1 - rm -f conf$$subs.awk - cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - _ACAWK --cat >>"\$tmp/subs1.awk" <<_ACAWK && -+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - - } - { - line = $ 0 - nfields = split(line, field, "@") - substed = 0 -@@ -13894,59 +16393,67 @@ cat >>"\$tmp/subs1.awk" <<_ACAWK && - - _ACAWK - _ACEOF - cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" - else - cat --fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ -- || as_fn_error "could not setup config files machinery" "$LINENO" 5 --_ACEOF -- --# VPATH may cause trouble with some makes, so we remove $(srcdir), --# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ -+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -+_ACEOF -+ -+# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and - # trailing colons and then remove the whole line if VPATH becomes empty - # (actually we leave an empty line to preserve line numbers). - if test "x$srcdir" = x.; then -- ac_vpsub='/^[ ]*VPATH[ ]*=/{ --s/:*\$(srcdir):*/:/ --s/:*\${srcdir}:*/:/ --s/:*@srcdir@:*/:/ --s/^\([^=]*=[ ]*\):*/\1/ -+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -+h -+s/// -+s/^/:/ -+s/[ ]*$/:/ -+s/:\$(srcdir):/:/g -+s/:\${srcdir}:/:/g -+s/:@srcdir@:/:/g -+s/^:*// - s/:*$// -+x -+s/\(=[ ]*\).*/\1/ -+G -+s/\n// - s/^[^=]*=[ ]*$// - }' - fi - - cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - fi # test -n "$CONFIG_FILES" - - # Set up the scripts for CONFIG_HEADERS section. - # No need to generate them if there are no CONFIG_HEADERS. - # This happens for instance with `./config.status Makefile'. - if test -n "$CONFIG_HEADERS"; then --cat >"$tmp/defines.awk" <<\_ACAWK || -+cat >"$ac_tmp/defines.awk" <<\_ACAWK || - BEGIN { - _ACEOF - - # Transform confdefs.h into an awk script `defines.awk', embedded as - # here-document in config.status, that substitutes the proper values into - # config.h.in to produce config.h. - - # Create a delimiter string that does not exist in confdefs.h, to ease - # handling of long lines. - ac_delim='%!_!# ' - for ac_last_try in false false :; do -- ac_t=`sed -n "/$ac_delim/p" confdefs.h` -- if test -z "$ac_t"; then -+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h` -+ if test -z "$ac_tt"; then - break - elif $ac_last_try; then -- as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 -+ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi - done - - # For the awk script, D is an array of macro values keyed by name, - # likewise P contains macro parameters if any. Preserve backslash - # newline sequences. -@@ -14021,30 +16528,30 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ - next - } - } - } - { print } - _ACAWK - _ACEOF - cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -- as_fn_error "could not setup config headers machinery" "$LINENO" 5 -+ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 - fi # test -n "$CONFIG_HEADERS" - - - eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" - shift - for ac_tag - do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; -- :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; -+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift -@@ -14053,26 +16560,26 @@ do - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in -- -) ac_f="$tmp/stdin";; -+ -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || -- as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; -+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ -@@ -14088,18 +16595,18 @@ do - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in -- *:-:* | *:-) cat >"$tmp/stdin" \ -- || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; -+ *:-:* | *:-) cat >"$ac_tmp/stdin" \ -+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || - $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ -@@ -14225,56 +16732,57 @@ s&@top_srcdir@&$ac_top_srcdir&;t t - s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t - s&@builddir@&$ac_builddir&;t t - s&@abs_builddir@&$ac_abs_builddir&;t t - s&@abs_top_builddir@&$ac_abs_top_builddir&;t t - s&@INSTALL@&$ac_INSTALL&;t t - s&@MKDIR_P@&$ac_MKDIR_P&;t t - $ac_datarootdir_hack - " --eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ -- || as_fn_error "could not create $ac_file" "$LINENO" 5 -+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ -+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - - test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && -- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && -- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && -+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && -+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ -+ "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' --which seems to be undefined. Please make sure it is defined." >&5 -+which seems to be undefined. Please make sure it is defined" >&5 - $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' --which seems to be undefined. Please make sure it is defined." >&2;} -- -- rm -f "$tmp/stdin" -+which seems to be undefined. Please make sure it is defined" >&2;} -+ -+ rm -f "$ac_tmp/stdin" - case $ac_file in -- -) cat "$tmp/out" && rm -f "$tmp/out";; -- *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; -+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; -+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ -- || as_fn_error "could not create $ac_file" "$LINENO" 5 -+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ -- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" -- } >"$tmp/config.h" \ -- || as_fn_error "could not create $ac_file" "$LINENO" 5 -- if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then -+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" -+ } >"$ac_tmp/config.h" \ -+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 -+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 - $as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" -- mv "$tmp/config.h" "$ac_file" \ -- || as_fn_error "could not create $ac_file" "$LINENO" 5 -+ mv "$ac_tmp/config.h" "$ac_file" \ -+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ -- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ -- || as_fn_error "could not create -" "$LINENO" 5 -+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ -+ || as_fn_error $? "could not create -" "$LINENO" 5 - fi - # Compute "$ac_file"'s index in $config_headers. - _am_arg="$ac_file" - _am_stamp_count=1 - for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; -@@ -14318,53 +16826,197 @@ echo "timestamp for $_am_arg" >`$as_dirn - if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then - ac_source=$srcdir/$ac_source - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 - $as_echo "$as_me: linking $ac_source to $ac_file" >&6;} - - if test ! -r "$ac_source"; then -- as_fn_error "$ac_source: file not found" "$LINENO" 5 -+ as_fn_error $? "$ac_source: file not found" "$LINENO" 5 - fi - rm -f "$ac_file" - - # Try a relative symlink, then a hard link, then a copy. -- case $srcdir in -+ case $ac_source in - [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; - *) ac_rel_source=$ac_top_build_prefix$ac_source ;; - esac - ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || - ln "$ac_source" "$ac_file" 2>/dev/null || - cp -p "$ac_source" "$ac_file" || -- as_fn_error "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 -+ as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 - fi - ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 - $as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in -+ "buildir":C) ac_top_srcdir="$ax_enable_builddir_srcdir" -+ if test ".$ax_enable_builddir" = ".." ; then -+ if test -f "$top_srcdir/Makefile" ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - left untouched" >&5 -+$as_echo "$as_me: skipping top_srcdir/Makefile - left untouched" >&6;} -+ else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - not created" >&5 -+$as_echo "$as_me: skipping top_srcdir/Makefile - not created" >&6;} -+ fi -+ else -+ if test -f "$ac_top_srcdir/Makefile" ; then -+ a=`grep "^VERSION " "$ac_top_srcdir/Makefile"` ; b=`grep "^VERSION " Makefile` -+ test "$a" != "$b" && rm "$ac_top_srcdir/Makefile" -+ fi -+ if test -f "$ac_top_srcdir/Makefile" ; then -+ echo "$ac_top_srcdir/Makefile : $ac_top_srcdir/Makefile.in" > $tmp/conftemp.mk -+ echo " @ echo 'REMOVED,,,' >\$@" >> $tmp/conftemp.mk -+ eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null" -+ if grep '^REMOVED,,,' "$ac_top_srcdir/Makefile" >/dev/null -+ then rm $ac_top_srcdir/Makefile ; fi -+ cp $tmp/conftemp.mk $ac_top_srcdir/makefiles.mk~ ## DEBUGGING -+ fi -+ if test ! -f "$ac_top_srcdir/Makefile" ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: create top_srcdir/Makefile guessed from local Makefile" >&5 -+$as_echo "$as_me: create top_srcdir/Makefile guessed from local Makefile" >&6;} -+ x='`' ; cat >$tmp/conftemp.sed <<_EOF -+/^\$/n -+x -+/^\$/bS -+x -+/\\\\\$/{H;d;} -+{H;s/.*//;x;} -+bM -+:S -+x -+/\\\\\$/{h;d;} -+{h;s/.*//;x;} -+:M -+s/\\(\\n\\) /\\1 /g -+/^ /d -+/^[ ]*[\\#]/d -+/^VPATH *=/d -+s/^srcdir *=.*/srcdir = ./ -+s/^top_srcdir *=.*/top_srcdir = ./ -+/[:=]/!d -+/^\\./d -+/ = /b -+/ .= /b -+/:/!b -+s/:.*/:/ -+s/ / /g -+s/ \\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/ \\1 \\1-all\\2/g -+s/^\\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/\\1 \\1-all\\2/ -+s/ / /g -+/^all all-all[ :]/i\\ -+all-configured : all-all -+s/ [a-zA-Z0-9-]*-all [a-zA-Z0-9-]*-all-all//g -+/-all-all/d -+a\\ -+ @ HOST="\$(HOST)\" \\\\\\ -+ ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\ -+ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ -+ ; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ -+ ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\ -+ ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\ -+ ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ -+ ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\ -+ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ -+ ; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done -+/dist-all *:/a\\ -+ @ HOST="\$(HOST)\" \\\\\\ -+ ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\ -+ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ -+ ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ -+ ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\ -+ ; if test "\$\$found" -eq "0" ; then : \\\\\\ -+ ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ -+ ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ -+ ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\ -+ ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done -+/dist-[a-zA-Z0-9]*-all *:/a\\ -+ @ HOST="\$(HOST)\" \\\\\\ -+ ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\ -+ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ -+ ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ -+ ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\ -+ ; if test "\$\$found" -eq "0" ; then : \\\\\\ -+ ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ -+ ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ -+ ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\ -+ ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done -+/distclean-all *:/a\\ -+ @ HOST="\$(HOST)\" \\\\\\ -+ ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\ -+ ; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\ -+ ; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ -+ ; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\ -+ ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ -+ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ -+ ; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\ -+ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ -+ ; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\ -+ ; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\ -+ ; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile -+_EOF -+ cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefile.sed~" ## DEBUGGING -+ $ax_enable_builddir_sed -f $tmp/conftemp.sed Makefile >$ac_top_srcdir/Makefile -+ if test -f "$ac_top_srcdir/Makefile.mk" ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&5 -+$as_echo "$as_me: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&6;} -+ cat $ac_top_srcdir/Makefile.mk >>$ac_top_srcdir/Makefile -+ fi ; xxxx="####" -+ echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$ac_top_srcdir/Makefile -+ # sanity check -+ if grep '^; echo "MAKE ' $ac_top_srcdir/Makefile >/dev/null ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: buggy sed found - it deletes tab in \"a\" text parts" >&5 -+$as_echo "$as_me: buggy sed found - it deletes tab in \"a\" text parts" >&6;} -+ $ax_enable_builddir_sed -e '/^@ HOST=/s/^/ /' -e '/^; /s/^/ /' $ac_top_srcdir/Makefile \ -+ >$ac_top_srcdir/Makefile~ -+ (test -s $ac_top_srcdir/Makefile~ && mv $ac_top_srcdir/Makefile~ $ac_top_srcdir/Makefile) 2>/dev/null -+ fi -+ else -+ xxxx="\\#\\#\\#\\#" -+ # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed -+ echo "s!^$xxxx [^|]* | *$ax_enable_builddir *\$!$xxxx ...... $ax_enable_builddir!" >$tmp/conftemp.sed -+ $ax_enable_builddir_sed -f "$tmp/conftemp.sed" "$ac_top_srcdir/Makefile" >$tmp/mkfile.tmp -+ cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefiles.sed~" ## DEBUGGING -+ cp "$tmp/mkfile.tmp" "$ac_top_srcdir/makefiles.out~" ## DEBUGGING -+ if cmp -s "$ac_top_srcdir/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: keeping top_srcdir/Makefile from earlier configure" >&5 -+$as_echo "$as_me: keeping top_srcdir/Makefile from earlier configure" >&6;} -+ rm "$tmp/mkfile.tmp" -+ else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: reusing top_srcdir/Makefile from earlier configure" >&5 -+$as_echo "$as_me: reusing top_srcdir/Makefile from earlier configure" >&6;} -+ mv "$tmp/mkfile.tmp" "$ac_top_srcdir/Makefile" -+ fi -+ fi -+ { $as_echo "$as_me:${as_lineno-$LINENO}: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&5 -+$as_echo "$as_me: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&6;} -+ xxxx="####" -+ echo "$xxxx" "$ax_enable_builddir_host" "|$ax_enable_builddir" >>$ac_top_srcdir/Makefile -+ fi -+ ;; - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { -- # Autoconf 2.62 quotes --file arguments for eval, but not when files -+ # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. -- # We used to match only the files named `Makefile.in', but -+ # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || - $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -@@ -14388,31 +17040,29 @@ echo "timestamp for $_am_arg" >`$as_dirn - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote -- # from the Makefile without running `make'. -+ # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` -- test -z "am__include" && continue -+ test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` -- # When using ansi2knr, U may be empty or an underscore; expand it -- U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ -- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do -+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || - $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || - $as_echo X"$file" | -@@ -14456,17 +17106,18 @@ echo "timestamp for $_am_arg" >`$as_dirn - #! $SHELL - - # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. - # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION - # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - # NOTE: Changes made to this file will be lost: look at ltmain.sh. - # - # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, --# 2006, 2007, 2008 Free Software Foundation, Inc. -+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -+# Foundation, Inc. - # Written by Gordon Matzigkeit, 1996 - # - # This file is part of GNU Libtool. - # - # GNU Libtool is free software; you can redistribute it and/or - # modify it under the terms of the GNU General Public License as - # published by the Free Software Foundation; either version 2 of - # the License, or (at your option) any later version. -@@ -14504,16 +17155,25 @@ build_libtool_libs=$enable_shared - build_old_libs=$enable_static - - # What type of objects to build. - pic_mode=$pic_mode - - # Whether or not to optimize for fast installation. - fast_install=$enable_fast_install - -+# Shell to use when invoking shell scripts. -+SHELL=$lt_SHELL -+ -+# An echo program that protects backslashes. -+ECHO=$lt_ECHO -+ -+# The PATH separator for the build system. -+PATH_SEPARATOR=$lt_PATH_SEPARATOR -+ - # The host system. - host_alias=$host_alias - host=$host - host_os=$host_os - - # The build system. - build_alias=$build_alias - build=$build -@@ -14553,41 +17213,63 @@ exeext=$exeext - lt_unset=$lt_unset - - # turn spaces into newlines. - SP2NL=$lt_lt_SP2NL - - # turn newlines into spaces. - NL2SP=$lt_lt_NL2SP - --# How to create reloadable object files. --reload_flag=$lt_reload_flag --reload_cmds=$lt_reload_cmds -+# convert \$build file names to \$host format. -+to_host_file_cmd=$lt_cv_to_host_file_cmd -+ -+# convert \$build files to toolchain format. -+to_tool_file_cmd=$lt_cv_to_tool_file_cmd - - # An object symbol dumper. - OBJDUMP=$lt_OBJDUMP - - # Method to check whether dependent libraries are shared objects. - deplibs_check_method=$lt_deplibs_check_method - --# Command to use when deplibs_check_method == "file_magic". -+# Command to use when deplibs_check_method = "file_magic". - file_magic_cmd=$lt_file_magic_cmd - -+# How to find potential files when deplibs_check_method = "file_magic". -+file_magic_glob=$lt_file_magic_glob -+ -+# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -+want_nocaseglob=$lt_want_nocaseglob -+ -+# DLL creation program. -+DLLTOOL=$lt_DLLTOOL -+ -+# Command to associate shared and link libraries. -+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd -+ - # The archiver. - AR=$lt_AR -+ -+# Flags to create an archive. - AR_FLAGS=$lt_AR_FLAGS - -+# How to feed a file listing to the archiver. -+archiver_list_spec=$lt_archiver_list_spec -+ - # A symbol stripping program. - STRIP=$lt_STRIP - - # Commands used to install an old-style archive. - RANLIB=$lt_RANLIB - old_postinstall_cmds=$lt_old_postinstall_cmds - old_postuninstall_cmds=$lt_old_postuninstall_cmds - -+# Whether to use a lock for old archive extraction. -+lock_old_archive_extraction=$lock_old_archive_extraction -+ - # A C compiler. - LTCC=$lt_CC - - # LTCC compiler flags. - LTCFLAGS=$lt_CFLAGS - - # Take the output of nm and produce a listing of raw symbols and C names. - global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe -@@ -14596,31 +17278,34 @@ global_symbol_pipe=$lt_lt_cv_sys_global_ - global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - - # Transform the output of nm in a C name address pair. - global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - - # Transform the output of nm in a C name address pair when lib prefix is needed. - global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -+# Specify filename containing input files for \$NM. -+nm_file_list_spec=$lt_nm_file_list_spec -+ -+# The root where to search for dependent libraries,and in which our libraries should be installed. -+lt_sysroot=$lt_sysroot -+ - # The name of the directory that contains temporary libtool files. - objdir=$objdir - --# Shell to use when invoking shell scripts. --SHELL=$lt_SHELL -- --# An echo program that does not interpret backslashes. --ECHO=$lt_ECHO -- - # Used to examine libraries when file_magic_cmd begins with "file". - MAGIC_CMD=$MAGIC_CMD - - # Must we lock files when doing compilation? - need_locks=$lt_need_locks - -+# Manifest tool. -+MANIFEST_TOOL=$lt_MANIFEST_TOOL -+ - # Tool to manipulate archived DWARF debug symbol files on Mac OS X. - DSYMUTIL=$lt_DSYMUTIL - - # Tool to change global to local symbols on Mac OS X. - NMEDIT=$lt_NMEDIT - - # Tool to manipulate fat objects and archives on Mac OS X. - LIPO=$lt_LIPO -@@ -14667,16 +17352,19 @@ libname_spec=$lt_libname_spec - - # List of archive names. First name is the real one, the rest are links. - # The last name is the one that the linker finds with -lNAME - library_names_spec=$lt_library_names_spec - - # The coded name of the library, if different from the real name. - soname_spec=$lt_soname_spec - -+# Permission mode override for installation of shared libraries. -+install_override_mode=$lt_install_override_mode -+ - # Command to use after installation of a shared archive. - postinstall_cmds=$lt_postinstall_cmds - - # Command to use after uninstallation of a shared archive. - postuninstall_cmds=$lt_postuninstall_cmds - - # Commands used to finish a libtool library installation in a directory. - finish_cmds=$lt_finish_cmds -@@ -14706,34 +17394,38 @@ dlopen_self_static=$enable_dlopen_self_s - # Commands to strip libraries. - old_striplib=$lt_old_striplib - striplib=$lt_striplib - - - # The linker used to build libraries. - LD=$lt_LD - -+# How to create reloadable object files. -+reload_flag=$lt_reload_flag -+reload_cmds=$lt_reload_cmds -+ - # Commands used to build an old-style archive. - old_archive_cmds=$lt_old_archive_cmds - - # A language specific compiler. - CC=$lt_compiler - - # Is the compiler the GNU compiler? - with_gcc=$GCC - - # Compiler flag to turn off builtin functions. - no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -+# Additional compiler flags for building library objects. -+pic_flag=$lt_lt_prog_compiler_pic -+ - # How to pass a linker flag through the compiler. - wl=$lt_lt_prog_compiler_wl - --# Additional compiler flags for building library objects. --pic_flag=$lt_lt_prog_compiler_pic -- - # Compiler flag to prevent dynamic linking. - link_static_flag=$lt_lt_prog_compiler_static - - # Does compiler simultaneously support -c and -o options? - compiler_c_o=$lt_lt_cv_prog_compiler_c_o - - # Whether or not to add -lc for building shared libraries. - build_libtool_need_lc=$archive_cmds_need_lc -@@ -14773,20 +17465,16 @@ allow_undefined_flag=$lt_allow_undefined - - # Flag that enforces no undefined symbols. - no_undefined_flag=$lt_no_undefined_flag - - # Flag to hardcode \$libdir into a binary during linking. - # This must work even if \$libdir does not exist - hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - --# If ld is used when linking, flag to hardcode \$libdir into a binary --# during linking. This must work even if \$libdir does not exist. --hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld -- - # Whether we need a single "-rpath" flag with a separated argument. - hardcode_libdir_separator=$lt_hardcode_libdir_separator - - # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes - # DIR into the resulting binary. - hardcode_direct=$hardcode_direct - - # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -@@ -14810,34 +17498,34 @@ hardcode_automatic=$hardcode_automatic - - # Set to yes if linker adds runtime paths of dependent libraries - # to runtime path list. - inherit_rpath=$inherit_rpath - - # Whether libtool must link a program against all its dependency libraries. - link_all_deplibs=$link_all_deplibs - --# Fix the shell variable \$srcfile for the compiler. --fix_srcfile_path=$lt_fix_srcfile_path -- - # Set to "yes" if exported symbols are required. - always_export_symbols=$always_export_symbols - - # The commands to list exported symbols. - export_symbols_cmds=$lt_export_symbols_cmds - - # Symbols that should not be listed in the preloaded symbols. - exclude_expsyms=$lt_exclude_expsyms - - # Symbols that must always be exported. - include_expsyms=$lt_include_expsyms - - # Commands necessary for linking programs (against libraries) with templates. - prelink_cmds=$lt_prelink_cmds - -+# Commands necessary for finishing linking programs. -+postlink_cmds=$lt_postlink_cmds -+ - # Specify filename containing input files. - file_list_spec=$lt_file_list_spec - - # How to hardcode a shared library path into an executable. - hardcode_action=$hardcode_action - - # ### END LIBTOOL CONFIG - -@@ -14860,222 +17548,179 @@ fi - - ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? -- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ -- || (rm -f "$cfgfile"; exit 1) -- -- case $xsi_shell in -- yes) -- cat << \_LT_EOF >> "$cfgfile" -- --# func_dirname file append nondir_replacement --# Compute the dirname of FILE. If nonempty, add APPEND to the result, --# otherwise set result to NONDIR_REPLACEMENT. --func_dirname () --{ -- case ${1} in -- */*) func_dirname_result="${1%/*}${2}" ;; -- * ) func_dirname_result="${3}" ;; -- esac --} -- --# func_basename file --func_basename () --{ -- func_basename_result="${1##*/}" --} -- --# func_dirname_and_basename file append nondir_replacement --# perform func_basename and func_dirname in a single function --# call: --# dirname: Compute the dirname of FILE. If nonempty, --# add APPEND to the result, otherwise set result --# to NONDIR_REPLACEMENT. --# value returned in "$func_dirname_result" --# basename: Compute filename of FILE. --# value retuned in "$func_basename_result" --# Implementation must be kept synchronized with func_dirname --# and func_basename. For efficiency, we do not delegate to --# those functions but instead duplicate the functionality here. --func_dirname_and_basename () --{ -- case ${1} in -- */*) func_dirname_result="${1%/*}${2}" ;; -- * ) func_dirname_result="${3}" ;; -- esac -- func_basename_result="${1##*/}" --} -- --# func_stripname prefix suffix name --# strip PREFIX and SUFFIX off of NAME. --# PREFIX and SUFFIX must not contain globbing or regex special --# characters, hashes, percent signs, but SUFFIX may contain a leading --# dot (in which case that matches only a dot). --func_stripname () --{ -- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are -- # positional parameters, so assign one to ordinary parameter first. -- func_stripname_result=${3} -- func_stripname_result=${func_stripname_result#"${1}"} -- func_stripname_result=${func_stripname_result%"${2}"} --} -- --# func_opt_split --func_opt_split () --{ -- func_opt_split_opt=${1%%=*} -- func_opt_split_arg=${1#*=} --} -- --# func_lo2o object --func_lo2o () --{ -- case ${1} in -- *.lo) func_lo2o_result=${1%.lo}.${objext} ;; -- *) func_lo2o_result=${1} ;; -- esac --} -- --# func_xform libobj-or-source --func_xform () --{ -- func_xform_result=${1%.*}.lo --} -- --# func_arith arithmetic-term... --func_arith () --{ -- func_arith_result=$(( $* )) --} -- --# func_len string --# STRING may not start with a hyphen. --func_len () --{ -- func_len_result=${#1} --} -- --_LT_EOF -- ;; -- *) # Bourne compatible functions. -- cat << \_LT_EOF >> "$cfgfile" -- --# func_dirname file append nondir_replacement --# Compute the dirname of FILE. If nonempty, add APPEND to the result, --# otherwise set result to NONDIR_REPLACEMENT. --func_dirname () --{ -- # Extract subdirectory from the argument. -- func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` -- if test "X$func_dirname_result" = "X${1}"; then -- func_dirname_result="${3}" -- else -- func_dirname_result="$func_dirname_result${2}" -- fi --} -- --# func_basename file --func_basename () --{ -- func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` --} -- -- --# func_stripname prefix suffix name --# strip PREFIX and SUFFIX off of NAME. --# PREFIX and SUFFIX must not contain globbing or regex special --# characters, hashes, percent signs, but SUFFIX may contain a leading --# dot (in which case that matches only a dot). --# func_strip_suffix prefix name --func_stripname () --{ -- case ${2} in -- .*) func_stripname_result=`$ECHO "X${3}" \ -- | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; -- *) func_stripname_result=`$ECHO "X${3}" \ -- | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; -- esac --} -- --# sed scripts: --my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' --my_sed_long_arg='1s/^-[^=]*=//' -- --# func_opt_split --func_opt_split () --{ -- func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` -- func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` --} -- --# func_lo2o object --func_lo2o () --{ -- func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` --} -- --# func_xform libobj-or-source --func_xform () --{ -- func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` --} -- --# func_arith arithmetic-term... --func_arith () --{ -- func_arith_result=`expr "$@"` --} -- --# func_len string --# STRING may not start with a hyphen. --func_len () --{ -- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` --} -- --_LT_EOF --esac -- --case $lt_shell_append in -- yes) -- cat << \_LT_EOF >> "$cfgfile" -- --# func_append var value --# Append VALUE to the end of shell variable VAR. --func_append () --{ -- eval "$1+=\$2" --} --_LT_EOF -- ;; -- *) -- cat << \_LT_EOF >> "$cfgfile" -- --# func_append var value --# Append VALUE to the end of shell variable VAR. --func_append () --{ -- eval "$1=\$$1\$2" --} -- --_LT_EOF -- ;; -- esac -- -- -- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ -- || (rm -f "$cfgfile"; exit 1) -- -- mv -f "$cfgfile" "$ofile" || -+ sed '$q' "$ltmain" >> "$cfgfile" \ -+ || (rm -f "$cfgfile"; exit 1) -+ -+ if test x"$xsi_shell" = xyes; then -+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -+func_dirname ()\ -+{\ -+\ case ${1} in\ -+\ */*) func_dirname_result="${1%/*}${2}" ;;\ -+\ * ) func_dirname_result="${3}" ;;\ -+\ esac\ -+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_basename ()$/,/^} # func_basename /c\ -+func_basename ()\ -+{\ -+\ func_basename_result="${1##*/}"\ -+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -+func_dirname_and_basename ()\ -+{\ -+\ case ${1} in\ -+\ */*) func_dirname_result="${1%/*}${2}" ;;\ -+\ * ) func_dirname_result="${3}" ;;\ -+\ esac\ -+\ func_basename_result="${1##*/}"\ -+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -+func_stripname ()\ -+{\ -+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -+\ # positional parameters, so assign one to ordinary parameter first.\ -+\ func_stripname_result=${3}\ -+\ func_stripname_result=${func_stripname_result#"${1}"}\ -+\ func_stripname_result=${func_stripname_result%"${2}"}\ -+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -+func_split_long_opt ()\ -+{\ -+\ func_split_long_opt_name=${1%%=*}\ -+\ func_split_long_opt_arg=${1#*=}\ -+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -+func_split_short_opt ()\ -+{\ -+\ func_split_short_opt_arg=${1#??}\ -+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -+func_lo2o ()\ -+{\ -+\ case ${1} in\ -+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -+\ *) func_lo2o_result=${1} ;;\ -+\ esac\ -+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_xform ()$/,/^} # func_xform /c\ -+func_xform ()\ -+{\ -+ func_xform_result=${1%.*}.lo\ -+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_arith ()$/,/^} # func_arith /c\ -+func_arith ()\ -+{\ -+ func_arith_result=$(( $* ))\ -+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_len ()$/,/^} # func_len /c\ -+func_len ()\ -+{\ -+ func_len_result=${#1}\ -+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+fi -+ -+if test x"$lt_shell_append" = xyes; then -+ sed -e '/^func_append ()$/,/^} # func_append /c\ -+func_append ()\ -+{\ -+ eval "${1}+=\\${2}"\ -+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -+func_append_quoted ()\ -+{\ -+\ func_quote_for_eval "${2}"\ -+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ # Save a `func_append' function call where possible by direct use of '+=' -+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+ test 0 -eq $? || _lt_function_replace_fail=: -+else -+ # Save a `func_append' function call even when '+=' is not available -+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+ test 0 -eq $? || _lt_function_replace_fail=: -+fi -+ -+if test x"$_lt_function_replace_fail" = x":"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -+fi -+ -+ -+ mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - ;; - "include":C) test -d include || mkdir include ;; - "src":C) - test -d src || mkdir src - test -d src/$TARGETDIR || mkdir src/$TARGETDIR -@@ -15085,17 +17730,17 @@ test -d src/$TARGETDIR || mkdir src/$TAR - done # for ac_tag - - - as_fn_exit 0 - _ACEOF - ac_clean_files=$ac_clean_files_save - - test $ac_write_fail = 0 || -- as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 -+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - - # configure is writing to config.log, and then calls config.status. - # config.status does its own redirection, appending to config.log. - # Unfortunately, on DOS this fails, as config.log is still kept open - # by configure, so config.status won't be able to write to it; its - # output is simply discarded. So we exec the FD to /dev/null, - # effectively closing config.log, so it can be properly (re)opened and -@@ -15106,15 +17751,15 @@ if test "$no_create" != yes; then - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. -- $ac_cs_success || as_fn_exit $? -+ $ac_cs_success || as_fn_exit 1 - fi - if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 - $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} - fi - -diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac ---- a/js/src/ctypes/libffi/configure.ac -+++ b/js/src/ctypes/libffi/configure.ac -@@ -1,152 +1,261 @@ - dnl Process this with autoconf to create configure - --AC_PREREQ(2.63) -+AC_PREREQ(2.68) - --AC_INIT([libffi], [3.0.10rc0], [http://gcc.gnu.org/bugs.html]) -+AC_INIT([libffi], [3.1-rc1], [http://github.com/atgreen/libffi/issues]) - AC_CONFIG_HEADERS([fficonfig.h]) - - AC_CANONICAL_SYSTEM - target_alias=${target_alias-$host_alias} - --. ${srcdir}/configure.host -+case "${host}" in -+ frv*-elf) -+ LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/ -+ ;; -+esac -+ -+AX_ENABLE_BUILDDIR - - AM_INIT_AUTOMAKE - - # The same as in boehm-gc and libstdc++. Have to borrow it from there. - # We must force CC to /not/ be precious variables; otherwise - # the wrong, non-multilib-adjusted value will be used in multilibs. - # As a side effect, we have to subst CFLAGS ourselves. - # Also save and restore CFLAGS, since AC_PROG_CC will come up with - # defaults of its own if none are provided. - - m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) - m4_define([_AC_ARG_VAR_PRECIOUS],[]) - save_CFLAGS=$CFLAGS - AC_PROG_CC - CFLAGS=$save_CFLAGS - m4_undefine([_AC_ARG_VAR_PRECIOUS]) --m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) -+m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) - - AC_SUBST(CFLAGS) - - AM_PROG_AS - AM_PROG_CC_C_O - AC_PROG_LIBTOOL - AC_CONFIG_MACRO_DIR([m4]) - -+# Test for 64-bit build. -+AC_CHECK_SIZEOF([size_t]) -+ -+AX_COMPILER_VENDOR -+AX_CC_MAXOPT -+# The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro -+# compiler. -+if test "$ax_cv_c_compiler_vendor" != "sun"; then -+ AX_CFLAGS_WARN_ALL -+fi -+ -+if test "x$GCC" = "xyes"; then -+ CFLAGS="$CFLAGS -fexceptions" -+ touch local.exp -+else -+ cat > local.exp < conftest.s -- if $CC $CFLAGS -c conftest.s > /dev/null; then -+ if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then - libffi_cv_as_x86_pcrel=yes - fi - ]) - if test "x$libffi_cv_as_x86_pcrel" = xyes; then - AC_DEFINE(HAVE_AS_X86_PCREL, 1, - [Define if your assembler supports PC relative relocs.]) - fi - - AC_CACHE_CHECK([assembler .ascii pseudo-op support], - libffi_cv_as_ascii_pseudo_op, [ - libffi_cv_as_ascii_pseudo_op=unknown - # Check if we have .ascii -- AC_TRY_COMPILE([asm (".ascii \"string\"");],, -+ AC_TRY_COMPILE(,[asm (".ascii \\"string\\"");], - [libffi_cv_as_ascii_pseudo_op=yes], - [libffi_cv_as_ascii_pseudo_op=no]) - ]) - if test "x$libffi_cv_as_ascii_pseudo_op" = xyes; then - AC_DEFINE(HAVE_AS_ASCII_PSEUDO_OP, 1, - [Define if your assembler supports .ascii.]) - fi - - AC_CACHE_CHECK([assembler .string pseudo-op support], - libffi_cv_as_string_pseudo_op, [ - libffi_cv_as_string_pseudo_op=unknown - # Check if we have .string -- AC_TRY_COMPILE([asm (".string \"string\"");],, -+ AC_TRY_COMPILE(,[asm (".string \\"string\\"");], - [libffi_cv_as_string_pseudo_op=yes], - [libffi_cv_as_string_pseudo_op=no]) - ]) - if test "x$libffi_cv_as_string_pseudo_op" = xyes; then - AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1, - [Define if your assembler supports .string.]) - fi - fi - --if test x$TARGET = xX86_WIN64; then -- LT_SYS_SYMBOL_USCORE -- if test "x$sys_symbol_underscore" = xyes; then -- AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.]) -- fi -+# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. -+AC_ARG_ENABLE(pax_emutramp, -+ [ --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC], -+ if test "$enable_pax_emutramp" = "yes"; then -+ AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1, -+ [Define this if you want to enable pax emulated trampolines]) -+ fi) -+ -+LT_SYS_SYMBOL_USCORE -+if test "x$sys_symbol_underscore" = xyes; then -+ AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.]) - fi - -+FFI_EXEC_TRAMPOLINE_TABLE=0 - case "$target" in -- # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages -- *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*) -+ *arm*-apple-darwin*) -+ FFI_EXEC_TRAMPOLINE_TABLE=1 -+ AC_DEFINE(FFI_EXEC_TRAMPOLINE_TABLE, 1, -+ [Cannot use PROT_EXEC on this target, so, we revert to -+ alternative means]) -+ ;; -+ *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*) - AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1, - [Cannot use malloc on this target, so, we revert to - alternative means]) - ;; - esac -+AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1) -+AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE) - - if test x$TARGET = xX86_64; then - AC_CACHE_CHECK([toolchain supports unwind section type], - libffi_cv_as_x86_64_unwind_section_type, [ - cat > conftest1.s << EOF - .text - .globl foo - foo: -@@ -357,54 +489,57 @@ EOF - fi - ]) - if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then - AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1, - [Define if your assembler supports unwind section type.]) - fi - fi - --AC_CACHE_CHECK([whether .eh_frame section should be read-only], -- libffi_cv_ro_eh_frame, [ -- libffi_cv_ro_eh_frame=no -- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c -- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then -- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then -- libffi_cv_ro_eh_frame=yes -- elif grep '.section.*eh_frame.*#alloc' conftest.c \ -- | grep -v '#write' > /dev/null; then -- libffi_cv_ro_eh_frame=yes -- fi -- fi -- rm -f conftest.* -- ]) --if test "x$libffi_cv_ro_eh_frame" = xyes; then -- AC_DEFINE(HAVE_RO_EH_FRAME, 1, -- [Define if .eh_frame sections should be read-only.]) -- AC_DEFINE(EH_FRAME_FLAGS, "a", -- [Define to the flags needed for the .section .eh_frame directive.]) --else -- AC_DEFINE(EH_FRAME_FLAGS, "aw", -- [Define to the flags needed for the .section .eh_frame directive.]) --fi -+if test "x$GCC" = "xyes"; then -+ AC_CACHE_CHECK([whether .eh_frame section should be read-only], -+ libffi_cv_ro_eh_frame, [ -+ libffi_cv_ro_eh_frame=no -+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c -+ if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then -+ objdump -h conftest.o > conftest.dump 2>&1 -+ libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1` -+ libffi_test_line=`expr $libffi_eh_frame_line + 1`p -+ sed -n $libffi_test_line conftest.dump > conftest.line -+ if grep READONLY conftest.line > /dev/null; then -+ libffi_cv_ro_eh_frame=yes -+ fi -+ fi -+ rm -f conftest.* -+ ]) -+ if test "x$libffi_cv_ro_eh_frame" = xyes; then -+ AC_DEFINE(HAVE_RO_EH_FRAME, 1, -+ [Define if .eh_frame sections should be read-only.]) -+ AC_DEFINE(EH_FRAME_FLAGS, "a", -+ [Define to the flags needed for the .section .eh_frame directive. ]) -+ else -+ AC_DEFINE(EH_FRAME_FLAGS, "aw", -+ [Define to the flags needed for the .section .eh_frame directive. ]) -+ fi - --AC_CACHE_CHECK([for __attribute__((visibility("hidden")))], -- libffi_cv_hidden_visibility_attribute, [ -- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c -- libffi_cv_hidden_visibility_attribute=no -- if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then -- if grep '\.hidden.*foo' conftest.s >/dev/null; then -- libffi_cv_hidden_visibility_attribute=yes -- fi -- fi -- rm -f conftest.* -- ]) --if test $libffi_cv_hidden_visibility_attribute = yes; then -- AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1, -- [Define if __attribute__((visibility("hidden"))) is supported.]) -+ AC_CACHE_CHECK([for __attribute__((visibility("hidden")))], -+ libffi_cv_hidden_visibility_attribute, [ -+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c -+ libffi_cv_hidden_visibility_attribute=no -+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then -+ if grep '\.hidden.*foo' conftest.s >/dev/null; then -+ libffi_cv_hidden_visibility_attribute=yes -+ fi -+ fi -+ rm -f conftest.* -+ ]) -+ if test $libffi_cv_hidden_visibility_attribute = yes; then -+ AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1, -+ [Define if __attribute__((visibility("hidden"))) is supported.]) -+ fi - fi - - AH_BOTTOM([ - #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE - #ifdef LIBFFI_ASM - #define FFI_HIDDEN(name) .hidden name - #else - #define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) -@@ -428,53 +563,54 @@ AC_ARG_ENABLE(debug, - if test "$enable_debug" = "yes"; then - AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.]) - fi) - AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes") - - AC_ARG_ENABLE(structs, - [ --disable-structs omit code for struct support], - if test "$enable_structs" = "no"; then -- AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this is you do not want support for aggregate types.]) -+ AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this if you do not want support for aggregate types.]) - fi) -+AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes") - - AC_ARG_ENABLE(raw-api, - [ --disable-raw-api make the raw api unavailable], - if test "$enable_raw_api" = "no"; then -- AC_DEFINE(FFI_NO_RAW_API, 1, [Define this is you do not want support for the raw API.]) -+ AC_DEFINE(FFI_NO_RAW_API, 1, [Define this if you do not want support for the raw API.]) - fi) - - AC_ARG_ENABLE(purify-safety, - [ --enable-purify-safety purify-safe mode], - if test "$enable_purify_safety" = "yes"; then - AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.]) - fi) - --if test -n "$with_cross_host" && -- test x"$with_cross_host" != x"no"; then -- toolexecdir='$(exec_prefix)/$(target_alias)' -- toolexeclibdir='$(toolexecdir)/lib' -+# These variables are only ever used when we cross-build to X86_WIN32. -+# And we only support this with GCC, so... -+if test "x$GCC" = "xyes"; then -+ if test -n "$with_cross_host" && -+ test x"$with_cross_host" != x"no"; then -+ toolexecdir='$(exec_prefix)/$(target_alias)' -+ toolexeclibdir='$(toolexecdir)/lib' -+ else -+ toolexecdir='$(libdir)/gcc-lib/$(target_alias)' -+ toolexeclibdir='$(libdir)' -+ fi -+ multi_os_directory=`$CC -print-multi-os-directory` -+ case $multi_os_directory in -+ .) ;; # Avoid trailing /. -+ ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; -+ esac -+ AC_SUBST(toolexecdir) - else -- toolexecdir='$(libdir)/gcc-lib/$(target_alias)' - toolexeclibdir='$(libdir)' - fi --multi_os_directory=`$CC -print-multi-os-directory` --case $multi_os_directory in -- .) ;; # Avoid trailing /. -- *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; --esac --AC_SUBST(toolexecdir) - AC_SUBST(toolexeclibdir) - --if test "${multilib}" = "yes"; then -- multilib_arg="--enable-multilib" --else -- multilib_arg= --fi -- - AC_CONFIG_COMMANDS(include, [test -d include || mkdir include]) - AC_CONFIG_COMMANDS(src, [ - test -d src || mkdir src - test -d src/$TARGETDIR || mkdir src/$TARGETDIR - ], [TARGETDIR="$TARGETDIR"]) - - AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h) - -diff --git a/js/src/ctypes/libffi/configure.host b/js/src/ctypes/libffi/configure.host -deleted file mode 100644 ---- a/js/src/ctypes/libffi/configure.host -+++ /dev/null -@@ -1,11 +0,0 @@ --# configure.host --# --# This shell script handles all host based configuration for libffi. --# -- --# THIS TABLE IS SORTED. KEEP IT THAT WAY. --case "${host}" in -- frv*-elf) -- LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/ -- ;; --esac -diff --git a/js/src/ctypes/libffi/depcomp b/js/src/ctypes/libffi/depcomp ---- a/js/src/ctypes/libffi/depcomp -+++ b/js/src/ctypes/libffi/depcomp -@@ -1,95 +1,178 @@ - #! /bin/sh - # depcomp - compile a program generating dependencies as side-effects - --scriptversion=2006-10-15.18 -+scriptversion=2013-05-30.07; # UTC - --# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software --# Foundation, Inc. -+# Copyright (C) 1999-2013 Free Software Foundation, Inc. - - # This program is free software; you can redistribute it and/or modify - # it under the terms of the GNU General Public License as published by - # the Free Software Foundation; either version 2, or (at your option) - # any later version. - - # This program is distributed in the hope that it will be useful, - # but WITHOUT ANY WARRANTY; without even the implied warranty of - # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - # GNU General Public License for more details. - - # You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA --# 02110-1301, USA. -+# along with this program. If not, see . - - # As a special exception to the GNU General Public License, if you - # distribute this file as part of a program that contains a - # configuration script generated by Autoconf, you may include it under - # the same distribution terms that you use for the rest of that program. - - # Originally written by Alexandre Oliva . - - case $1 in - '') -- echo "$0: No command. Try \`$0 --help' for more information." 1>&2 -- exit 1; -- ;; -+ echo "$0: No command. Try '$0 --help' for more information." 1>&2 -+ exit 1; -+ ;; - -h | --h*) - cat <<\EOF - Usage: depcomp [--help] [--version] PROGRAM [ARGS] - - Run PROGRAMS ARGS to compile a file, generating dependencies - as side-effects. - - Environment variables: - depmode Dependency tracking mode. -- source Source file read by `PROGRAMS ARGS'. -- object Object file output by `PROGRAMS ARGS'. -+ source Source file read by 'PROGRAMS ARGS'. -+ object Object file output by 'PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. -- tmpdepfile Temporary file to use when outputing dependencies. -+ tmpdepfile Temporary file to use when outputting dependencies. - libtool Whether libtool is used (yes/no). - - Report bugs to . - EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; - esac - -+# Get the directory component of the given path, and save it in the -+# global variables '$dir'. Note that this directory component will -+# be either empty or ending with a '/' character. This is deliberate. -+set_dir_from () -+{ -+ case $1 in -+ */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; -+ *) dir=;; -+ esac -+} -+ -+# Get the suffix-stripped basename of the given path, and save it the -+# global variable '$base'. -+set_base_from () -+{ -+ base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` -+} -+ -+# If no dependency file was actually created by the compiler invocation, -+# we still have to create a dummy depfile, to avoid errors with the -+# Makefile "include basename.Plo" scheme. -+make_dummy_depfile () -+{ -+ echo "#dummy" > "$depfile" -+} -+ -+# Factor out some common post-processing of the generated depfile. -+# Requires the auxiliary global variable '$tmpdepfile' to be set. -+aix_post_process_depfile () -+{ -+ # If the compiler actually managed to produce a dependency file, -+ # post-process it. -+ if test -f "$tmpdepfile"; then -+ # Each line is of the form 'foo.o: dependency.h'. -+ # Do two passes, one to just change these to -+ # $object: dependency.h -+ # and one to simply output -+ # dependency.h: -+ # which is needed to avoid the deleted-header problem. -+ { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" -+ sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" -+ } > "$depfile" -+ rm -f "$tmpdepfile" -+ else -+ make_dummy_depfile -+ fi -+} -+ -+# A tabulation character. -+tab=' ' -+# A newline character. -+nl=' -+' -+# Character ranges might be problematic outside the C locale. -+# These definitions help. -+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ -+lower=abcdefghijklmnopqrstuvwxyz -+digits=0123456789 -+alpha=${upper}${lower} -+ - if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 - fi - - # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. - depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} - tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - - rm -f "$tmpdepfile" - -+# Avoid interferences from the environment. -+gccflag= dashmflag= -+ - # Some modes work just like other modes, but use different flags. We - # parameterize here, but still list the modes in the big case below, - # to make depend.m4 easier to write. Note that we *cannot* use a case - # here, because this file can only contain one case statement. - if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc - fi - - if test "$depmode" = dashXmstdout; then -- # This is just like dashmstdout with a different argument. -- dashmflag=-xM -- depmode=dashmstdout -+ # This is just like dashmstdout with a different argument. -+ dashmflag=-xM -+ depmode=dashmstdout -+fi -+ -+cygpath_u="cygpath -u -f -" -+if test "$depmode" = msvcmsys; then -+ # This is just like msvisualcpp but w/o cygpath translation. -+ # Just convert the backslash-escaped backslashes to single forward -+ # slashes to satisfy depend.m4 -+ cygpath_u='sed s,\\\\,/,g' -+ depmode=msvisualcpp -+fi -+ -+if test "$depmode" = msvc7msys; then -+ # This is just like msvc7 but w/o cygpath translation. -+ # Just convert the backslash-escaped backslashes to single forward -+ # slashes to satisfy depend.m4 -+ cygpath_u='sed s,\\\\,/,g' -+ depmode=msvc7 -+fi -+ -+if test "$depmode" = xlc; then -+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. -+ gccflag=-qmakedep=gcc,-MF -+ depmode=gcc - fi - - case "$depmode" in - gcc3) - ## gcc 3 implements dependency tracking that does exactly what - ## we want. Yay! Note: for some reason libtool 1.4 doesn't like - ## it if -MD -MP comes after the -MF stuff. Hmm. - ## Unfortunately, FreeBSD c89 acceptance of flags depends upon -@@ -102,64 +185,67 @@ gcc3) - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? -- if test $stat -eq 0; then : -- else -+ if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - - gcc) -+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. -+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. -+## (see the conditional assignment to $gccflag above). - ## There are various ways to get dependency output from gcc. Here's - ## why we pick this rather obscure method: - ## - Don't want to use -MD because we'd like the dependencies to end - ## up in a subdir. Having to rename by hand is ugly. - ## (We might end up doing this anyway to support other compilers.) - ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like --## -MM, not -M (despite what the docs say). -+## -MM, not -M (despite what the docs say). Also, it might not be -+## supported by the other compilers which use the 'gcc' depmode. - ## - Using -M directly means running the compiler twice (even worse - ## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? -- if test $stat -eq 0; then : -- else -+ if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" -- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz --## The second -e expression handles DOS-style file names with drive letters. -+ # The second -e expression handles DOS-style file names with drive -+ # letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" --## This next piece of magic avoids the `deleted header file' problem. -+## This next piece of magic avoids the "deleted header file" problem. - ## The problem is that when a header file which appears in a .P file - ## is deleted, the dependency causes make to die (because there is - ## typically no way to rebuild the header). We avoid this by adding - ## dummy dependencies for each header file. Too bad gcc doesn't do - ## this for us directly. -- tr ' ' ' --' < "$tmpdepfile" | --## Some versions of gcc put a space before the `:'. On the theory -+## Some versions of gcc put a space before the ':'. On the theory - ## that the space means something, we add a space to the output as --## well. -+## well. hp depmode also adds that space, but also prefixes the VPATH -+## to the object. Take care to not repeat it in the output. - ## Some versions of the HPUX 10.20 sed can't process this invocation - ## correctly. Breaking it into two sed invocations is a workaround. -- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" -+ tr ' ' "$nl" < "$tmpdepfile" \ -+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ -+ | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - - hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 -@@ -167,250 +253,339 @@ hp) - - sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? -- if test $stat -eq 0; then : -- else -+ if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" -- - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; -- # the IRIX cc adds comments like `#:fec' to the end of the -+ # the IRIX cc adds comments like '#:fec' to the end of the - # dependency line. -- tr ' ' ' --' < "$tmpdepfile" \ -- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ -- tr ' --' ' ' >> $depfile -- echo >> $depfile -- -+ tr ' ' "$nl" < "$tmpdepfile" \ -+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ -+ | tr "$nl" ' ' >> "$depfile" -+ echo >> "$depfile" - # The second pass generates a dummy entry for each header file. -- tr ' ' ' --' < "$tmpdepfile" \ -- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ -- >> $depfile -+ tr ' ' "$nl" < "$tmpdepfile" \ -+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ -+ >> "$depfile" - else -- # The sourcefile does not contain any dependencies, so just -- # store a dummy comment line, to avoid errors with the Makefile -- # "include basename.Plo" scheme. -- echo "#dummy" > "$depfile" -+ make_dummy_depfile - fi - rm -f "$tmpdepfile" - ;; - -+xlc) -+ # This case exists only to let depend.m4 do its work. It works by -+ # looking at the text of this script. This case will never be run, -+ # since it is checked for above. -+ exit 1 -+ ;; -+ - aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the -- # current directory. Also, the AIX compiler puts `$object:' at the -+ # current directory. Also, the AIX compiler puts '$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. -- stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` -- tmpdepfile="$stripped.u" -+ set_dir_from "$object" -+ set_base_from "$object" - if test "$libtool" = yes; then -+ tmpdepfile1=$dir$base.u -+ tmpdepfile2=$base.u -+ tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else -+ tmpdepfile1=$dir$base.u -+ tmpdepfile2=$dir$base.u -+ tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? -- -- if test -f "$tmpdepfile"; then : -- else -- stripped=`echo "$stripped" | sed 's,^.*/,,'` -- tmpdepfile="$stripped.u" -+ if test $stat -ne 0; then -+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" -+ exit $stat - fi - -- if test $stat -eq 0; then : -- else -+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" -+ do -+ test -f "$tmpdepfile" && break -+ done -+ aix_post_process_depfile -+ ;; -+ -+tcc) -+ # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 -+ # FIXME: That version still under development at the moment of writing. -+ # Make that this statement remains true also for stable, released -+ # versions. -+ # It will wrap lines (doesn't matter whether long or short) with a -+ # trailing '\', as in: -+ # -+ # foo.o : \ -+ # foo.c \ -+ # foo.h \ -+ # -+ # It will put a trailing '\' even on the last line, and will use leading -+ # spaces rather than leading tabs (at least since its commit 0394caf7 -+ # "Emit spaces for -MD"). -+ "$@" -MD -MF "$tmpdepfile" -+ stat=$? -+ if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi -- -- if test -f "$tmpdepfile"; then -- outname="$stripped.o" -- # Each line is of the form `foo.o: dependent.h'. -- # Do two passes, one to just change these to -- # `$object: dependent.h' and one to simply `dependent.h:'. -- sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" -- sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" -- else -- # The sourcefile does not contain any dependencies, so just -- # store a dummy comment line, to avoid errors with the Makefile -- # "include basename.Plo" scheme. -- echo "#dummy" > "$depfile" -- fi -+ rm -f "$depfile" -+ # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. -+ # We have to change lines of the first kind to '$object: \'. -+ sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" -+ # And for each line of the second kind, we have to emit a 'dep.h:' -+ # dummy dependency, to avoid the deleted-header problem. -+ sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" - rm -f "$tmpdepfile" - ;; - --icc) -- # Intel's C compiler understands `-MD -MF file'. However on -- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c -- # ICC 7.0 will fill foo.d with something like -- # foo.o: sub/foo.c -- # foo.o: sub/foo.h -- # which is wrong. We want: -- # sub/foo.o: sub/foo.c -- # sub/foo.o: sub/foo.h -- # sub/foo.c: -- # sub/foo.h: -- # ICC 7.1 will output -+## The order of this option in the case statement is important, since the -+## shell code in configure will try each of these formats in the order -+## listed in this file. A plain '-MD' option would be understood by many -+## compilers, so we must ensure this comes after the gcc and icc options. -+pgcc) -+ # Portland's C compiler understands '-MD'. -+ # Will always output deps to 'file.d' where file is the root name of the -+ # source file under compilation, even if file resides in a subdirectory. -+ # The object file name does not affect the name of the '.d' file. -+ # pgcc 10.2 will output - # foo.o: sub/foo.c sub/foo.h -- # and will wrap long lines using \ : -+ # and will wrap long lines using '\' : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... -+ set_dir_from "$object" -+ # Use the source, not the object, to determine the base name, since -+ # that's sadly what pgcc will do too. -+ set_base_from "$source" -+ tmpdepfile=$base.d - -- "$@" -MD -MF "$tmpdepfile" -- stat=$? -- if test $stat -eq 0; then : -- else -+ # For projects that build the same source file twice into different object -+ # files, the pgcc approach of using the *source* file root name can cause -+ # problems in parallel builds. Use a locking strategy to avoid stomping on -+ # the same $tmpdepfile. -+ lockdir=$base.d-lock -+ trap " -+ echo '$0: caught signal, cleaning up...' >&2 -+ rmdir '$lockdir' -+ exit 1 -+ " 1 2 13 15 -+ numtries=100 -+ i=$numtries -+ while test $i -gt 0; do -+ # mkdir is a portable test-and-set. -+ if mkdir "$lockdir" 2>/dev/null; then -+ # This process acquired the lock. -+ "$@" -MD -+ stat=$? -+ # Release the lock. -+ rmdir "$lockdir" -+ break -+ else -+ # If the lock is being held by a different process, wait -+ # until the winning process is done or we timeout. -+ while test -d "$lockdir" && test $i -gt 0; do -+ sleep 1 -+ i=`expr $i - 1` -+ done -+ fi -+ i=`expr $i - 1` -+ done -+ trap - 1 2 13 15 -+ if test $i -le 0; then -+ echo "$0: failed to acquire lock after $numtries attempts" >&2 -+ echo "$0: check lockdir '$lockdir'" >&2 -+ exit 1 -+ fi -+ -+ if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. -- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | -- sed -e 's/$/ :/' >> "$depfile" -+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ -+ | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - - hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. -- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` -- test "x$dir" = "x$object" && dir= -- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` -+ set_dir_from "$object" -+ set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? -- if test $stat -eq 0; then : -- else -+ if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then -- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" -- # Add `dependent.h:' lines. -- sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" -+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" -+ # Add 'dependent.h:' lines. -+ sed -ne '2,${ -+ s/^ *// -+ s/ \\*$// -+ s/$/:/ -+ p -+ }' "$tmpdepfile" >> "$depfile" - else -- echo "#dummy" > "$depfile" -+ make_dummy_depfile - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - - tru64) -- # The Tru64 compiler uses -MD to generate dependencies as a side -- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. -- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put -- # dependencies in `foo.d' instead, so we check for that too. -- # Subdirectories are respected. -- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` -- test "x$dir" = "x$object" && dir= -- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` -+ # The Tru64 compiler uses -MD to generate dependencies as a side -+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. -+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put -+ # dependencies in 'foo.d' instead, so we check for that too. -+ # Subdirectories are respected. -+ set_dir_from "$object" -+ set_base_from "$object" - -- if test "$libtool" = yes; then -- # With Tru64 cc, shared objects can also be used to make a -- # static library. This mechanism is used in libtool 1.4 series to -- # handle both shared and static libraries in a single compilation. -- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. -- # -- # With libtool 1.5 this exception was removed, and libtool now -- # generates 2 separate objects for the 2 libraries. These two -- # compilations output dependencies in $dir.libs/$base.o.d and -- # in $dir$base.o.d. We have to check for both files, because -- # one of the two compilations can be disabled. We should prefer -- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is -- # automatically cleaned when .libs/ is deleted, while ignoring -- # the former would cause a distcleancheck panic. -- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 -- tmpdepfile2=$dir$base.o.d # libtool 1.5 -- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 -- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 -- "$@" -Wc,-MD -- else -- tmpdepfile1=$dir$base.o.d -- tmpdepfile2=$dir$base.d -- tmpdepfile3=$dir$base.d -- tmpdepfile4=$dir$base.d -- "$@" -MD -- fi -+ if test "$libtool" = yes; then -+ # Libtool generates 2 separate objects for the 2 libraries. These -+ # two compilations output dependencies in $dir.libs/$base.o.d and -+ # in $dir$base.o.d. We have to check for both files, because -+ # one of the two compilations can be disabled. We should prefer -+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is -+ # automatically cleaned when .libs/ is deleted, while ignoring -+ # the former would cause a distcleancheck panic. -+ tmpdepfile1=$dir$base.o.d # libtool 1.5 -+ tmpdepfile2=$dir.libs/$base.o.d # Likewise. -+ tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 -+ "$@" -Wc,-MD -+ else -+ tmpdepfile1=$dir$base.d -+ tmpdepfile2=$dir$base.d -+ tmpdepfile3=$dir$base.d -+ "$@" -MD -+ fi - -- stat=$? -- if test $stat -eq 0; then : -- else -- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" -- exit $stat -- fi -+ stat=$? -+ if test $stat -ne 0; then -+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" -+ exit $stat -+ fi - -- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" -- do -- test -f "$tmpdepfile" && break -- done -- if test -f "$tmpdepfile"; then -- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" -- # That's a tab and a space in the []. -- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" -- else -- echo "#dummy" > "$depfile" -- fi -- rm -f "$tmpdepfile" -- ;; -+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" -+ do -+ test -f "$tmpdepfile" && break -+ done -+ # Same post-processing that is required for AIX mode. -+ aix_post_process_depfile -+ ;; -+ -+msvc7) -+ if test "$libtool" = yes; then -+ showIncludes=-Wc,-showIncludes -+ else -+ showIncludes=-showIncludes -+ fi -+ "$@" $showIncludes > "$tmpdepfile" -+ stat=$? -+ grep -v '^Note: including file: ' "$tmpdepfile" -+ if test $stat -ne 0; then -+ rm -f "$tmpdepfile" -+ exit $stat -+ fi -+ rm -f "$depfile" -+ echo "$object : \\" > "$depfile" -+ # The first sed program below extracts the file names and escapes -+ # backslashes for cygpath. The second sed program outputs the file -+ # name when reading, but also accumulates all include files in the -+ # hold buffer in order to output them again at the end. This only -+ # works with sed implementations that can handle large buffers. -+ sed < "$tmpdepfile" -n ' -+/^Note: including file: *\(.*\)/ { -+ s//\1/ -+ s/\\/\\\\/g -+ p -+}' | $cygpath_u | sort -u | sed -n ' -+s/ /\\ /g -+s/\(.*\)/'"$tab"'\1 \\/p -+s/.\(.*\) \\/\1:/ -+H -+$ { -+ s/.*/'"$tab"'/ -+ G -+ p -+}' >> "$depfile" -+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash -+ rm -f "$tmpdepfile" -+ ;; -+ -+msvc7msys) -+ # This case exists only to let depend.m4 do its work. It works by -+ # looking at the text of this script. This case will never be run, -+ # since it is checked for above. -+ exit 1 -+ ;; - - #nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - - dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then -- while test $1 != '--mode=compile'; do -+ while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - -- # Remove `-o $object'. -+ # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) -@@ -420,93 +595,103 @@ dashmstdout) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M -- # Require at least two characters before searching for `:' -+ # Require at least two characters before searching for ':' - # in the target name. This is to cope with DOS-style filenames: -- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. -+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. - "$@" $dashmflag | -- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" -+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" -- tr ' ' ' --' < "$tmpdepfile" | \ --## Some versions of the HPUX 10.20 sed can't process this invocation --## correctly. Breaking it into two sed invocations is a workaround. -- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" -+ # Some versions of the HPUX 10.20 sed can't process this sed invocation -+ # correctly. Breaking it into two sed invocations is a workaround. -+ tr ' ' "$nl" < "$tmpdepfile" \ -+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ -+ | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - - dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - - makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then -- while test $1 != '--mode=compile'; do -+ while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift -- cleared=no -- for arg in "$@"; do -+ cleared=no eat=no -+ for arg -+ do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac -+ if test $eat = yes; then -+ eat=no -+ continue -+ fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. -+ -arch) -+ eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done -- obj_suffix="`echo $object | sed 's/^.*\././'`" -+ obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" -- cat < "$tmpdepfile" > "$depfile" -- sed '1,2d' "$tmpdepfile" | tr ' ' ' --' | \ --## Some versions of the HPUX 10.20 sed can't process this invocation --## correctly. Breaking it into two sed invocations is a workaround. -- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" -+ # makedepend may prepend the VPATH from the source file name to the object. -+ # No need to regex-escape $object, excess matching of '.' is harmless. -+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" -+ # Some versions of the HPUX 10.20 sed can't process the last invocation -+ # correctly. Breaking it into two sed invocations is a workaround. -+ sed '1,2d' "$tmpdepfile" \ -+ | tr ' ' "$nl" \ -+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ -+ | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - - cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then -- while test $1 != '--mode=compile'; do -+ while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - -- # Remove `-o $object'. -+ # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) -@@ -515,58 +700,79 @@ cpp) - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - -- "$@" -E | -- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | -- sed '$ s: \\$::' > "$tmpdepfile" -+ "$@" -E \ -+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -+ | sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - - msvisualcpp) - # Important note: in order to support this mode, a compiler *must* -- # always write the preprocessed file to stdout, regardless of -o, -- # because we must use -o when running libtool. -+ # always write the preprocessed file to stdout. - "$@" || exit $? -+ -+ # Remove the call to Libtool. -+ if test "$libtool" = yes; then -+ while test "X$1" != 'X--mode=compile'; do -+ shift -+ done -+ shift -+ fi -+ - IFS=" " - for arg - do - case "$arg" in -+ -o) -+ shift -+ ;; -+ $object) -+ shift -+ ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") -- set fnord "$@" -- shift -- shift -- ;; -+ set fnord "$@" -+ shift -+ shift -+ ;; - *) -- set fnord "$@" "$arg" -- shift -- shift -- ;; -+ set fnord "$@" "$arg" -+ shift -+ shift -+ ;; - esac - done -- "$@" -E | -- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" -+ "$@" -E 2>/dev/null | -+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" -- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" -- echo " " >> "$depfile" -- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" -+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" -+ echo "$tab" >> "$depfile" -+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -+msvcmsys) -+ # This case exists only to let depend.m4 do its work. It works by -+ # looking at the text of this script. This case will never be run, -+ # since it is checked for above. -+ exit 1 -+ ;; -+ - none) - exec "$@" - ;; - - *) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -@@ -575,10 +781,11 @@ esac - exit 0 - - # Local Variables: - # mode: shell-script - # sh-indentation: 2 - # eval: (add-hook 'write-file-hooks 'time-stamp) - # time-stamp-start: "scriptversion=" - # time-stamp-format: "%:y-%02m-%02d.%02H" --# time-stamp-end: "$" -+# time-stamp-time-zone: "UTC" -+# time-stamp-end: "; # UTC" - # End: -diff --git a/js/src/ctypes/libffi/doc/stamp-vti b/js/src/ctypes/libffi/doc/stamp-vti ---- a/js/src/ctypes/libffi/doc/stamp-vti -+++ b/js/src/ctypes/libffi/doc/stamp-vti -@@ -1,4 +1,4 @@ --@set UPDATED 14 February 2008 --@set UPDATED-MONTH February 2008 --@set EDITION 3.0.8 --@set VERSION 3.0.8 -+@set UPDATED 25 March 2014 -+@set UPDATED-MONTH March 2014 -+@set EDITION 3.1-rc1 -+@set VERSION 3.1-rc1 ---- a/js/src/ctypes/libffi/fficonfig.h.in -+++ b/js/src/ctypes/libffi/fficonfig.h.in -@@ -12,23 +12,29 @@ - #undef C_ALLOCA - - /* Define to the flags needed for the .section .eh_frame directive. */ - #undef EH_FRAME_FLAGS - - /* Define this if you want extra debugging. */ - #undef FFI_DEBUG - -+/* Cannot use PROT_EXEC on this target, so, we revert to alternative means */ -+#undef FFI_EXEC_TRAMPOLINE_TABLE -+ -+/* Define this if you want to enable pax emulated trampolines */ -+#undef FFI_MMAP_EXEC_EMUTRAMP_PAX -+ - /* Cannot use malloc on this target, so, we revert to alternative means */ - #undef FFI_MMAP_EXEC_WRIT - --/* Define this is you do not want support for the raw API. */ -+/* Define this if you do not want support for the raw API. */ - #undef FFI_NO_RAW_API - --/* Define this is you do not want support for aggregate types. */ -+/* Define this if you do not want support for aggregate types. */ - #undef FFI_NO_STRUCTS - - /* Define to 1 if you have `alloca', as a function or macro. */ - #undef HAVE_ALLOCA - - /* Define to 1 if you have and it should be used (not on Ultrix). - */ - #undef HAVE_ALLOCA_H -@@ -62,16 +68,19 @@ - #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE - - /* Define to 1 if you have the header file. */ - #undef HAVE_INTTYPES_H - - /* Define if you have the long double type and it is bigger than a double */ - #undef HAVE_LONG_DOUBLE - -+/* Define if you support more than one size of the long double type */ -+#undef HAVE_LONG_DOUBLE_VARIANT -+ - /* Define to 1 if you have the `memcpy' function. */ - #undef HAVE_MEMCPY - - /* Define to 1 if you have the header file. */ - #undef HAVE_MEMORY_H - - /* Define to 1 if you have the `mmap' function. */ - #undef HAVE_MMAP -@@ -141,27 +150,33 @@ - #undef PACKAGE_VERSION - - /* The size of `double', as computed by sizeof. */ - #undef SIZEOF_DOUBLE - - /* The size of `long double', as computed by sizeof. */ - #undef SIZEOF_LONG_DOUBLE - -+/* The size of `size_t', as computed by sizeof. */ -+#undef SIZEOF_SIZE_T -+ - /* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at runtime. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ - #undef STACK_DIRECTION - - /* Define to 1 if you have the ANSI C header files. */ - #undef STDC_HEADERS - -+/* Define if symbols are underscored. */ -+#undef SYMBOL_UNDERSCORE -+ - /* Define this if you are using Purify and want to suppress spurious messages. - */ - #undef USING_PURIFY - - /* Version number of package */ - #undef VERSION - - /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most -@@ -171,16 +186,19 @@ - # define WORDS_BIGENDIAN 1 - # endif - #else - # ifndef WORDS_BIGENDIAN - # undef WORDS_BIGENDIAN - # endif - #endif - -+/* Define to `unsigned int' if does not define. */ -+#undef size_t -+ - - #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE - #ifdef LIBFFI_ASM - #define FFI_HIDDEN(name) .hidden name - #else - #define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) - #endif - #else -diff --git a/js/src/ctypes/libffi/generate-darwin-source-and-headers.py b/js/src/ctypes/libffi/generate-darwin-source-and-headers.py -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/generate-darwin-source-and-headers.py -@@ -0,0 +1,209 @@ -+#!/usr/bin/env python -+import subprocess -+import os -+import errno -+import collections -+import glob -+import argparse -+ -+class Platform(object): -+ pass -+ -+class simulator_platform(Platform): -+ directory = 'darwin_ios' -+ sdk = 'iphonesimulator' -+ arch = 'i386' -+ triple = 'i386-apple-darwin11' -+ version_min = '-miphoneos-version-min=5.1.1' -+ -+ prefix = "#ifdef __i386__\n\n" -+ suffix = "\n\n#endif" -+ src_dir = 'x86' -+ src_files = ['darwin.S', 'win32.S', 'ffi.c'] -+ -+ -+class simulator64_platform(Platform): -+ directory = 'darwin_ios' -+ sdk = 'iphonesimulator' -+ arch = 'x86_64' -+ triple = 'x86_64-apple-darwin13' -+ version_min = '-miphoneos-version-min=7.0' -+ -+ prefix = "#ifdef __x86_64__\n\n" -+ suffix = "\n\n#endif" -+ src_dir = 'x86' -+ src_files = ['darwin64.S', 'ffi64.c'] -+ -+ -+class device_platform(Platform): -+ directory = 'darwin_ios' -+ sdk = 'iphoneos' -+ arch = 'armv7' -+ triple = 'arm-apple-darwin11' -+ version_min = '-miphoneos-version-min=5.1.1' -+ -+ prefix = "#ifdef __arm__\n\n" -+ suffix = "\n\n#endif" -+ src_dir = 'arm' -+ src_files = ['sysv.S', 'trampoline.S', 'ffi.c'] -+ -+ -+class device64_platform(Platform): -+ directory = 'darwin_ios' -+ sdk = 'iphoneos' -+ arch = 'arm64' -+ triple = 'aarch64-apple-darwin13' -+ version_min = '-miphoneos-version-min=7.0' -+ -+ prefix = "#ifdef __arm64__\n\n" -+ suffix = "\n\n#endif" -+ src_dir = 'aarch64' -+ src_files = ['sysv.S', 'ffi.c'] -+ -+ -+class desktop32_platform(Platform): -+ directory = 'darwin_osx' -+ sdk = 'macosx' -+ arch = 'i386' -+ triple = 'i386-apple-darwin10' -+ version_min = '-mmacosx-version-min=10.6' -+ src_dir = 'x86' -+ src_files = ['darwin.S', 'win32.S', 'ffi.c'] -+ -+ prefix = "#ifdef __i386__\n\n" -+ suffix = "\n\n#endif" -+ -+ -+class desktop64_platform(Platform): -+ directory = 'darwin_osx' -+ sdk = 'macosx' -+ arch = 'x86_64' -+ triple = 'x86_64-apple-darwin10' -+ version_min = '-mmacosx-version-min=10.6' -+ -+ prefix = "#ifdef __x86_64__\n\n" -+ suffix = "\n\n#endif" -+ src_dir = 'x86' -+ src_files = ['darwin64.S', 'ffi64.c'] -+ -+ -+def mkdir_p(path): -+ try: -+ os.makedirs(path) -+ except OSError as exc: # Python >2.5 -+ if exc.errno == errno.EEXIST: -+ pass -+ else: -+ raise -+ -+ -+def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''): -+ mkdir_p(dst_dir) -+ out_filename = filename -+ -+ if file_suffix: -+ split_name = os.path.splitext(filename) -+ out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1]) -+ -+ with open(os.path.join(src_dir, filename)) as in_file: -+ with open(os.path.join(dst_dir, out_filename), 'w') as out_file: -+ if prefix: -+ out_file.write(prefix) -+ -+ out_file.write(in_file.read()) -+ -+ if suffix: -+ out_file.write(suffix) -+ -+ -+def list_files(src_dir, pattern=None, filelist=None): -+ if pattern: filelist = glob.iglob(os.path.join(src_dir, pattern)) -+ for file in filelist: -+ yield os.path.basename(file) -+ -+ -+def copy_files(src_dir, dst_dir, pattern=None, filelist=None, file_suffix=None, prefix=None, suffix=None): -+ for filename in list_files(src_dir, pattern=pattern, filelist=filelist): -+ move_file(src_dir, dst_dir, filename, file_suffix=file_suffix, prefix=prefix, suffix=suffix) -+ -+ -+def copy_src_platform_files(platform): -+ src_dir = os.path.join('src', platform.src_dir) -+ dst_dir = os.path.join(platform.directory, 'src', platform.src_dir) -+ copy_files(src_dir, dst_dir, filelist=platform.src_files, file_suffix=platform.arch, prefix=platform.prefix, suffix=platform.suffix) -+ -+ -+def build_target(platform, platform_headers): -+ def xcrun_cmd(cmd): -+ return 'xcrun -sdk %s %s -arch %s' % (platform.sdk, cmd, platform.arch) -+ -+ tag='%s-%s' % (platform.sdk, platform.arch) -+ build_dir = 'build_%s' % tag -+ mkdir_p(build_dir) -+ env = dict(CC=xcrun_cmd('clang'), -+ LD=xcrun_cmd('ld'), -+ CFLAGS='%s' % (platform.version_min)) -+ working_dir = os.getcwd() -+ try: -+ os.chdir(build_dir) -+ subprocess.check_call(['../configure', '-host', platform.triple], env=env) -+ finally: -+ os.chdir(working_dir) -+ -+ for src_dir in [build_dir, os.path.join(build_dir, 'include')]: -+ copy_files(src_dir, -+ os.path.join(platform.directory, 'include'), -+ pattern='*.h', -+ file_suffix=platform.arch, -+ prefix=platform.prefix, -+ suffix=platform.suffix) -+ -+ for filename in list_files(src_dir, pattern='*.h'): -+ platform_headers[filename].add((platform.prefix, platform.arch, platform.suffix)) -+ -+ -+def make_tramp(): -+ with open('src/arm/trampoline.S', 'w') as tramp_out: -+ p = subprocess.Popen(['bash', 'src/arm/gentramp.sh'], stdout=tramp_out) -+ p.wait() -+ -+ -+def generate_source_and_headers(generate_osx=True, generate_ios=True): -+ copy_files('src', 'darwin_common/src', pattern='*.c') -+ copy_files('include', 'darwin_common/include', pattern='*.h') -+ -+ if generate_ios: -+ make_tramp() -+ copy_src_platform_files(simulator_platform) -+ copy_src_platform_files(simulator64_platform) -+ copy_src_platform_files(device_platform) -+ copy_src_platform_files(device64_platform) -+ if generate_osx: -+ copy_src_platform_files(desktop32_platform) -+ copy_src_platform_files(desktop64_platform) -+ -+ platform_headers = collections.defaultdict(set) -+ -+ if generate_ios: -+ build_target(simulator_platform, platform_headers) -+ build_target(simulator64_platform, platform_headers) -+ build_target(device_platform, platform_headers) -+ build_target(device64_platform, platform_headers) -+ if generate_osx: -+ build_target(desktop32_platform, platform_headers) -+ build_target(desktop64_platform, platform_headers) -+ -+ mkdir_p('darwin_common/include') -+ for header_name, tag_tuples in platform_headers.iteritems(): -+ basename, suffix = os.path.splitext(header_name) -+ with open(os.path.join('darwin_common/include', header_name), 'w') as header: -+ for tag_tuple in tag_tuples: -+ header.write('%s#include <%s_%s%s>\n%s\n' % (tag_tuple[0], basename, tag_tuple[1], suffix, tag_tuple[2])) -+ -+if __name__ == '__main__': -+ parser = argparse.ArgumentParser() -+ parser.add_argument('--only-ios', action='store_true', default=False) -+ parser.add_argument('--only-osx', action='store_true', default=False) -+ args = parser.parse_args() -+ -+ generate_source_and_headers(generate_osx=not args.only_ios, generate_ios=not args.only_osx) -diff --git a/js/src/ctypes/libffi/include/Makefile.in b/js/src/ctypes/libffi/include/Makefile.in ---- a/js/src/ctypes/libffi/include/Makefile.in -+++ b/js/src/ctypes/libffi/include/Makefile.in -@@ -1,26 +1,70 @@ --# Makefile.in generated by automake 1.11.1 from Makefile.am. -+# Makefile.in generated by automake 1.13.4 from Makefile.am. - # @configure_input@ - --# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, --# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, --# Inc. -+# Copyright (C) 1994-2013 Free Software Foundation, Inc. -+ - # This Makefile.in is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - - # This program is distributed in the hope that it will be useful, - # but WITHOUT ANY WARRANTY, to the extent permitted by law; without - # even the implied warranty of MERCHANTABILITY or FITNESS FOR A - # PARTICULAR PURPOSE. - - @SET_MAKE@ - - VPATH = @srcdir@ -+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -+am__make_running_with_option = \ -+ case $${target_option-} in \ -+ ?) ;; \ -+ *) echo "am__make_running_with_option: internal error: invalid" \ -+ "target option '$${target_option-}' specified" >&2; \ -+ exit 1;; \ -+ esac; \ -+ has_opt=no; \ -+ sane_makeflags=$$MAKEFLAGS; \ -+ if $(am__is_gnu_make); then \ -+ sane_makeflags=$$MFLAGS; \ -+ else \ -+ case $$MAKEFLAGS in \ -+ *\\[\ \ ]*) \ -+ bs=\\; \ -+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ -+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ -+ esac; \ -+ fi; \ -+ skip_next=no; \ -+ strip_trailopt () \ -+ { \ -+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ -+ }; \ -+ for flg in $$sane_makeflags; do \ -+ test $$skip_next = yes && { skip_next=no; continue; }; \ -+ case $$flg in \ -+ *=*|--*) continue;; \ -+ -*I) strip_trailopt 'I'; skip_next=yes;; \ -+ -*I?*) strip_trailopt 'I';; \ -+ -*O) strip_trailopt 'O'; skip_next=yes;; \ -+ -*O?*) strip_trailopt 'O';; \ -+ -*l) strip_trailopt 'l'; skip_next=yes;; \ -+ -*l?*) strip_trailopt 'l';; \ -+ -[dEDm]) skip_next=yes;; \ -+ -[JT]) skip_next=yes;; \ -+ esac; \ -+ case $$flg in \ -+ *$$target_option*) has_opt=yes; break;; \ -+ esac; \ -+ done; \ -+ test $$has_opt = yes -+am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -+am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) - pkgdatadir = $(datadir)/@PACKAGE@ - pkgincludedir = $(includedir)/@PACKAGE@ - pkglibdir = $(libdir)/@PACKAGE@ - pkglibexecdir = $(libexecdir)/@PACKAGE@ - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd - install_sh_DATA = $(install_sh) -c -m 644 - install_sh_PROGRAM = $(install_sh) -c - install_sh_SCRIPT = $(install_sh) -c -@@ -31,29 +75,58 @@ PRE_INSTALL = : - POST_INSTALL = : - NORMAL_UNINSTALL = : - PRE_UNINSTALL = : - POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ - target_triplet = @target@ - subdir = include --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(srcdir)/ffi.h.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 --am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ -+am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ -+ $(top_srcdir)/m4/ax_append_flag.m4 \ -+ $(top_srcdir)/m4/ax_cc_maxopt.m4 \ -+ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ -+ $(top_srcdir)/m4/ax_check_compile_flag.m4 \ -+ $(top_srcdir)/m4/ax_compiler_vendor.m4 \ -+ $(top_srcdir)/m4/ax_configure_args.m4 \ -+ $(top_srcdir)/m4/ax_enable_builddir.m4 \ -+ $(top_srcdir)/m4/ax_gcc_archflag.m4 \ -+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ -+ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ -+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ -+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac - am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) - mkinstalldirs = $(install_sh) -d - CONFIG_HEADER = $(top_builddir)/fficonfig.h - CONFIG_CLEAN_FILES = ffi.h ffitarget.h - CONFIG_CLEAN_VPATH_FILES = -+AM_V_P = $(am__v_P_@AM_V@) -+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -+am__v_P_0 = false -+am__v_P_1 = : -+AM_V_GEN = $(am__v_GEN_@AM_V@) -+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -+am__v_GEN_0 = @echo " GEN " $@; -+am__v_GEN_1 = -+AM_V_at = $(am__v_at_@AM_V@) -+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -+am__v_at_0 = @ -+am__v_at_1 = - SOURCES = - DIST_SOURCES = -+am__can_run_installinfo = \ -+ case $$AM_UPDATE_INFO_DIR in \ -+ n|no|NO) false;; \ -+ *) (install-info --version) >/dev/null 2>&1;; \ -+ esac - am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; - am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; - am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; - am__install_max = 40 - am__nobase_strip_setup = \ -@@ -65,24 +138,48 @@ am__nobase_list = $(am__nobase_strip_set - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' - am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -+am__uninstall_files_from_dir = { \ -+ test -z "$$files" \ -+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ -+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ -+ $(am__cd) "$$dir" && rm -f $$files; }; \ -+ } - am__installdirs = "$(DESTDIR)$(includesdir)" - HEADERS = $(nodist_includes_HEADERS) -+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -+# Read a list of newline-separated strings from the standard input, -+# and print each of them once, without duplicates. Input order is -+# *not* preserved. -+am__uniquify_input = $(AWK) '\ -+ BEGIN { nonempty = 0; } \ -+ { items[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in items) print i; }; } \ -+' -+# Make sure the list of sources is unique. This is necessary because, -+# e.g., the same source file might be shared among _SOURCES variables -+# for different programs/libraries. -+am__define_uniq_tagged_files = \ -+ list='$(am__tagged_files)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | $(am__uniquify_input)` - ETAGS = etags - CTAGS = ctags - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - ALLOCA = @ALLOCA@ - AMTAR = @AMTAR@ -+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ - AM_LTLDFLAGS = @AM_LTLDFLAGS@ - AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@ - AR = @AR@ - AUTOCONF = @AUTOCONF@ - AUTOHEADER = @AUTOHEADER@ - AUTOMAKE = @AUTOMAKE@ - AWK = @AWK@ - CC = @CC@ -@@ -91,75 +188,82 @@ CCASDEPMODE = @CCASDEPMODE@ - CCASFLAGS = @CCASFLAGS@ - CCDEPMODE = @CCDEPMODE@ - CFLAGS = @CFLAGS@ - CPP = @CPP@ - CPPFLAGS = @CPPFLAGS@ - CYGPATH_W = @CYGPATH_W@ - DEFS = @DEFS@ - DEPDIR = @DEPDIR@ -+DLLTOOL = @DLLTOOL@ - DSYMUTIL = @DSYMUTIL@ - DUMPBIN = @DUMPBIN@ - ECHO_C = @ECHO_C@ - ECHO_N = @ECHO_N@ - ECHO_T = @ECHO_T@ - EGREP = @EGREP@ - EXEEXT = @EXEEXT@ -+FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ - FGREP = @FGREP@ - GREP = @GREP@ - HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ -+HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ - INSTALL = @INSTALL@ - INSTALL_DATA = @INSTALL_DATA@ - INSTALL_PROGRAM = @INSTALL_PROGRAM@ - INSTALL_SCRIPT = @INSTALL_SCRIPT@ - INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ - LD = @LD@ - LDFLAGS = @LDFLAGS@ - LIBOBJS = @LIBOBJS@ - LIBS = @LIBS@ - LIBTOOL = @LIBTOOL@ - LIPO = @LIPO@ - LN_S = @LN_S@ - LTLIBOBJS = @LTLIBOBJS@ - MAINT = @MAINT@ - MAKEINFO = @MAKEINFO@ -+MANIFEST_TOOL = @MANIFEST_TOOL@ - MKDIR_P = @MKDIR_P@ - NM = @NM@ - NMEDIT = @NMEDIT@ - OBJDUMP = @OBJDUMP@ - OBJEXT = @OBJEXT@ - OTOOL = @OTOOL@ - OTOOL64 = @OTOOL64@ - PACKAGE = @PACKAGE@ - PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ - PACKAGE_NAME = @PACKAGE_NAME@ - PACKAGE_STRING = @PACKAGE_STRING@ - PACKAGE_TARNAME = @PACKAGE_TARNAME@ - PACKAGE_URL = @PACKAGE_URL@ - PACKAGE_VERSION = @PACKAGE_VERSION@ - PATH_SEPARATOR = @PATH_SEPARATOR@ -+PRTDIAG = @PRTDIAG@ - RANLIB = @RANLIB@ - SED = @SED@ - SET_MAKE = @SET_MAKE@ - SHELL = @SHELL@ - STRIP = @STRIP@ - TARGET = @TARGET@ - TARGETDIR = @TARGETDIR@ - VERSION = @VERSION@ - abs_builddir = @abs_builddir@ - abs_srcdir = @abs_srcdir@ - abs_top_builddir = @abs_top_builddir@ - abs_top_srcdir = @abs_top_srcdir@ -+ac_ct_AR = @ac_ct_AR@ - ac_ct_CC = @ac_ct_CC@ - ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ - am__include = @am__include@ - am__leading_dot = @am__leading_dot@ - am__quote = @am__quote@ - am__tar = @am__tar@ - am__untar = @am__untar@ -+ax_enable_builddir_sed = @ax_enable_builddir_sed@ - bindir = @bindir@ - build = @build@ - build_alias = @build_alias@ - build_cpu = @build_cpu@ - build_os = @build_os@ - build_vendor = @build_vendor@ - builddir = @builddir@ - datadir = @datadir@ -@@ -175,27 +279,27 @@ host_vendor = @host_vendor@ - htmldir = @htmldir@ - includedir = @includedir@ - infodir = @infodir@ - install_sh = @install_sh@ - libdir = @libdir@ - libexecdir = @libexecdir@ - localedir = @localedir@ - localstatedir = @localstatedir@ --lt_ECHO = @lt_ECHO@ - mandir = @mandir@ - mkdir_p = @mkdir_p@ - oldincludedir = @oldincludedir@ - pdfdir = @pdfdir@ - prefix = @prefix@ - program_transform_name = @program_transform_name@ - psdir = @psdir@ - sbindir = @sbindir@ - sharedstatedir = @sharedstatedir@ - srcdir = @srcdir@ -+sys_symbol_underscore = @sys_symbol_underscore@ - sysconfdir = @sysconfdir@ - target = @target@ - target_alias = @target_alias@ - target_cpu = @target_cpu@ - target_os = @target_os@ - target_vendor = @target_vendor@ - toolexecdir = @toolexecdir@ - toolexeclibdir = @toolexeclibdir@ -@@ -245,83 +349,84 @@ ffi.h: $(top_builddir)/config.status $(s - - mostlyclean-libtool: - -rm -f *.lo - - clean-libtool: - -rm -rf .libs _libs - install-nodist_includesHEADERS: $(nodist_includes_HEADERS) - @$(NORMAL_INSTALL) -- test -z "$(includesdir)" || $(MKDIR_P) "$(DESTDIR)$(includesdir)" - @list='$(nodist_includes_HEADERS)'; test -n "$(includesdir)" || list=; \ -+ if test -n "$$list"; then \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(includesdir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(includesdir)" || exit 1; \ -+ fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includesdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includesdir)" || exit $$?; \ - done - - uninstall-nodist_includesHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nodist_includes_HEADERS)'; test -n "$(includesdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ -- test -n "$$files" || exit 0; \ -- echo " ( cd '$(DESTDIR)$(includesdir)' && rm -f" $$files ")"; \ -- cd "$(DESTDIR)$(includesdir)" && rm -f $$files -+ dir='$(DESTDIR)$(includesdir)'; $(am__uninstall_files_from_dir) - --ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -- unique=`for i in $$list; do \ -- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -- done | \ -- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -- END { if (nonempty) { for (i in files) print i; }; }'`; \ -- mkid -fID $$unique --tags: TAGS -+ID: $(am__tagged_files) -+ $(am__define_uniq_tagged_files); mkid -fID $$unique -+tags: tags-am -+TAGS: tags - --TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -- $(TAGS_FILES) $(LISP) -+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ -- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -- unique=`for i in $$list; do \ -- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -- done | \ -- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -- END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi --ctags: CTAGS --CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -- $(TAGS_FILES) $(LISP) -- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -- unique=`for i in $$list; do \ -- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -- done | \ -- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -- END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ctags: ctags-am -+ -+CTAGS: ctags -+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) -+ $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - - GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -+cscopelist: cscopelist-am -+ -+cscopelist-am: $(am__tagged_files) -+ list='$(am__tagged_files)'; \ -+ case "$(srcdir)" in \ -+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ -+ *) sdir=$(subdir)/$(srcdir) ;; \ -+ esac; \ -+ for i in $$list; do \ -+ if test -f "$$i"; then \ -+ echo "$(subdir)/$$i"; \ -+ else \ -+ echo "$$sdir/$$i"; \ -+ fi; \ -+ done >> $(top_builddir)/cscope.files - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - - distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ -@@ -363,20 +468,25 @@ install-exec: install-exec-am - install-data: install-data-am - uninstall: uninstall-am - - install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - - installcheck: installcheck-am - install-strip: -- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -- `test -z '$(STRIP)' || \ -- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+ if test -z '$(STRIP)'; then \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ install; \ -+ else \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ -+ fi - mostlyclean-generic: - - clean-generic: - - distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) -@@ -447,25 +557,26 @@ pdf-am: - ps: ps-am - - ps-am: - - uninstall-am: uninstall-nodist_includesHEADERS - - .MAKE: install-am install-strip - --.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ -- clean-libtool ctags distclean distclean-generic \ -- distclean-libtool distclean-tags distdir dvi dvi-am html \ -- html-am info info-am install install-am install-data \ -- install-data-am install-dvi install-dvi-am install-exec \ -- install-exec-am install-html install-html-am install-info \ -- install-info-am install-man install-nodist_includesHEADERS \ -- install-pdf install-pdf-am install-ps install-ps-am \ -- install-strip installcheck installcheck-am installdirs \ -- maintainer-clean maintainer-clean-generic mostlyclean \ -- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ -- tags uninstall uninstall-am uninstall-nodist_includesHEADERS -+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ -+ clean-libtool cscopelist-am ctags ctags-am distclean \ -+ distclean-generic distclean-libtool distclean-tags distdir dvi \ -+ dvi-am html html-am info info-am install install-am \ -+ install-data install-data-am install-dvi install-dvi-am \ -+ install-exec install-exec-am install-html install-html-am \ -+ install-info install-info-am install-man \ -+ install-nodist_includesHEADERS install-pdf install-pdf-am \ -+ install-ps install-ps-am install-strip installcheck \ -+ installcheck-am installdirs maintainer-clean \ -+ maintainer-clean-generic mostlyclean mostlyclean-generic \ -+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ -+ uninstall-am uninstall-nodist_includesHEADERS - - - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. - .NOEXPORT: -diff --git a/js/src/ctypes/libffi/include/ffi.h.in b/js/src/ctypes/libffi/include/ffi.h.in ---- a/js/src/ctypes/libffi/include/ffi.h.in -+++ b/js/src/ctypes/libffi/include/ffi.h.in -@@ -1,21 +1,22 @@ - /* -----------------------------------------------------------------*-C-*- -- libffi @VERSION@ - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. -+ libffi @VERSION@ - Copyright (c) 2011 Anthony Green -+ - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. - -- Permission is hereby granted, free of charge, to any person obtaining -- a copy of this software and associated documentation files (the -- ``Software''), to deal in the Software without restriction, including -- without limitation the rights to use, copy, modify, merge, publish, -- distribute, sublicense, and/or sell copies of the Software, and to -- permit persons to whom the Software is furnished to do so, subject to -- the following conditions: -+ Permission is hereby granted, free of charge, to any person -+ obtaining a copy of this software and associated documentation -+ files (the ``Software''), to deal in the Software without -+ restriction, including without limitation the rights to use, copy, -+ modify, merge, publish, distribute, sublicense, and/or sell copies -+ of the Software, and to permit persons to whom the Software is -+ furnished to do so, subject to the following conditions: - -- The above copyright notice and this permission notice shall be included -- in all copies or substantial portions of the Software. -+ The above copyright notice and this permission notice shall be -+ included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -@@ -80,21 +81,25 @@ extern "C" { - - #define FFI_64_BIT_MAX 9223372036854775807 - - #ifdef LONG_LONG_MAX - # define FFI_LONG_LONG_MAX LONG_LONG_MAX - #else - # ifdef LLONG_MAX - # define FFI_LONG_LONG_MAX LLONG_MAX -+# ifdef _AIX52 /* or newer has C99 LLONG_MAX */ -+# undef FFI_64_BIT_MAX -+# define FFI_64_BIT_MAX 9223372036854775807LL -+# endif /* _AIX52 or newer */ - # else - # ifdef __GNUC__ - # define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ - # endif --# ifdef _AIX -+# ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ - # ifndef __PPC64__ - # if defined (__IBMC__) || defined (__IBMCPP__) - # define FFI_LONG_LONG_MAX LONGLONG_MAX - # endif - # endif /* __PPC64__ */ - # undef FFI_64_BIT_MAX - # define FFI_64_BIT_MAX 9223372036854775807LL - # endif -@@ -156,32 +161,46 @@ typedef struct _ffi_type - # define ffi_type_slong ffi_type_sint32 - #elif LONG_MAX == FFI_64_BIT_MAX - # define ffi_type_ulong ffi_type_uint64 - # define ffi_type_slong ffi_type_sint64 - #else - #error "long size not supported" - #endif - -+/* Need minimal decorations for DLLs to works on Windows. */ -+/* GCC has autoimport and autoexport. Rely on Libtool to */ -+/* help MSVC export from a DLL, but always declare data */ -+/* to be imported for MSVC clients. This costs an extra */ -+/* indirection for MSVC clients using the static version */ -+/* of the library, but don't worry about that. Besides, */ -+/* as a workaround, they can define FFI_BUILDING if they */ -+/* *know* they are going to link with the static library. */ -+#if defined _MSC_VER && !defined FFI_BUILDING -+#define FFI_EXTERN extern __declspec(dllimport) -+#else -+#define FFI_EXTERN extern -+#endif -+ - /* These are defined in types.c */ --extern ffi_type ffi_type_void; --extern ffi_type ffi_type_uint8; --extern ffi_type ffi_type_sint8; --extern ffi_type ffi_type_uint16; --extern ffi_type ffi_type_sint16; --extern ffi_type ffi_type_uint32; --extern ffi_type ffi_type_sint32; --extern ffi_type ffi_type_uint64; --extern ffi_type ffi_type_sint64; --extern ffi_type ffi_type_float; --extern ffi_type ffi_type_double; --extern ffi_type ffi_type_pointer; -+FFI_EXTERN ffi_type ffi_type_void; -+FFI_EXTERN ffi_type ffi_type_uint8; -+FFI_EXTERN ffi_type ffi_type_sint8; -+FFI_EXTERN ffi_type ffi_type_uint16; -+FFI_EXTERN ffi_type ffi_type_sint16; -+FFI_EXTERN ffi_type ffi_type_uint32; -+FFI_EXTERN ffi_type ffi_type_sint32; -+FFI_EXTERN ffi_type ffi_type_uint64; -+FFI_EXTERN ffi_type ffi_type_sint64; -+FFI_EXTERN ffi_type ffi_type_float; -+FFI_EXTERN ffi_type ffi_type_double; -+FFI_EXTERN ffi_type ffi_type_pointer; - - #if @HAVE_LONG_DOUBLE@ --extern ffi_type ffi_type_longdouble; -+FFI_EXTERN ffi_type ffi_type_longdouble; - #else - #define ffi_type_longdouble ffi_type_double - #endif - #endif /* LIBFFI_HIDE_BASIC_TYPES */ - - typedef enum { - FFI_OK = 0, - FFI_BAD_TYPEDEF, -@@ -197,16 +216,30 @@ typedef struct { - ffi_type *rtype; - unsigned bytes; - unsigned flags; - #ifdef FFI_EXTRA_CIF_FIELDS - FFI_EXTRA_CIF_FIELDS; - #endif - } ffi_cif; - -+#if HAVE_LONG_DOUBLE_VARIANT -+/* Used to adjust size/alignment of ffi types. */ -+void ffi_prep_types (ffi_abi abi); -+# endif -+ -+/* Used internally, but overridden by some architectures */ -+ffi_status ffi_prep_cif_core(ffi_cif *cif, -+ ffi_abi abi, -+ unsigned int isvariadic, -+ unsigned int nfixedargs, -+ unsigned int ntotalargs, -+ ffi_type *rtype, -+ ffi_type **atypes); -+ - /* ---- Definitions for the raw API -------------------------------------- */ - - #ifndef FFI_SIZEOF_ARG - # if LONG_MAX == 2147483647 - # define FFI_SIZEOF_ARG 4 - # elif LONG_MAX == FFI_64_BIT_MAX - # define FFI_SIZEOF_ARG 8 - # endif -@@ -264,24 +297,32 @@ size_t ffi_java_raw_size (ffi_cif *cif); - /* ---- Definitions for closures ----------------------------------------- */ - - #if FFI_CLOSURES - - #ifdef _MSC_VER - __declspec(align(8)) - #endif - typedef struct { -+#if @FFI_EXEC_TRAMPOLINE_TABLE@ -+ void *trampoline_table; -+ void *trampoline_table_entry; -+#else - char tramp[FFI_TRAMPOLINE_SIZE]; -+#endif - ffi_cif *cif; - void (*fun)(ffi_cif*,void*,void**,void*); - void *user_data; - #ifdef __GNUC__ - } ffi_closure __attribute__((aligned (8))); - #else - } ffi_closure; -+# ifdef __sgi -+# pragma pack 0 -+# endif - #endif - - void *ffi_closure_alloc (size_t size, void **code); - void ffi_closure_free (void *); - - ffi_status - ffi_prep_closure (ffi_closure*, - ffi_cif *, -@@ -290,19 +331,26 @@ ffi_prep_closure (ffi_closure*, - - ffi_status - ffi_prep_closure_loc (ffi_closure*, - ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data, - void*codeloc); - -+#ifdef __sgi -+# pragma pack 8 -+#endif - typedef struct { -+#if @FFI_EXEC_TRAMPOLINE_TABLE@ -+ void *trampoline_table; -+ void *trampoline_table_entry; -+#else - char tramp[FFI_TRAMPOLINE_SIZE]; -- -+#endif - ffi_cif *cif; - - #if !FFI_NATIVE_RAW_API - - /* if this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the transaltion, void** -> ffi_raw*. */ - -@@ -312,17 +360,22 @@ typedef struct { - #endif - - void (*fun)(ffi_cif*,void*,ffi_raw*,void*); - void *user_data; - - } ffi_raw_closure; - - typedef struct { -+#if @FFI_EXEC_TRAMPOLINE_TABLE@ -+ void *trampoline_table; -+ void *trampoline_table_entry; -+#else - char tramp[FFI_TRAMPOLINE_SIZE]; -+#endif - - ffi_cif *cif; - - #if !FFI_NATIVE_RAW_API - - /* if this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the transaltion, void** -> ffi_raw*. */ -@@ -368,16 +421,23 @@ ffi_prep_java_raw_closure_loc (ffi_java_ - /* ---- Public interface definition -------------------------------------- */ - - ffi_status ffi_prep_cif(ffi_cif *cif, - ffi_abi abi, - unsigned int nargs, - ffi_type *rtype, - ffi_type **atypes); - -+ffi_status ffi_prep_cif_var(ffi_cif *cif, -+ ffi_abi abi, -+ unsigned int nfixedargs, -+ unsigned int ntotalargs, -+ ffi_type *rtype, -+ ffi_type **atypes); -+ - void ffi_call(ffi_cif *cif, - void (*fn)(void), - void *rvalue, - void **avalue); - - /* Useful for eliminating compiler warnings */ - #define FFI_FN(f) ((void (*)(void))f) - -diff --git a/js/src/ctypes/libffi/include/ffi_common.h b/js/src/ctypes/libffi/include/ffi_common.h ---- a/js/src/ctypes/libffi/include/ffi_common.h -+++ b/js/src/ctypes/libffi/include/ffi_common.h -@@ -1,50 +1,55 @@ - /* ----------------------------------------------------------------------- -- ffi_common.h - Copyright (c) 1996 Red Hat, Inc. -- Copyright (C) 2007 Free Software Foundation, Inc -- -+ ffi_common.h - Copyright (C) 2011, 2012, 2013 Anthony Green -+ Copyright (C) 2007 Free Software Foundation, Inc -+ Copyright (c) 1996 Red Hat, Inc. -+ - Common internal definitions and macros. Only necessary for building - libffi. - ----------------------------------------------------------------------- */ - - #ifndef FFI_COMMON_H - #define FFI_COMMON_H - - #ifdef __cplusplus - extern "C" { - #endif - - #include - - /* Do not move this. Some versions of AIX are very picky about where - this is positioned. */ - #ifdef __GNUC__ --/* mingw64 defines this already in malloc.h. */ --#ifndef alloca --# define alloca __builtin_alloca --#endif -+# if HAVE_ALLOCA_H -+# include -+# else -+ /* mingw64 defines this already in malloc.h. */ -+# ifndef alloca -+# define alloca __builtin_alloca -+# endif -+# endif - # define MAYBE_UNUSED __attribute__((__unused__)) - #else - # define MAYBE_UNUSED - # if HAVE_ALLOCA_H - # include - # else - # ifdef _AIX -- #pragma alloca -+# pragma alloca - # else - # ifndef alloca /* predefined by HP cc +Olibcalls */ - # ifdef _MSC_VER - # define alloca _alloca - # else - char *alloca (); --# endif - # endif - # endif - # endif -+# endif - #endif - - /* Check for the existence of memcpy. */ - #if STDC_HEADERS - # include - #else - # ifndef HAVE_MEMCPY - # define memcpy(d, s, n) bcopy ((s), (d), (n)) -@@ -69,27 +74,29 @@ void ffi_type_test(ffi_type *a, char *fi - #define FFI_ASSERT_VALID_TYPE(x) - #endif - - #define ALIGN(v, a) (((((size_t) (v))-1) | ((a)-1))+1) - #define ALIGN_DOWN(v, a) (((size_t) (v)) & -a) - - /* Perform machine dependent cif processing */ - ffi_status ffi_prep_cif_machdep(ffi_cif *cif); -+ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, -+ unsigned int nfixedargs, unsigned int ntotalargs); - - /* Extended cif, used in callback from assembly routine */ - typedef struct - { - ffi_cif *cif; - void *rvalue; - void **avalue; - } extended_cif; - - /* Terse sized type definitions. */ --#if defined(_MSC_VER) || defined(__sgi) -+#if defined(_MSC_VER) || defined(__sgi) || defined(__SUNPRO_C) - typedef unsigned char UINT8; - typedef signed char SINT8; - typedef unsigned short UINT16; - typedef signed short SINT16; - typedef unsigned int UINT32; - typedef signed int SINT32; - # ifdef _MSC_VER - typedef unsigned __int64 UINT64; -@@ -107,16 +114,19 @@ typedef signed int SINT16 __attribute_ - typedef unsigned int UINT32 __attribute__((__mode__(__SI__))); - typedef signed int SINT32 __attribute__((__mode__(__SI__))); - typedef unsigned int UINT64 __attribute__((__mode__(__DI__))); - typedef signed int SINT64 __attribute__((__mode__(__DI__))); - #endif - - typedef float FLOAT32; - -+#ifndef __GNUC__ -+#define __builtin_expect(x, expected_value) (x) -+#endif -+#define LIKELY(x) __builtin_expect(!!(x),1) -+#define UNLIKELY(x) __builtin_expect((x)!=0,0) - - #ifdef __cplusplus - } - #endif - - #endif -- -- -diff --git a/js/src/ctypes/libffi/install-sh b/js/src/ctypes/libffi/install-sh ---- a/js/src/ctypes/libffi/install-sh -+++ b/js/src/ctypes/libffi/install-sh -@@ -1,12 +1,12 @@ - #!/bin/sh - # install - install a program, script, or datafile - --scriptversion=2004-12-17.09 -+scriptversion=2011-11-20.07; # UTC - - # This originates from X11R5 (mit/util/scripts/install.sh), which was - # later released in X11R6 (xc/config/util/install.sh) with the - # following copyright and license. - # - # Copyright (C) 1994 X Consortium - # - # Permission is hereby granted, free of charge, to any person obtaining a copy -@@ -30,294 +30,498 @@ scriptversion=2004-12-17.09 - # be used in advertising or otherwise to promote the sale, use or other deal- - # ings in this Software without prior written authorization from the X Consor- - # tium. - # - # - # FSF changes to this file are in the public domain. - # - # Calling this script install-sh is preferred over install.sh, to prevent --# `make' implicit rules from creating a file called install from it -+# 'make' implicit rules from creating a file called install from it - # when there is no Makefile. - # - # This script is compatible with the BSD install script, but was written --# from scratch. It can only install one file at a time, a restriction --# shared with many OS's install programs. -+# from scratch. -+ -+nl=' -+' -+IFS=" "" $nl" - - # set DOITPROG to echo to test this script - - # Don't use :- since 4.3BSD and earlier shells don't like it. --doit="${DOITPROG-}" -+doit=${DOITPROG-} -+if test -z "$doit"; then -+ doit_exec=exec -+else -+ doit_exec=$doit -+fi - --# put in absolute paths if you don't have them in your path; or use env. vars. -+# Put in absolute file names if you don't have them in your path; -+# or use environment vars. - --mvprog="${MVPROG-mv}" --cpprog="${CPPROG-cp}" --chmodprog="${CHMODPROG-chmod}" --chownprog="${CHOWNPROG-chown}" --chgrpprog="${CHGRPPROG-chgrp}" --stripprog="${STRIPPROG-strip}" --rmprog="${RMPROG-rm}" --mkdirprog="${MKDIRPROG-mkdir}" -+chgrpprog=${CHGRPPROG-chgrp} -+chmodprog=${CHMODPROG-chmod} -+chownprog=${CHOWNPROG-chown} -+cmpprog=${CMPPROG-cmp} -+cpprog=${CPPROG-cp} -+mkdirprog=${MKDIRPROG-mkdir} -+mvprog=${MVPROG-mv} -+rmprog=${RMPROG-rm} -+stripprog=${STRIPPROG-strip} - --chmodcmd="$chmodprog 0755" -+posix_glob='?' -+initialize_posix_glob=' -+ test "$posix_glob" != "?" || { -+ if (set -f) 2>/dev/null; then -+ posix_glob= -+ else -+ posix_glob=: -+ fi -+ } -+' -+ -+posix_mkdir= -+ -+# Desired mode of installed file. -+mode=0755 -+ -+chgrpcmd= -+chmodcmd=$chmodprog - chowncmd= --chgrpcmd= -+mvcmd=$mvprog -+rmcmd="$rmprog -f" - stripcmd= --rmcmd="$rmprog -f" --mvcmd="$mvprog" -+ - src= - dst= - dir_arg= --dstarg= -+dst_arg= -+ -+copy_on_change=false - no_target_directory= - --usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE -+usage="\ -+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - - In the 1st form, copy SRCFILE to DSTFILE. - In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. - In the 4th, create DIRECTORIES. - - Options: ---c (ignored) ---d create directories instead of installing files. ---g GROUP $chgrpprog installed files to GROUP. ---m MODE $chmodprog installed files to MODE. ---o USER $chownprog installed files to USER. ---s $stripprog installed files. ---t DIRECTORY install into DIRECTORY. ---T report an error if DSTFILE is a directory. ----help display this help and exit. ----version display version info and exit. -+ --help display this help and exit. -+ --version display version info and exit. -+ -+ -c (ignored) -+ -C install only if different (preserve the last data modification time) -+ -d create directories instead of installing files. -+ -g GROUP $chgrpprog installed files to GROUP. -+ -m MODE $chmodprog installed files to MODE. -+ -o USER $chownprog installed files to USER. -+ -s $stripprog installed files. -+ -t DIRECTORY install into DIRECTORY. -+ -T report an error if DSTFILE is a directory. - - Environment variables override the default commands: -- CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG -+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG -+ RMPROG STRIPPROG - " - --while test -n "$1"; do -+while test $# -ne 0; do - case $1 in -- -c) shift -- continue;; -+ -c) ;; - -- -d) dir_arg=true -- shift -- continue;; -+ -C) copy_on_change=true;; -+ -+ -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" -- shift -- shift -- continue;; -+ shift;; - -- --help) echo "$usage"; exit 0;; -+ --help) echo "$usage"; exit $?;; - -- -m) chmodcmd="$chmodprog $2" -- shift -- shift -- continue;; -+ -m) mode=$2 -+ case $mode in -+ *' '* | *' '* | *' -+'* | *'*'* | *'?'* | *'['*) -+ echo "$0: invalid mode: $mode" >&2 -+ exit 1;; -+ esac -+ shift;; - - -o) chowncmd="$chownprog $2" -- shift -- shift -- continue;; -+ shift;; - -- -s) stripcmd=$stripprog -- shift -- continue;; -+ -s) stripcmd=$stripprog;; - -- -t) dstarg=$2 -- shift -- shift -- continue;; -+ -t) dst_arg=$2 -+ # Protect names problematic for 'test' and other utilities. -+ case $dst_arg in -+ -* | [=\(\)!]) dst_arg=./$dst_arg;; -+ esac -+ shift;; - -- -T) no_target_directory=true -- shift -- continue;; -+ -T) no_target_directory=true;; - -- --version) echo "$0 $scriptversion"; exit 0;; -+ --version) echo "$0 $scriptversion"; exit $?;; - -- *) # When -d is used, all remaining arguments are directories to create. -- # When -t is used, the destination is already specified. -- test -n "$dir_arg$dstarg" && break -- # Otherwise, the last argument is the destination. Remove it from $@. -- for arg -- do -- if test -n "$dstarg"; then -- # $@ is not empty: it contains at least $arg. -- set fnord "$@" "$dstarg" -- shift # fnord -- fi -- shift # arg -- dstarg=$arg -- done -+ --) shift - break;; -+ -+ -*) echo "$0: invalid option: $1" >&2 -+ exit 1;; -+ -+ *) break;; - esac -+ shift - done - --if test -z "$1"; then -+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then -+ # When -d is used, all remaining arguments are directories to create. -+ # When -t is used, the destination is already specified. -+ # Otherwise, the last argument is the destination. Remove it from $@. -+ for arg -+ do -+ if test -n "$dst_arg"; then -+ # $@ is not empty: it contains at least $arg. -+ set fnord "$@" "$dst_arg" -+ shift # fnord -+ fi -+ shift # arg -+ dst_arg=$arg -+ # Protect names problematic for 'test' and other utilities. -+ case $dst_arg in -+ -* | [=\(\)!]) dst_arg=./$dst_arg;; -+ esac -+ done -+fi -+ -+if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi -- # It's OK to call `install-sh -d' without argument. -+ # It's OK to call 'install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 - fi - -+if test -z "$dir_arg"; then -+ do_exit='(exit $ret); exit $ret' -+ trap "ret=129; $do_exit" 1 -+ trap "ret=130; $do_exit" 2 -+ trap "ret=141; $do_exit" 13 -+ trap "ret=143; $do_exit" 15 -+ -+ # Set umask so as not to create temps with too-generous modes. -+ # However, 'strip' requires both read and write access to temps. -+ case $mode in -+ # Optimize common cases. -+ *644) cp_umask=133;; -+ *755) cp_umask=22;; -+ -+ *[0-7]) -+ if test -z "$stripcmd"; then -+ u_plus_rw= -+ else -+ u_plus_rw='% 200' -+ fi -+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; -+ *) -+ if test -z "$stripcmd"; then -+ u_plus_rw= -+ else -+ u_plus_rw=,u+rw -+ fi -+ cp_umask=$mode$u_plus_rw;; -+ esac -+fi -+ - for src - do -- # Protect names starting with `-'. -+ # Protect names problematic for 'test' and other utilities. - case $src in -- -*) src=./$src ;; -+ -* | [=\(\)!]) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src -- src= -+ dstdir=$dst -+ test -d "$dstdir" -+ dstdir_status=$? -+ else - -- if test -d "$dst"; then -- mkdircmd=: -- chmodcmd= -- else -- mkdircmd=$mkdirprog -- fi -- else - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - -- if test -z "$dstarg"; then -+ if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi -- -- dst=$dstarg -- # Protect names starting with `-'. -- case $dst in -- -*) dst=./$dst ;; -- esac -+ dst=$dst_arg - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then -- echo "$0: $dstarg: Is a directory" >&2 -+ echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi -- dst=$dst/`basename "$src"` -+ dstdir=$dst -+ dst=$dstdir/`basename "$src"` -+ dstdir_status=0 -+ else -+ # Prefer dirname, but fall back on a substitute if dirname fails. -+ dstdir=` -+ (dirname "$dst") 2>/dev/null || -+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$dst" : 'X\(//\)[^/]' \| \ -+ X"$dst" : 'X\(//\)$' \| \ -+ X"$dst" : 'X\(/\)' \| . 2>/dev/null || -+ echo X"$dst" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q' -+ ` -+ -+ test -d "$dstdir" -+ dstdir_status=$? - fi - fi - -- # This sed command emulates the dirname command. -- dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` -+ obsolete_mkdir_used=false - -- # Make sure that the destination directory exists. -+ if test $dstdir_status != 0; then -+ case $posix_mkdir in -+ '') -+ # Create intermediate dirs using mode 755 as modified by the umask. -+ # This is like FreeBSD 'install' as of 1997-10-28. -+ umask=`umask` -+ case $stripcmd.$umask in -+ # Optimize common cases. -+ *[2367][2367]) mkdir_umask=$umask;; -+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - -- # Skip lots of stat calls in the usual case. -- if test ! -d "$dstdir"; then -- defaultIFS=' -- ' -- IFS="${IFS-$defaultIFS}" -+ *[0-7]) -+ mkdir_umask=`expr $umask + 22 \ -+ - $umask % 100 % 40 + $umask % 20 \ -+ - $umask % 10 % 4 + $umask % 2 -+ `;; -+ *) mkdir_umask=$umask,go-w;; -+ esac - -- oIFS=$IFS -- # Some sh's can't handle IFS=/ for some reason. -- IFS='%' -- set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` -- shift -- IFS=$oIFS -+ # With -d, create the new directory with the user-specified mode. -+ # Otherwise, rely on $mkdir_umask. -+ if test -n "$dir_arg"; then -+ mkdir_mode=-m$mode -+ else -+ mkdir_mode= -+ fi - -- pathcomp= -+ posix_mkdir=false -+ case $umask in -+ *[123567][0-7][0-7]) -+ # POSIX mkdir -p sets u+wx bits regardless of umask, which -+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0. -+ ;; -+ *) -+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ -+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - -- while test $# -ne 0 ; do -- pathcomp=$pathcomp$1 -+ if (umask $mkdir_umask && -+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 -+ then -+ if test -z "$dir_arg" || { -+ # Check for POSIX incompatibilities with -m. -+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or -+ # other-writable bit of parent directory when it shouldn't. -+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. -+ ls_ld_tmpdir=`ls -ld "$tmpdir"` -+ case $ls_ld_tmpdir in -+ d????-?r-*) different_mode=700;; -+ d????-?--*) different_mode=755;; -+ *) false;; -+ esac && -+ $mkdirprog -m$different_mode -p -- "$tmpdir" && { -+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"` -+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" -+ } -+ } -+ then posix_mkdir=: -+ fi -+ rmdir "$tmpdir/d" "$tmpdir" -+ else -+ # Remove any dirs left behind by ancient mkdir implementations. -+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null -+ fi -+ trap '' 0;; -+ esac;; -+ esac -+ -+ if -+ $posix_mkdir && ( -+ umask $mkdir_umask && -+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" -+ ) -+ then : -+ else -+ -+ # The umask is ridiculous, or mkdir does not conform to POSIX, -+ # or it failed possibly due to a race condition. Create the -+ # directory the slow way, step by step, checking for races as we go. -+ -+ case $dstdir in -+ /*) prefix='/';; -+ [-=\(\)!]*) prefix='./';; -+ *) prefix='';; -+ esac -+ -+ eval "$initialize_posix_glob" -+ -+ oIFS=$IFS -+ IFS=/ -+ $posix_glob set -f -+ set fnord $dstdir - shift -- if test ! -d "$pathcomp"; then -- $mkdirprog "$pathcomp" -- # mkdir can fail with a `File exist' error in case several -- # install-sh are creating the directory concurrently. This -- # is OK. -- test -d "$pathcomp" || exit -+ $posix_glob set +f -+ IFS=$oIFS -+ -+ prefixes= -+ -+ for d -+ do -+ test X"$d" = X && continue -+ -+ prefix=$prefix$d -+ if test -d "$prefix"; then -+ prefixes= -+ else -+ if $posix_mkdir; then -+ (umask=$mkdir_umask && -+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break -+ # Don't fail if two instances are running concurrently. -+ test -d "$prefix" || exit 1 -+ else -+ case $prefix in -+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; -+ *) qprefix=$prefix;; -+ esac -+ prefixes="$prefixes '$qprefix'" -+ fi -+ fi -+ prefix=$prefix/ -+ done -+ -+ if test -n "$prefixes"; then -+ # Don't fail if two instances are running concurrently. -+ (umask $mkdir_umask && -+ eval "\$doit_exec \$mkdirprog $prefixes") || -+ test -d "$dstdir" || exit 1 -+ obsolete_mkdir_used=true - fi -- pathcomp=$pathcomp/ -- done -+ fi - fi - - if test -n "$dir_arg"; then -- $doit $mkdircmd "$dst" \ -- && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ -- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ -- && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ -- && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } -- -+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && -+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && -+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || -+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else -- dstfile=`basename "$dst"` - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 -- trap '(exit $?); exit' 1 2 13 15 - - # Copy the file name to the temp name. -- $doit $cpprog "$src" "$dsttmp" && -+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # -- { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ -- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ -- && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ -- && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && -+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && -+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && -+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && -+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - -- # Now rename the file to the real destination. -- { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ -- || { -- # The rename failed, perhaps because mv can't rename something else -- # to itself, or perhaps because mv is so ancient that it does not -- # support -f. -+ # If -C, don't bother to copy if it wouldn't change the file. -+ if $copy_on_change && -+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && -+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - -- # Now remove or move aside any old file at destination location. -- # We try this two ways since rm can't unlink itself on some -- # systems and the destination file might be busy for other -- # reasons. In this case, the final cleanup might fail but the new -- # file should still install successfully. -- { -- if test -f "$dstdir/$dstfile"; then -- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ -- || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ -- || { -- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 -- (exit 1); exit 1 -- } -- else -- : -- fi -- } && -+ eval "$initialize_posix_glob" && -+ $posix_glob set -f && -+ set X $old && old=:$2:$4:$5:$6 && -+ set X $new && new=:$2:$4:$5:$6 && -+ $posix_glob set +f && - -- # Now rename the file to the real destination. -- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" -- } -- } -- fi || { (exit 1); exit 1; } -+ test "$old" = "$new" && -+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 -+ then -+ rm -f "$dsttmp" -+ else -+ # Rename the file to the real destination. -+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || -+ -+ # The rename failed, perhaps because mv can't rename something else -+ # to itself, or perhaps because mv is so ancient that it does not -+ # support -f. -+ { -+ # Now remove or move aside any old file at destination location. -+ # We try this two ways since rm can't unlink itself on some -+ # systems and the destination file might be busy for other -+ # reasons. In this case, the final cleanup might fail but the new -+ # file should still install successfully. -+ { -+ test ! -f "$dst" || -+ $doit $rmcmd -f "$dst" 2>/dev/null || -+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && -+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } -+ } || -+ { echo "$0: cannot unlink or rename $dst" >&2 -+ (exit 1); exit 1 -+ } -+ } && -+ -+ # Now rename the file to the real destination. -+ $doit $mvcmd "$dsttmp" "$dst" -+ } -+ fi || exit 1 -+ -+ trap '' 0 -+ fi - done - --# The final little trick to "correctly" pass the exit status to the exit trap. --{ -- (exit 0); exit 0 --} -- - # Local variables: - # eval: (add-hook 'write-file-hooks 'time-stamp) - # time-stamp-start: "scriptversion=" - # time-stamp-format: "%:y-%02m-%02d.%02H" --# time-stamp-end: "$" -+# time-stamp-time-zone: "UTC" -+# time-stamp-end: "; # UTC" - # End: -diff --git a/js/src/ctypes/libffi/libffi.pc.in b/js/src/ctypes/libffi/libffi.pc.in ---- a/js/src/ctypes/libffi/libffi.pc.in -+++ b/js/src/ctypes/libffi/libffi.pc.in -@@ -1,10 +1,11 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ - libdir=@libdir@ -+toolexeclibdir=@toolexeclibdir@ - includedir=${libdir}/@PACKAGE_NAME@-@PACKAGE_VERSION@/include - - Name: @PACKAGE_NAME@ - Description: Library supporting Foreign Function Interfaces - Version: @PACKAGE_VERSION@ --Libs: -L${libdir} -lffi -+Libs: -L${toolexeclibdir} -lffi - Cflags: -I${includedir} -diff --git a/js/src/ctypes/libffi/libffi.xcodeproj/project.pbxproj b/js/src/ctypes/libffi/libffi.xcodeproj/project.pbxproj -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/libffi.xcodeproj/project.pbxproj -@@ -0,0 +1,637 @@ -+// !$*UTF8*$! -+{ -+ archiveVersion = 1; -+ classes = { -+ }; -+ objectVersion = 46; -+ objects = { -+ -+/* Begin PBXBuildFile section */ -+ DBFA714A187F1D8600A76262 /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA713E187F1D8600A76262 /* ffi.h */; }; -+ DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA713F187F1D8600A76262 /* ffi_common.h */; }; -+ DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7140187F1D8600A76262 /* fficonfig.h */; }; -+ DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7141187F1D8600A76262 /* ffitarget.h */; }; -+ DBFA714E187F1D8600A76262 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; }; -+ DBFA714F187F1D8600A76262 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; }; -+ DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; }; -+ DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; }; -+ DBFA7158187F1D8600A76262 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; }; -+ DBFA7159187F1D8600A76262 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; }; -+ DBFA715A187F1D8600A76262 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; }; -+ DBFA715B187F1D8600A76262 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; }; -+ DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716C187F1D9B00A76262 /* ffi_arm64.c */; }; -+ DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716D187F1D9B00A76262 /* sysv_arm64.S */; }; -+ DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716F187F1D9B00A76262 /* ffi_armv7.c */; }; -+ DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7170187F1D9B00A76262 /* sysv_armv7.S */; }; -+ DBFA717B187F1D9B00A76262 /* trampoline_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */; }; -+ DBFA717C187F1D9B00A76262 /* darwin64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */; }; -+ DBFA717D187F1D9B00A76262 /* darwin_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7174187F1D9B00A76262 /* darwin_i386.S */; }; -+ DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */; }; -+ DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7176187F1D9B00A76262 /* ffi_i386.c */; }; -+ DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7182187F1DA100A76262 /* ffi_i386.h */; }; -+ DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7183187F1DA100A76262 /* ffi_x86_64.h */; }; -+ DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7184187F1DA100A76262 /* fficonfig_i386.h */; }; -+ DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */; }; -+ DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7186187F1DA100A76262 /* ffitarget_i386.h */; }; -+ DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */; }; -+ DBFA7194187F1DA100A76262 /* darwin64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */; }; -+ DBFA7195187F1DA100A76262 /* darwin_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718B187F1DA100A76262 /* darwin_i386.S */; }; -+ DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */; }; -+ DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718D187F1DA100A76262 /* ffi_i386.c */; }; -+/* End PBXBuildFile section */ -+ -+/* Begin PBXCopyFilesBuildPhase section */ -+ DB13B1641849DF1E0010F42D /* CopyFiles */ = { -+ isa = PBXCopyFilesBuildPhase; -+ buildActionMask = 8; -+ dstPath = "include/$(PRODUCT_NAME)"; -+ dstSubfolderSpec = 16; -+ files = ( -+ ); -+ runOnlyForDeploymentPostprocessing = 1; -+ }; -+/* End PBXCopyFilesBuildPhase section */ -+ -+/* Begin PBXFileReference section */ -+ DB13B1661849DF1E0010F42D /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; }; -+ DB13B1911849DF510010F42D /* ffi.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = ffi.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; -+ DBFA713E187F1D8600A76262 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = ""; }; -+ DBFA713F187F1D8600A76262 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = ""; }; -+ DBFA7140187F1D8600A76262 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = ""; }; -+ DBFA7141187F1D8600A76262 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = ""; }; -+ DBFA7143187F1D8600A76262 /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = closures.c; sourceTree = ""; }; -+ DBFA7145187F1D8600A76262 /* dlmalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dlmalloc.c; sourceTree = ""; }; -+ DBFA7147187F1D8600A76262 /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prep_cif.c; sourceTree = ""; }; -+ DBFA7148187F1D8600A76262 /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = raw_api.c; sourceTree = ""; }; -+ DBFA7149187F1D8600A76262 /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = types.c; sourceTree = ""; }; -+ DBFA715E187F1D9B00A76262 /* ffi_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_arm64.h; sourceTree = ""; }; -+ DBFA715F187F1D9B00A76262 /* ffi_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_armv7.h; sourceTree = ""; }; -+ DBFA7160187F1D9B00A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = ""; }; -+ DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = ""; }; -+ DBFA7162187F1D9B00A76262 /* fficonfig_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_arm64.h; sourceTree = ""; }; -+ DBFA7163187F1D9B00A76262 /* fficonfig_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_armv7.h; sourceTree = ""; }; -+ DBFA7164187F1D9B00A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = ""; }; -+ DBFA7165187F1D9B00A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = ""; }; -+ DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm64.h; sourceTree = ""; }; -+ DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_armv7.h; sourceTree = ""; }; -+ DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = ""; }; -+ DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = ""; }; -+ DBFA716C187F1D9B00A76262 /* ffi_arm64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_arm64.c; sourceTree = ""; }; -+ DBFA716D187F1D9B00A76262 /* sysv_arm64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_arm64.S; sourceTree = ""; }; -+ DBFA716F187F1D9B00A76262 /* ffi_armv7.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_armv7.c; sourceTree = ""; }; -+ DBFA7170187F1D9B00A76262 /* sysv_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_armv7.S; sourceTree = ""; }; -+ DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline_armv7.S; sourceTree = ""; }; -+ DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64_x86_64.S; sourceTree = ""; }; -+ DBFA7174187F1D9B00A76262 /* darwin_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin_i386.S; sourceTree = ""; }; -+ DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = ""; }; -+ DBFA7176187F1D9B00A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = ""; }; -+ DBFA7182187F1DA100A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = ""; }; -+ DBFA7183187F1DA100A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = ""; }; -+ DBFA7184187F1DA100A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = ""; }; -+ DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = ""; }; -+ DBFA7186187F1DA100A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = ""; }; -+ DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = ""; }; -+ DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64_x86_64.S; sourceTree = ""; }; -+ DBFA718B187F1DA100A76262 /* darwin_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin_i386.S; sourceTree = ""; }; -+ DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = ""; }; -+ DBFA718D187F1DA100A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = ""; }; -+/* End PBXFileReference section */ -+ -+/* Begin PBXGroup section */ -+ DB13B15B1849DEB70010F42D = { -+ isa = PBXGroup; -+ children = ( -+ DBFA713C187F1D8600A76262 /* darwin_common */, -+ DBFA715C187F1D9B00A76262 /* darwin_ios */, -+ DBFA7180187F1DA100A76262 /* darwin_osx */, -+ DB13B1671849DF1E0010F42D /* Products */, -+ ); -+ sourceTree = ""; -+ }; -+ DB13B1671849DF1E0010F42D /* Products */ = { -+ isa = PBXGroup; -+ children = ( -+ DB13B1661849DF1E0010F42D /* libffi.a */, -+ DB13B1911849DF510010F42D /* ffi.dylib */, -+ ); -+ name = Products; -+ sourceTree = ""; -+ }; -+ DBFA713C187F1D8600A76262 /* darwin_common */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA713D187F1D8600A76262 /* include */, -+ DBFA7142187F1D8600A76262 /* src */, -+ ); -+ path = "darwin_common"; -+ sourceTree = ""; -+ }; -+ DBFA713D187F1D8600A76262 /* include */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA713E187F1D8600A76262 /* ffi.h */, -+ DBFA713F187F1D8600A76262 /* ffi_common.h */, -+ DBFA7140187F1D8600A76262 /* fficonfig.h */, -+ DBFA7141187F1D8600A76262 /* ffitarget.h */, -+ ); -+ path = include; -+ sourceTree = ""; -+ }; -+ DBFA7142187F1D8600A76262 /* src */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA7143187F1D8600A76262 /* closures.c */, -+ DBFA7145187F1D8600A76262 /* dlmalloc.c */, -+ DBFA7147187F1D8600A76262 /* prep_cif.c */, -+ DBFA7148187F1D8600A76262 /* raw_api.c */, -+ DBFA7149187F1D8600A76262 /* types.c */, -+ ); -+ path = src; -+ sourceTree = ""; -+ }; -+ DBFA715C187F1D9B00A76262 /* darwin_ios */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA715D187F1D9B00A76262 /* include */, -+ DBFA716A187F1D9B00A76262 /* src */, -+ ); -+ path = "darwin_ios"; -+ sourceTree = ""; -+ }; -+ DBFA715D187F1D9B00A76262 /* include */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA715E187F1D9B00A76262 /* ffi_arm64.h */, -+ DBFA715F187F1D9B00A76262 /* ffi_armv7.h */, -+ DBFA7160187F1D9B00A76262 /* ffi_i386.h */, -+ DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */, -+ DBFA7162187F1D9B00A76262 /* fficonfig_arm64.h */, -+ DBFA7163187F1D9B00A76262 /* fficonfig_armv7.h */, -+ DBFA7164187F1D9B00A76262 /* fficonfig_i386.h */, -+ DBFA7165187F1D9B00A76262 /* fficonfig_x86_64.h */, -+ DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */, -+ DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */, -+ DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */, -+ DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */, -+ ); -+ path = include; -+ sourceTree = ""; -+ }; -+ DBFA716A187F1D9B00A76262 /* src */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA716B187F1D9B00A76262 /* aarch64 */, -+ DBFA716E187F1D9B00A76262 /* arm */, -+ DBFA7172187F1D9B00A76262 /* x86 */, -+ ); -+ path = src; -+ sourceTree = ""; -+ }; -+ DBFA716B187F1D9B00A76262 /* aarch64 */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA716C187F1D9B00A76262 /* ffi_arm64.c */, -+ DBFA716D187F1D9B00A76262 /* sysv_arm64.S */, -+ ); -+ path = aarch64; -+ sourceTree = ""; -+ }; -+ DBFA716E187F1D9B00A76262 /* arm */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA716F187F1D9B00A76262 /* ffi_armv7.c */, -+ DBFA7170187F1D9B00A76262 /* sysv_armv7.S */, -+ DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */, -+ ); -+ path = arm; -+ sourceTree = ""; -+ }; -+ DBFA7172187F1D9B00A76262 /* x86 */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */, -+ DBFA7174187F1D9B00A76262 /* darwin_i386.S */, -+ DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */, -+ DBFA7176187F1D9B00A76262 /* ffi_i386.c */, -+ ); -+ path = x86; -+ sourceTree = ""; -+ }; -+ DBFA7180187F1DA100A76262 /* darwin_osx */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA7181187F1DA100A76262 /* include */, -+ DBFA7188187F1DA100A76262 /* src */, -+ ); -+ path = "darwin_osx"; -+ sourceTree = ""; -+ }; -+ DBFA7181187F1DA100A76262 /* include */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA7182187F1DA100A76262 /* ffi_i386.h */, -+ DBFA7183187F1DA100A76262 /* ffi_x86_64.h */, -+ DBFA7184187F1DA100A76262 /* fficonfig_i386.h */, -+ DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */, -+ DBFA7186187F1DA100A76262 /* ffitarget_i386.h */, -+ DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */, -+ ); -+ path = include; -+ sourceTree = ""; -+ }; -+ DBFA7188187F1DA100A76262 /* src */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA7189187F1DA100A76262 /* x86 */, -+ ); -+ path = src; -+ sourceTree = ""; -+ }; -+ DBFA7189187F1DA100A76262 /* x86 */ = { -+ isa = PBXGroup; -+ children = ( -+ DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */, -+ DBFA718B187F1DA100A76262 /* darwin_i386.S */, -+ DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */, -+ DBFA718D187F1DA100A76262 /* ffi_i386.c */, -+ ); -+ path = x86; -+ sourceTree = ""; -+ }; -+/* End PBXGroup section */ -+ -+/* Begin PBXHeadersBuildPhase section */ -+ DB13B18F1849DF510010F42D /* Headers */ = { -+ isa = PBXHeadersBuildPhase; -+ buildActionMask = 2147483647; -+ files = ( -+ DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */, -+ DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */, -+ DBFA714A187F1D8600A76262 /* ffi.h in Headers */, -+ DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */, -+ DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */, -+ DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */, -+ DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */, -+ DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */, -+ DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */, -+ DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */, -+ ); -+ runOnlyForDeploymentPostprocessing = 0; -+ }; -+/* End PBXHeadersBuildPhase section */ -+ -+/* Begin PBXNativeTarget section */ -+ DB13B1651849DF1E0010F42D /* libffi-iOS */ = { -+ isa = PBXNativeTarget; -+ buildConfigurationList = DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */; -+ buildPhases = ( -+ DB13B3051849E01C0010F42D /* ShellScript */, -+ DB13B1621849DF1E0010F42D /* Sources */, -+ DB13B1641849DF1E0010F42D /* CopyFiles */, -+ ); -+ buildRules = ( -+ ); -+ dependencies = ( -+ ); -+ name = "libffi-iOS"; -+ productName = ffi; -+ productReference = DB13B1661849DF1E0010F42D /* libffi.a */; -+ productType = "com.apple.product-type.library.static"; -+ }; -+ DB13B1901849DF510010F42D /* libffi-Mac */ = { -+ isa = PBXNativeTarget; -+ buildConfigurationList = DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */; -+ buildPhases = ( -+ DB13B3061849E0490010F42D /* ShellScript */, -+ DB13B18D1849DF510010F42D /* Sources */, -+ DB13B18F1849DF510010F42D /* Headers */, -+ ); -+ buildRules = ( -+ ); -+ dependencies = ( -+ ); -+ name = "libffi-Mac"; -+ productName = ffi; -+ productReference = DB13B1911849DF510010F42D /* ffi.dylib */; -+ productType = "com.apple.product-type.library.dynamic"; -+ }; -+/* End PBXNativeTarget section */ -+ -+/* Begin PBXProject section */ -+ DB13B15C1849DEB70010F42D /* Project object */ = { -+ isa = PBXProject; -+ attributes = { -+ LastUpgradeCheck = 0510; -+ }; -+ buildConfigurationList = DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */; -+ compatibilityVersion = "Xcode 3.2"; -+ developmentRegion = English; -+ hasScannedForEncodings = 0; -+ knownRegions = ( -+ en, -+ ); -+ mainGroup = DB13B15B1849DEB70010F42D; -+ productRefGroup = DB13B1671849DF1E0010F42D /* Products */; -+ projectDirPath = ""; -+ projectRoot = ""; -+ targets = ( -+ DB13B1651849DF1E0010F42D /* libffi-iOS */, -+ DB13B1901849DF510010F42D /* libffi-Mac */, -+ ); -+ }; -+/* End PBXProject section */ -+ -+/* Begin PBXShellScriptBuildPhase section */ -+ DB13B3051849E01C0010F42D /* ShellScript */ = { -+ isa = PBXShellScriptBuildPhase; -+ buildActionMask = 2147483647; -+ files = ( -+ ); -+ inputPaths = ( -+ ); -+ outputPaths = ( -+ ); -+ runOnlyForDeploymentPostprocessing = 0; -+ shellPath = /bin/sh; -+ shellScript = "/usr/bin/python generate-darwin-source-and-headers.py --only-ios"; -+ }; -+ DB13B3061849E0490010F42D /* ShellScript */ = { -+ isa = PBXShellScriptBuildPhase; -+ buildActionMask = 2147483647; -+ files = ( -+ ); -+ inputPaths = ( -+ ); -+ outputPaths = ( -+ ); -+ runOnlyForDeploymentPostprocessing = 0; -+ shellPath = /bin/sh; -+ shellScript = "/usr/bin/python generate-darwin-source-and-headers.py --only-osx"; -+ }; -+/* End PBXShellScriptBuildPhase section */ -+ -+/* Begin PBXSourcesBuildPhase section */ -+ DB13B1621849DF1E0010F42D /* Sources */ = { -+ isa = PBXSourcesBuildPhase; -+ buildActionMask = 2147483647; -+ files = ( -+ DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */, -+ DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */, -+ DBFA717B187F1D9B00A76262 /* trampoline_armv7.S in Sources */, -+ DBFA714E187F1D8600A76262 /* closures.c in Sources */, -+ DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */, -+ DBFA717D187F1D9B00A76262 /* darwin_i386.S in Sources */, -+ DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */, -+ DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */, -+ DBFA7158187F1D8600A76262 /* raw_api.c in Sources */, -+ DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */, -+ DBFA717C187F1D9B00A76262 /* darwin64_x86_64.S in Sources */, -+ DBFA715A187F1D8600A76262 /* types.c in Sources */, -+ DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */, -+ ); -+ runOnlyForDeploymentPostprocessing = 0; -+ }; -+ DB13B18D1849DF510010F42D /* Sources */ = { -+ isa = PBXSourcesBuildPhase; -+ buildActionMask = 2147483647; -+ files = ( -+ DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */, -+ DBFA7195187F1DA100A76262 /* darwin_i386.S in Sources */, -+ DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */, -+ DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */, -+ DBFA715B187F1D8600A76262 /* types.c in Sources */, -+ DBFA7159187F1D8600A76262 /* raw_api.c in Sources */, -+ DBFA714F187F1D8600A76262 /* closures.c in Sources */, -+ DBFA7194187F1DA100A76262 /* darwin64_x86_64.S in Sources */, -+ ); -+ runOnlyForDeploymentPostprocessing = 0; -+ }; -+/* End PBXSourcesBuildPhase section */ -+ -+/* Begin XCBuildConfiguration section */ -+ DB13B1601849DEB70010F42D /* Debug */ = { -+ isa = XCBuildConfiguration; -+ buildSettings = { -+ HEADER_SEARCH_PATHS = ( -+ "$(inherited)", -+ "darwin_common/include", -+ ); -+ ONLY_ACTIVE_ARCH = YES; -+ }; -+ name = Debug; -+ }; -+ DB13B1611849DEB70010F42D /* Release */ = { -+ isa = XCBuildConfiguration; -+ buildSettings = { -+ HEADER_SEARCH_PATHS = ( -+ "$(inherited)", -+ "darwin_common/include", -+ ); -+ }; -+ name = Release; -+ }; -+ DB13B1871849DF1E0010F42D /* Debug */ = { -+ isa = XCBuildConfiguration; -+ buildSettings = { -+ ALWAYS_SEARCH_USER_PATHS = NO; -+ ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; -+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; -+ CLANG_CXX_LIBRARY = "libc++"; -+ CLANG_ENABLE_MODULES = YES; -+ CLANG_ENABLE_OBJC_ARC = YES; -+ CLANG_WARN_BOOL_CONVERSION = YES; -+ CLANG_WARN_CONSTANT_CONVERSION = YES; -+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; -+ CLANG_WARN_EMPTY_BODY = YES; -+ CLANG_WARN_ENUM_CONVERSION = YES; -+ CLANG_WARN_INT_CONVERSION = YES; -+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; -+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; -+ COPY_PHASE_STRIP = NO; -+ DSTROOT = /tmp/ffi.dst; -+ GCC_C_LANGUAGE_STANDARD = gnu99; -+ GCC_DYNAMIC_NO_PIC = NO; -+ GCC_OPTIMIZATION_LEVEL = 0; -+ GCC_PREPROCESSOR_DEFINITIONS = ( -+ "DEBUG=1", -+ "$(inherited)", -+ ); -+ GCC_SYMBOLS_PRIVATE_EXTERN = NO; -+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES; -+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; -+ GCC_WARN_UNDECLARED_SELECTOR = YES; -+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; -+ GCC_WARN_UNUSED_FUNCTION = YES; -+ GCC_WARN_UNUSED_VARIABLE = YES; -+ HEADER_SEARCH_PATHS = ( -+ "$(inherited)", -+ "darwin_ios/include", -+ ); -+ IPHONEOS_DEPLOYMENT_TARGET = 5.0; -+ "IPHONEOS_DEPLOYMENT_TARGET[arch=arm64]" = 7.0; -+ OTHER_LDFLAGS = "-ObjC"; -+ PRODUCT_NAME = ffi; -+ SDKROOT = iphoneos; -+ SKIP_INSTALL = YES; -+ }; -+ name = Debug; -+ }; -+ DB13B1881849DF1E0010F42D /* Release */ = { -+ isa = XCBuildConfiguration; -+ buildSettings = { -+ ALWAYS_SEARCH_USER_PATHS = NO; -+ ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; -+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; -+ CLANG_CXX_LIBRARY = "libc++"; -+ CLANG_ENABLE_MODULES = YES; -+ CLANG_ENABLE_OBJC_ARC = YES; -+ CLANG_WARN_BOOL_CONVERSION = YES; -+ CLANG_WARN_CONSTANT_CONVERSION = YES; -+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; -+ CLANG_WARN_EMPTY_BODY = YES; -+ CLANG_WARN_ENUM_CONVERSION = YES; -+ CLANG_WARN_INT_CONVERSION = YES; -+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; -+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; -+ COPY_PHASE_STRIP = YES; -+ DSTROOT = /tmp/ffi.dst; -+ ENABLE_NS_ASSERTIONS = NO; -+ GCC_C_LANGUAGE_STANDARD = gnu99; -+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES; -+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; -+ GCC_WARN_UNDECLARED_SELECTOR = YES; -+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; -+ GCC_WARN_UNUSED_FUNCTION = YES; -+ GCC_WARN_UNUSED_VARIABLE = YES; -+ HEADER_SEARCH_PATHS = ( -+ "$(inherited)", -+ "darwin_ios/include", -+ ); -+ IPHONEOS_DEPLOYMENT_TARGET = 5.0; -+ "IPHONEOS_DEPLOYMENT_TARGET[arch=arm64]" = 7.0; -+ OTHER_LDFLAGS = "-ObjC"; -+ PRODUCT_NAME = ffi; -+ SDKROOT = iphoneos; -+ SKIP_INSTALL = YES; -+ VALIDATE_PRODUCT = YES; -+ }; -+ name = Release; -+ }; -+ DB13B1B11849DF520010F42D /* Debug */ = { -+ isa = XCBuildConfiguration; -+ buildSettings = { -+ ALWAYS_SEARCH_USER_PATHS = NO; -+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; -+ CLANG_CXX_LIBRARY = "libc++"; -+ CLANG_ENABLE_OBJC_ARC = YES; -+ CLANG_WARN_BOOL_CONVERSION = YES; -+ CLANG_WARN_CONSTANT_CONVERSION = YES; -+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; -+ CLANG_WARN_EMPTY_BODY = YES; -+ CLANG_WARN_ENUM_CONVERSION = YES; -+ CLANG_WARN_INT_CONVERSION = YES; -+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; -+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; -+ COPY_PHASE_STRIP = NO; -+ DYLIB_COMPATIBILITY_VERSION = 1; -+ DYLIB_CURRENT_VERSION = 1; -+ GCC_C_LANGUAGE_STANDARD = gnu99; -+ GCC_DYNAMIC_NO_PIC = NO; -+ GCC_ENABLE_OBJC_EXCEPTIONS = YES; -+ GCC_OPTIMIZATION_LEVEL = 0; -+ GCC_PREPROCESSOR_DEFINITIONS = ( -+ "DEBUG=1", -+ "$(inherited)", -+ ); -+ GCC_SYMBOLS_PRIVATE_EXTERN = NO; -+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES; -+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; -+ GCC_WARN_UNDECLARED_SELECTOR = YES; -+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; -+ GCC_WARN_UNUSED_FUNCTION = YES; -+ GCC_WARN_UNUSED_VARIABLE = YES; -+ HEADER_SEARCH_PATHS = ( -+ "$(inherited)", -+ "darwin_osx/include", -+ ); -+ MACOSX_DEPLOYMENT_TARGET = 10.6; -+ ONLY_ACTIVE_ARCH = YES; -+ OTHER_LDFLAGS = "-Wl,-no_compact_unwind"; -+ PRODUCT_NAME = ffi; -+ SDKROOT = macosx; -+ }; -+ name = Debug; -+ }; -+ DB13B1B21849DF520010F42D /* Release */ = { -+ isa = XCBuildConfiguration; -+ buildSettings = { -+ ALWAYS_SEARCH_USER_PATHS = NO; -+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; -+ CLANG_CXX_LIBRARY = "libc++"; -+ CLANG_ENABLE_OBJC_ARC = YES; -+ CLANG_WARN_BOOL_CONVERSION = YES; -+ CLANG_WARN_CONSTANT_CONVERSION = YES; -+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; -+ CLANG_WARN_EMPTY_BODY = YES; -+ CLANG_WARN_ENUM_CONVERSION = YES; -+ CLANG_WARN_INT_CONVERSION = YES; -+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; -+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; -+ COPY_PHASE_STRIP = YES; -+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; -+ DYLIB_COMPATIBILITY_VERSION = 1; -+ DYLIB_CURRENT_VERSION = 1; -+ ENABLE_NS_ASSERTIONS = NO; -+ GCC_C_LANGUAGE_STANDARD = gnu99; -+ GCC_ENABLE_OBJC_EXCEPTIONS = YES; -+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES; -+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; -+ GCC_WARN_UNDECLARED_SELECTOR = YES; -+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; -+ GCC_WARN_UNUSED_FUNCTION = YES; -+ GCC_WARN_UNUSED_VARIABLE = YES; -+ HEADER_SEARCH_PATHS = ( -+ "$(inherited)", -+ "darwin_osx/include", -+ ); -+ MACOSX_DEPLOYMENT_TARGET = 10.6; -+ OTHER_LDFLAGS = "-Wl,-no_compact_unwind"; -+ PRODUCT_NAME = ffi; -+ SDKROOT = macosx; -+ }; -+ name = Release; -+ }; -+/* End XCBuildConfiguration section */ -+ -+/* Begin XCConfigurationList section */ -+ DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */ = { -+ isa = XCConfigurationList; -+ buildConfigurations = ( -+ DB13B1601849DEB70010F42D /* Debug */, -+ DB13B1611849DEB70010F42D /* Release */, -+ ); -+ defaultConfigurationIsVisible = 0; -+ defaultConfigurationName = Release; -+ }; -+ DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */ = { -+ isa = XCConfigurationList; -+ buildConfigurations = ( -+ DB13B1871849DF1E0010F42D /* Debug */, -+ DB13B1881849DF1E0010F42D /* Release */, -+ ); -+ defaultConfigurationIsVisible = 0; -+ defaultConfigurationName = Release; -+ }; -+ DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */ = { -+ isa = XCConfigurationList; -+ buildConfigurations = ( -+ DB13B1B11849DF520010F42D /* Debug */, -+ DB13B1B21849DF520010F42D /* Release */, -+ ); -+ defaultConfigurationIsVisible = 0; -+ defaultConfigurationName = Release; -+ }; -+/* End XCConfigurationList section */ -+ }; -+ rootObject = DB13B15C1849DEB70010F42D /* Project object */; -+} -diff --git a/js/src/ctypes/libffi/libtool-ldflags b/js/src/ctypes/libffi/libtool-ldflags -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/libtool-ldflags -@@ -0,0 +1,106 @@ -+#! /bin/sh -+ -+# Script to translate LDFLAGS into a form suitable for use with libtool. -+ -+# Copyright (C) 2005 Free Software Foundation, Inc. -+# -+# This file is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -+# MA 02110-1301, USA. -+ -+# Contributed by CodeSourcery, LLC. -+ -+# This script is designed to be used from a Makefile that uses libtool -+# to build libraries as follows: -+# -+# LTLDFLAGS = $(shell libtool-ldflags $(LDFLAGS)) -+# -+# Then, use (LTLDFLAGS) in place of $(LDFLAGS) in your link line. -+ -+# The output of the script. This string is built up as we process the -+# arguments. -+result= -+prev_arg= -+ -+for arg -+do -+ case $arg in -+ -f*|--*) -+ # Libtool does not ascribe any special meaning options -+ # that begin with -f or with a double-dash. So, it will -+ # think these options are linker options, and prefix them -+ # with "-Wl,". Then, the compiler driver will ignore the -+ # options. So, we prefix these options with -Xcompiler to -+ # make clear to libtool that they are in fact compiler -+ # options. -+ case $prev_arg in -+ -Xpreprocessor|-Xcompiler|-Xlinker) -+ # This option is already prefixed; don't prefix it again. -+ ;; -+ *) -+ result="$result -Xcompiler" -+ ;; -+ esac -+ ;; -+ *) -+ # We do not want to add -Xcompiler to other options because -+ # that would prevent libtool itself from recognizing them. -+ ;; -+ esac -+ prev_arg=$arg -+ -+ # If $(LDFLAGS) is (say): -+ # a "b'c d" e -+ # then the user expects that: -+ # $(LD) $(LDFLAGS) -+ # will pass three arguments to $(LD): -+ # 1) a -+ # 2) b'c d -+ # 3) e -+ # We must ensure, therefore, that the arguments are appropriately -+ # quoted so that using: -+ # libtool --mode=link ... $(LTLDFLAGS) -+ # will result in the same number of arguments being passed to -+ # libtool. In other words, when this script was invoked, the shell -+ # removed one level of quoting, present in $(LDFLAGS); we have to put -+ # it back. -+ -+ # Quote any embedded single quotes. -+ case $arg in -+ *"'"*) -+ # The following command creates the script: -+ # 1s,^X,,;s|'|'"'"'|g -+ # which removes a leading X, and then quotes and embedded single -+ # quotes. -+ sed_script="1s,^X,,;s|'|'\"'\"'|g" -+ # Add a leading "X" so that if $arg starts with a dash, -+ # the echo command will not try to interpret the argument -+ # as a command-line option. -+ arg="X$arg" -+ # Generate the quoted string. -+ quoted_arg=`echo "$arg" | sed -e "$sed_script"` -+ ;; -+ *) -+ quoted_arg=$arg -+ ;; -+ esac -+ # Surround the entire argument with single quotes. -+ quoted_arg="'"$quoted_arg"'" -+ -+ # Add it to the string. -+ result="$result $quoted_arg" -+done -+ -+# Output the string we have built up. -+echo "$result" -diff --git a/js/src/ctypes/libffi/libtool-version b/js/src/ctypes/libffi/libtool-version ---- a/js/src/ctypes/libffi/libtool-version -+++ b/js/src/ctypes/libffi/libtool-version -@@ -21,9 +21,9 @@ - # - # 5. If any interfaces have been added since the last public release, - # then increment age. - # - # 6. If any interfaces have been removed since the last public - # release, then set age to 0. - # - # CURRENT:REVISION:AGE --5:10:0 -+6:1:0 -diff --git a/js/src/ctypes/libffi/ltmain.sh b/js/src/ctypes/libffi/ltmain.sh ---- a/js/src/ctypes/libffi/ltmain.sh -+++ b/js/src/ctypes/libffi/ltmain.sh -@@ -1,14 +1,14 @@ --# Generated from ltmain.m4sh. -- --# ltmain.sh (GNU libtool) 2.2.6b -+ -+# libtool (GNU libtool) 2.4.2 - # Written by Gordon Matzigkeit , 1996 - --# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. - # This is free software; see the source for copying conditions. There is NO - # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - # GNU Libtool is free software; you can redistribute it and/or modify - # it under the terms of the GNU General Public License as published by - # the Free Software Foundation; either version 2 of the License, or - # (at your option) any later version. - # -@@ -27,109 +27,125 @@ - # can be downloaded from http://www.gnu.org/licenses/gpl.html, - # or obtained by writing to the Free Software Foundation, Inc., - # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - # Usage: $progname [OPTION]... [MODE-ARG]... - # - # Provide generalized library-building support services. - # --# --config show all configuration variables --# --debug enable verbose shell tracing --# -n, --dry-run display commands without modifying any files --# --features display basic configuration information and exit --# --mode=MODE use operation mode MODE --# --preserve-dup-deps don't remove duplicate dependency libraries --# --quiet, --silent don't print informational messages --# --tag=TAG use configuration variables from tag TAG --# -v, --verbose print informational messages (default) --# --version print version information --# -h, --help print short or long help message -+# --config show all configuration variables -+# --debug enable verbose shell tracing -+# -n, --dry-run display commands without modifying any files -+# --features display basic configuration information and exit -+# --mode=MODE use operation mode MODE -+# --preserve-dup-deps don't remove duplicate dependency libraries -+# --quiet, --silent don't print informational messages -+# --no-quiet, --no-silent -+# print informational messages (default) -+# --no-warn don't display warning messages -+# --tag=TAG use configuration variables from tag TAG -+# -v, --verbose print more informational messages than default -+# --no-verbose don't print the extra informational messages -+# --version print version information -+# -h, --help, --help-all print short, long, or detailed help message - # - # MODE must be one of the following: - # --# clean remove files from the build directory --# compile compile a source file into a libtool object --# execute automatically set library path, then run a program --# finish complete the installation of libtool libraries --# install install libraries or executables --# link create a library or an executable --# uninstall remove libraries from an installed directory -+# clean remove files from the build directory -+# compile compile a source file into a libtool object -+# execute automatically set library path, then run a program -+# finish complete the installation of libtool libraries -+# install install libraries or executables -+# link create a library or an executable -+# uninstall remove libraries from an installed directory - # --# MODE-ARGS vary depending on the MODE. -+# MODE-ARGS vary depending on the MODE. When passed as first option, -+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. - # Try `$progname --help --mode=MODE' for a more detailed description of MODE. - # - # When reporting a bug, please describe a test case to reproduce it and - # include the following information: - # --# host-triplet: $host --# shell: $SHELL --# compiler: $LTCC --# compiler flags: $LTCFLAGS --# linker: $LD (gnu? $with_gnu_ld) --# $progname: (GNU libtool) 2.2.6b --# automake: $automake_version --# autoconf: $autoconf_version -+# host-triplet: $host -+# shell: $SHELL -+# compiler: $LTCC -+# compiler flags: $LTCFLAGS -+# linker: $LD (gnu? $with_gnu_ld) -+# $progname: (GNU libtool) 2.4.2 -+# automake: $automake_version -+# autoconf: $autoconf_version - # - # Report bugs to . -- --PROGRAM=ltmain.sh -+# GNU libtool home page: . -+# General help using GNU software: . -+ -+PROGRAM=libtool - PACKAGE=libtool --VERSION=2.2.6b -+VERSION=2.4.2 - TIMESTAMP="" --package_revision=1.3017 -+package_revision=1.3337 - - # Be Bourne compatible - if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST - else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac - fi - BIN_SH=xpg4; export BIN_SH # for Tru64 - DUALCASE=1; export DUALCASE # for MKS sh - -+# A function that is used when there is no print builtin or printf. -+func_fallback_echo () -+{ -+ eval 'cat <<_LTECHO_EOF -+$1 -+_LTECHO_EOF' -+} -+ - # NLS nuisances: We save the old values to restore during execute mode. --# Only set LANG and LC_ALL to C if already set. --# These must not be set unconditionally because not all systems understand --# e.g. LANG=C (notably SCO). - lt_user_locale= - lt_safe_locale= - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" - fi" - done -+LC_ALL=C -+LANGUAGE=C -+export LANGUAGE LC_ALL - - $lt_unset CDPATH - - -+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -+# is ksh but when the shell is invoked as "sh" and the current value of -+# the _XPG environment variable is not equal to 1 (one), the special -+# positional parameter $0, within a function call, is the name of the -+# function. -+progpath="$0" - - - - : ${CP="cp -f"} --: ${ECHO="echo"} --: ${EGREP="/bin/grep -E"} --: ${FGREP="/bin/grep -F"} --: ${GREP="/bin/grep"} --: ${LN_S="ln -s"} -+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} - : ${MAKE="make"} - : ${MKDIR="mkdir"} - : ${MV="mv -f"} - : ${RM="rm -f"} --: ${SED="/bin/sed"} - : ${SHELL="${CONFIG_SHELL-/bin/sh}"} - : ${Xsed="$SED -e 1s/^X//"} - - # Global variables: - EXIT_SUCCESS=0 - EXIT_FAILURE=1 - EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. - EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. -@@ -139,69 +155,240 @@ exit_status=$EXIT_SUCCESS - # Make sure IFS has a sensible default - lt_nl=' - ' - IFS=" $lt_nl" - - dirname="s,/[^/]*$,," - basename="s,^.*/,," - -+# func_dirname file append nondir_replacement -+# Compute the dirname of FILE. If nonempty, add APPEND to the result, -+# otherwise set result to NONDIR_REPLACEMENT. -+func_dirname () -+{ -+ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` -+ if test "X$func_dirname_result" = "X${1}"; then -+ func_dirname_result="${3}" -+ else -+ func_dirname_result="$func_dirname_result${2}" -+ fi -+} # func_dirname may be replaced by extended shell implementation -+ -+ -+# func_basename file -+func_basename () -+{ -+ func_basename_result=`$ECHO "${1}" | $SED "$basename"` -+} # func_basename may be replaced by extended shell implementation -+ -+ - # func_dirname_and_basename file append nondir_replacement - # perform func_basename and func_dirname in a single function - # call: - # dirname: Compute the dirname of FILE. If nonempty, - # add APPEND to the result, otherwise set result - # to NONDIR_REPLACEMENT. - # value returned in "$func_dirname_result" - # basename: Compute filename of FILE. - # value retuned in "$func_basename_result" - # Implementation must be kept synchronized with func_dirname - # and func_basename. For efficiency, we do not delegate to - # those functions but instead duplicate the functionality here. - func_dirname_and_basename () - { -- # Extract subdirectory from the argument. -- func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` -- if test "X$func_dirname_result" = "X${1}"; then -- func_dirname_result="${3}" -- else -- func_dirname_result="$func_dirname_result${2}" -+ # Extract subdirectory from the argument. -+ func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` -+ if test "X$func_dirname_result" = "X${1}"; then -+ func_dirname_result="${3}" -+ else -+ func_dirname_result="$func_dirname_result${2}" -+ fi -+ func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -+} # func_dirname_and_basename may be replaced by extended shell implementation -+ -+ -+# func_stripname prefix suffix name -+# strip PREFIX and SUFFIX off of NAME. -+# PREFIX and SUFFIX must not contain globbing or regex special -+# characters, hashes, percent signs, but SUFFIX may contain a leading -+# dot (in which case that matches only a dot). -+# func_strip_suffix prefix name -+func_stripname () -+{ -+ case ${2} in -+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; -+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; -+ esac -+} # func_stripname may be replaced by extended shell implementation -+ -+ -+# These SED scripts presuppose an absolute path with a trailing slash. -+pathcar='s,^/\([^/]*\).*$,\1,' -+pathcdr='s,^/[^/]*,,' -+removedotparts=':dotsl -+ s@/\./@/@g -+ t dotsl -+ s,/\.$,/,' -+collapseslashes='s@/\{1,\}@/@g' -+finalslash='s,/*$,/,' -+ -+# func_normal_abspath PATH -+# Remove doubled-up and trailing slashes, "." path components, -+# and cancel out any ".." path components in PATH after making -+# it an absolute path. -+# value returned in "$func_normal_abspath_result" -+func_normal_abspath () -+{ -+ # Start from root dir and reassemble the path. -+ func_normal_abspath_result= -+ func_normal_abspath_tpath=$1 -+ func_normal_abspath_altnamespace= -+ case $func_normal_abspath_tpath in -+ "") -+ # Empty path, that just means $cwd. -+ func_stripname '' '/' "`pwd`" -+ func_normal_abspath_result=$func_stripname_result -+ return -+ ;; -+ # The next three entries are used to spot a run of precisely -+ # two leading slashes without using negated character classes; -+ # we take advantage of case's first-match behaviour. -+ ///*) -+ # Unusual form of absolute path, do nothing. -+ ;; -+ //*) -+ # Not necessarily an ordinary path; POSIX reserves leading '//' -+ # and for example Cygwin uses it to access remote file shares -+ # over CIFS/SMB, so we conserve a leading double slash if found. -+ func_normal_abspath_altnamespace=/ -+ ;; -+ /*) -+ # Absolute path, do nothing. -+ ;; -+ *) -+ # Relative path, prepend $cwd. -+ func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath -+ ;; -+ esac -+ # Cancel out all the simple stuff to save iterations. We also want -+ # the path to end with a slash for ease of parsing, so make sure -+ # there is one (and only one) here. -+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -+ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` -+ while :; do -+ # Processed it all yet? -+ if test "$func_normal_abspath_tpath" = / ; then -+ # If we ascended to the root using ".." the result may be empty now. -+ if test -z "$func_normal_abspath_result" ; then -+ func_normal_abspath_result=/ -+ fi -+ break -+ fi -+ func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -+ -e "$pathcar"` -+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -+ -e "$pathcdr"` -+ # Figure out what to do with it -+ case $func_normal_abspath_tcomponent in -+ "") -+ # Trailing empty path component, ignore it. -+ ;; -+ ..) -+ # Parent dir; strip last assembled component from result. -+ func_dirname "$func_normal_abspath_result" -+ func_normal_abspath_result=$func_dirname_result -+ ;; -+ *) -+ # Actual path component, append it. -+ func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent -+ ;; -+ esac -+ done -+ # Restore leading double-slash if one was found on entry. -+ func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -+} -+ -+# func_relative_path SRCDIR DSTDIR -+# generates a relative path from SRCDIR to DSTDIR, with a trailing -+# slash if non-empty, suitable for immediately appending a filename -+# without needing to append a separator. -+# value returned in "$func_relative_path_result" -+func_relative_path () -+{ -+ func_relative_path_result= -+ func_normal_abspath "$1" -+ func_relative_path_tlibdir=$func_normal_abspath_result -+ func_normal_abspath "$2" -+ func_relative_path_tbindir=$func_normal_abspath_result -+ -+ # Ascend the tree starting from libdir -+ while :; do -+ # check if we have found a prefix of bindir -+ case $func_relative_path_tbindir in -+ $func_relative_path_tlibdir) -+ # found an exact match -+ func_relative_path_tcancelled= -+ break -+ ;; -+ $func_relative_path_tlibdir*) -+ # found a matching prefix -+ func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" -+ func_relative_path_tcancelled=$func_stripname_result -+ if test -z "$func_relative_path_result"; then -+ func_relative_path_result=. -+ fi -+ break -+ ;; -+ *) -+ func_dirname $func_relative_path_tlibdir -+ func_relative_path_tlibdir=${func_dirname_result} -+ if test "x$func_relative_path_tlibdir" = x ; then -+ # Have to descend all the way to the root! -+ func_relative_path_result=../$func_relative_path_result -+ func_relative_path_tcancelled=$func_relative_path_tbindir -+ break -+ fi -+ func_relative_path_result=../$func_relative_path_result -+ ;; -+ esac -+ done -+ -+ # Now calculate path; take care to avoid doubling-up slashes. -+ func_stripname '' '/' "$func_relative_path_result" -+ func_relative_path_result=$func_stripname_result -+ func_stripname '/' '/' "$func_relative_path_tcancelled" -+ if test "x$func_stripname_result" != x ; then -+ func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi -- func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` --} -- --# Generated shell functions inserted here. -- --# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh --# is ksh but when the shell is invoked as "sh" and the current value of --# the _XPG environment variable is not equal to 1 (one), the special --# positional parameter $0, within a function call, is the name of the --# function. --progpath="$0" -+ -+ # Normalisation. If bindir is libdir, return empty string, -+ # else relative path ending with a slash; either way, target -+ # file name can be directly appended. -+ if test ! -z "$func_relative_path_result"; then -+ func_stripname './' '' "$func_relative_path_result/" -+ func_relative_path_result=$func_stripname_result -+ fi -+} - - # The name of this program: --# In the unlikely event $progname began with a '-', it would play havoc with --# func_echo (imagine progname=-n), so we prepend ./ in that case: - func_dirname_and_basename "$progpath" - progname=$func_basename_result --case $progname in -- -*) progname=./$progname ;; --esac - - # Make sure we have an absolute path for reexecution: - case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" -- IFS=: -+ IFS=${PATH_SEPARATOR-:} - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -@@ -210,16 +397,25 @@ esac - # Sed substitution that helps us do robust quoting. It backslashifies - # metacharacters that are still active within double-quoted strings. - Xsed="${SED}"' -e 1s/^X//' - sed_quote_subst='s/\([`"$\\]\)/\\\1/g' - - # Same as above, but do not quote variable references. - double_quote_subst='s/\(["`\\]\)/\\\1/g' - -+# Sed substitution that turns a string into a regex matching for the -+# string literally. -+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' -+ -+# Sed substitution that converts a w32 file name or path -+# which contains forward slashes, into one that contains -+# (escaped) backslashes. A very naive implementation. -+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -+ - # Re-`\' parameter expansions in output of double_quote_subst that were - # `\'-ed in input to the same. If an odd number of `\' preceded a '$' - # in input to double_quote_subst, that '$' was protected from expansion. - # Since each input `\' is now two `\'s, look for any number of runs of - # four `\'s followed by two `\'s and then a '$'. `\' that '$'. - bs='\\' - bs2='\\\\' - bs4='\\\\\\\\' -@@ -238,43 +434,50 @@ opt_quiet=false - opt_verbose=false - opt_warning=: - - # func_echo arg... - # Echo program name prefixed message, along with the current mode - # name if it has been set yet. - func_echo () - { -- $ECHO "$progname${mode+: }$mode: $*" -+ $ECHO "$progname: ${opt_mode+$opt_mode: }$*" - } - - # func_verbose arg... - # Echo program name prefixed message in verbose mode only. - func_verbose () - { - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : - } - -+# func_echo_all arg... -+# Invoke $ECHO with all args, space-separated. -+func_echo_all () -+{ -+ $ECHO "$*" -+} -+ - # func_error arg... - # Echo program name prefixed message to standard error. - func_error () - { -- $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 -+ $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 - } - - # func_warning arg... - # Echo program name prefixed warning message to standard error. - func_warning () - { -- $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 -+ $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 - - # bash bug again: - : - } - - # func_fatal_error arg... - # Echo program name prefixed message to standard error, and exit. - func_fatal_error () -@@ -321,19 +524,19 @@ func_mkdir_p () - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop -- my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` -+ my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done -- my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` -+ my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : -@@ -373,31 +576,31 @@ func_mktempdir () - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - -- $ECHO "X$my_tmpdir" | $Xsed -+ $ECHO "$my_tmpdir" - } - - - # func_quote_for_eval arg - # Aesthetically quote ARG to be evaled later. - # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT - # is double-quoted, suitable for a subsequent eval, whereas - # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters - # which are still active within double quotes backslashified. - func_quote_for_eval () - { - case $1 in - *[\\\`\"\$]*) -- func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; -+ func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. -@@ -414,17 +617,17 @@ func_quote_for_eval () - - # func_quote_for_expand arg - # Aesthetically quote ARG to be evaled later; same as above, - # but do not quote variable references. - func_quote_for_expand () - { - case $1 in - *[\\\`\"]*) -- my_arg=`$ECHO "X$1" | $Xsed \ -+ my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. -@@ -483,131 +686,211 @@ func_show_eval_locale () - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi - } - -- -- -+# func_tr_sh -+# Turn $1 into a string suitable for a shell variable name. -+# Result is stored in $func_tr_sh_result. All characters -+# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -+# if $1 begins with a digit, a '_' is prepended as well. -+func_tr_sh () -+{ -+ case $1 in -+ [0-9]* | *[!a-zA-Z0-9_]*) -+ func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` -+ ;; -+ * ) -+ func_tr_sh_result=$1 -+ ;; -+ esac -+} - - - # func_version - # Echo version message to standard output and exit. - func_version () - { -- $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { -+ $opt_debug -+ -+ $SED -n '/(C)/!b go -+ :more -+ /\./!{ -+ N -+ s/\n# / / -+ b more -+ } -+ :go -+ /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? - } - - # func_usage - # Echo short help message to standard output and exit. - func_usage () - { -- $SED -n '/^# Usage:/,/# -h/ { -+ $opt_debug -+ -+ $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" -- $ECHO -+ echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? - } - --# func_help --# Echo long help message to standard output and exit. -+# func_help [NOEXIT] -+# Echo long help message to standard output and exit, -+# unless 'noexit' is passed as argument. - func_help () - { -+ $opt_debug -+ - $SED -n '/^# Usage:/,/# Report bugs to/ { -+ :print - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ -- s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ -- s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ -+ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ -+ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ - p -- }' < "$progpath" -- exit $? -+ d -+ } -+ /^# .* home page:/b print -+ /^# General help using/b print -+ ' < "$progpath" -+ ret=$? -+ if test -z "$1"; then -+ exit $ret -+ fi - } - - # func_missing_arg argname - # Echo program name prefixed message to standard error and set global - # exit_cmd. - func_missing_arg () - { -- func_error "missing argument for $1" -+ $opt_debug -+ -+ func_error "missing argument for $1." - exit_cmd=exit - } - -+ -+# func_split_short_opt shortopt -+# Set func_split_short_opt_name and func_split_short_opt_arg shell -+# variables after splitting SHORTOPT after the 2nd character. -+func_split_short_opt () -+{ -+ my_sed_short_opt='1s/^\(..\).*$/\1/;q' -+ my_sed_short_rest='1s/^..\(.*\)$/\1/;q' -+ -+ func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` -+ func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` -+} # func_split_short_opt may be replaced by extended shell implementation -+ -+ -+# func_split_long_opt longopt -+# Set func_split_long_opt_name and func_split_long_opt_arg shell -+# variables after splitting LONGOPT at the `=' sign. -+func_split_long_opt () -+{ -+ my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' -+ my_sed_long_arg='1s/^--[^=]*=//' -+ -+ func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` -+ func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` -+} # func_split_long_opt may be replaced by extended shell implementation -+ - exit_cmd=: - - - - - --# Check that we have a working $ECHO. --if test "X$1" = X--no-reexec; then -- # Discard the --no-reexec flag, and continue. -- shift --elif test "X$1" = X--fallback-echo; then -- # Avoid inline document here, it may be left over -- : --elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then -- # Yippee, $ECHO works! -- : --else -- # Restart under the correct shell, and then maybe $ECHO will work. -- exec $SHELL "$progpath" --no-reexec ${1+"$@"} --fi -- --if test "X$1" = X--fallback-echo; then -- # used as fallback echo -- shift -- cat </dev/null || echo $max_cmd_len` -+} # func_len may be replaced by extended shell implementation -+ -+ -+# func_lo2o object -+func_lo2o () -+{ -+ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -+} # func_lo2o may be replaced by extended shell implementation -+ -+ -+# func_xform libobj-or-source -+func_xform () -+{ -+ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -+} # func_xform may be replaced by extended shell implementation -+ -+ - # func_fatal_configuration arg... - # Echo program name prefixed message to standard error, followed by - # a configuration failure hint, and exit. - func_fatal_configuration () - { - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -@@ -631,26 +914,26 @@ func_config () - - exit $? - } - - # func_features - # Display the features supported by this script. - func_features () - { -- $ECHO "host: $host" -+ echo "host: $host" - if test "$build_libtool_libs" = yes; then -- $ECHO "enable shared libraries" -+ echo "enable shared libraries" - else -- $ECHO "disable shared libraries" -+ echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then -- $ECHO "enable static libraries" -+ echo "enable static libraries" - else -- $ECHO "disable static libraries" -+ echo "disable static libraries" - fi - - exit $? - } - - # func_enable_tag tagname - # Verify that TAGNAME is valid, and either flag an error and exit, or - # enable the TAGNAME tag. We also add TAGNAME to the global $taglist -@@ -687,143 +970,16 @@ func_enable_tag () - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac - } - --# Parse options once, thoroughly. This comes as soon as possible in --# the script to make things like `libtool --version' happen quickly. --{ -- -- # Shorthand for --mode=foo, only valid as the first argument -- case $1 in -- clean|clea|cle|cl) -- shift; set dummy --mode clean ${1+"$@"}; shift -- ;; -- compile|compil|compi|comp|com|co|c) -- shift; set dummy --mode compile ${1+"$@"}; shift -- ;; -- execute|execut|execu|exec|exe|ex|e) -- shift; set dummy --mode execute ${1+"$@"}; shift -- ;; -- finish|finis|fini|fin|fi|f) -- shift; set dummy --mode finish ${1+"$@"}; shift -- ;; -- install|instal|insta|inst|ins|in|i) -- shift; set dummy --mode install ${1+"$@"}; shift -- ;; -- link|lin|li|l) -- shift; set dummy --mode link ${1+"$@"}; shift -- ;; -- uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) -- shift; set dummy --mode uninstall ${1+"$@"}; shift -- ;; -- esac -- -- # Parse non-mode specific arguments: -- while test "$#" -gt 0; do -- opt="$1" -- shift -- -- case $opt in -- --config) func_config ;; -- -- --debug) preserve_args="$preserve_args $opt" -- func_echo "enabling shell trace mode" -- opt_debug='set -x' -- $opt_debug -- ;; -- -- -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break -- execute_dlfiles="$execute_dlfiles $1" -- shift -- ;; -- -- --dry-run | -n) opt_dry_run=: ;; -- --features) func_features ;; -- --finish) mode="finish" ;; -- -- --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break -- case $1 in -- # Valid mode arguments: -- clean) ;; -- compile) ;; -- execute) ;; -- finish) ;; -- install) ;; -- link) ;; -- relink) ;; -- uninstall) ;; -- -- # Catch anything else as an error -- *) func_error "invalid argument for $opt" -- exit_cmd=exit -- break -- ;; -- esac -- -- mode="$1" -- shift -- ;; -- -- --preserve-dup-deps) -- opt_duplicate_deps=: ;; -- -- --quiet|--silent) preserve_args="$preserve_args $opt" -- opt_silent=: -- ;; -- -- --verbose| -v) preserve_args="$preserve_args $opt" -- opt_silent=false -- ;; -- -- --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break -- preserve_args="$preserve_args $opt $1" -- func_enable_tag "$1" # tagname is set here -- shift -- ;; -- -- # Separate optargs to long options: -- -dlopen=*|--mode=*|--tag=*) -- func_opt_split "$opt" -- set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} -- shift -- ;; -- -- -\?|-h) func_usage ;; -- --help) opt_help=: ;; -- --version) func_version ;; -- -- -*) func_fatal_help "unrecognized option \`$opt'" ;; -- -- *) nonopt="$opt" -- break -- ;; -- esac -- done -- -- -- case $host in -- *cygwin* | *mingw* | *pw32* | *cegcc*) -- # don't eliminate duplications in $postdeps and $predeps -- opt_duplicate_compiler_generated_deps=: -- ;; -- *) -- opt_duplicate_compiler_generated_deps=$opt_duplicate_deps -- ;; -- esac -- -- # Having warned about all mis-specified options, bail out if -- # anything was wrong. -- $exit_cmd $EXIT_FAILURE --} -- - # func_check_version_match - # Ensure that we are using m4 macros, and libtool script from the same - # release of libtool. - func_check_version_match () - { - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then -@@ -850,48 +1006,229 @@ func_check_version_match () - _LT_EOF - fi - - exit $EXIT_MISMATCH - fi - } - - -+# Shorthand for --mode=foo, only valid as the first argument -+case $1 in -+clean|clea|cle|cl) -+ shift; set dummy --mode clean ${1+"$@"}; shift -+ ;; -+compile|compil|compi|comp|com|co|c) -+ shift; set dummy --mode compile ${1+"$@"}; shift -+ ;; -+execute|execut|execu|exec|exe|ex|e) -+ shift; set dummy --mode execute ${1+"$@"}; shift -+ ;; -+finish|finis|fini|fin|fi|f) -+ shift; set dummy --mode finish ${1+"$@"}; shift -+ ;; -+install|instal|insta|inst|ins|in|i) -+ shift; set dummy --mode install ${1+"$@"}; shift -+ ;; -+link|lin|li|l) -+ shift; set dummy --mode link ${1+"$@"}; shift -+ ;; -+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) -+ shift; set dummy --mode uninstall ${1+"$@"}; shift -+ ;; -+esac -+ -+ -+ -+# Option defaults: -+opt_debug=: -+opt_dry_run=false -+opt_config=false -+opt_preserve_dup_deps=false -+opt_features=false -+opt_finish=false -+opt_help=false -+opt_help_all=false -+opt_silent=: -+opt_warning=: -+opt_verbose=: -+opt_silent=false -+opt_verbose=false -+ -+ -+# Parse options once, thoroughly. This comes as soon as possible in the -+# script to make things like `--version' happen as quickly as we can. -+{ -+ # this just eases exit handling -+ while test $# -gt 0; do -+ opt="$1" -+ shift -+ case $opt in -+ --debug|-x) opt_debug='set -x' -+ func_echo "enabling shell trace mode" -+ $opt_debug -+ ;; -+ --dry-run|--dryrun|-n) -+ opt_dry_run=: -+ ;; -+ --config) -+ opt_config=: -+func_config -+ ;; -+ --dlopen|-dlopen) -+ optarg="$1" -+ opt_dlopen="${opt_dlopen+$opt_dlopen -+}$optarg" -+ shift -+ ;; -+ --preserve-dup-deps) -+ opt_preserve_dup_deps=: -+ ;; -+ --features) -+ opt_features=: -+func_features -+ ;; -+ --finish) -+ opt_finish=: -+set dummy --mode finish ${1+"$@"}; shift -+ ;; -+ --help) -+ opt_help=: -+ ;; -+ --help-all) -+ opt_help_all=: -+opt_help=': help-all' -+ ;; -+ --mode) -+ test $# = 0 && func_missing_arg $opt && break -+ optarg="$1" -+ opt_mode="$optarg" -+case $optarg in -+ # Valid mode arguments: -+ clean|compile|execute|finish|install|link|relink|uninstall) ;; -+ -+ # Catch anything else as an error -+ *) func_error "invalid argument for $opt" -+ exit_cmd=exit -+ break -+ ;; -+esac -+ shift -+ ;; -+ --no-silent|--no-quiet) -+ opt_silent=false -+func_append preserve_args " $opt" -+ ;; -+ --no-warning|--no-warn) -+ opt_warning=false -+func_append preserve_args " $opt" -+ ;; -+ --no-verbose) -+ opt_verbose=false -+func_append preserve_args " $opt" -+ ;; -+ --silent|--quiet) -+ opt_silent=: -+func_append preserve_args " $opt" -+ opt_verbose=false -+ ;; -+ --verbose|-v) -+ opt_verbose=: -+func_append preserve_args " $opt" -+opt_silent=false -+ ;; -+ --tag) -+ test $# = 0 && func_missing_arg $opt && break -+ optarg="$1" -+ opt_tag="$optarg" -+func_append preserve_args " $opt $optarg" -+func_enable_tag "$optarg" -+ shift -+ ;; -+ -+ -\?|-h) func_usage ;; -+ --help) func_help ;; -+ --version) func_version ;; -+ -+ # Separate optargs to long options: -+ --*=*) -+ func_split_long_opt "$opt" -+ set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} -+ shift -+ ;; -+ -+ # Separate non-argument short options: -+ -\?*|-h*|-n*|-v*) -+ func_split_short_opt "$opt" -+ set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} -+ shift -+ ;; -+ -+ --) break ;; -+ -*) func_fatal_help "unrecognized option \`$opt'" ;; -+ *) set dummy "$opt" ${1+"$@"}; shift; break ;; -+ esac -+ done -+ -+ # Validate options: -+ -+ # save first non-option argument -+ if test "$#" -gt 0; then -+ nonopt="$opt" -+ shift -+ fi -+ -+ # preserve --debug -+ test "$opt_debug" = : || func_append preserve_args " --debug" -+ -+ case $host in -+ *cygwin* | *mingw* | *pw32* | *cegcc*) -+ # don't eliminate duplications in $postdeps and $predeps -+ opt_duplicate_compiler_generated_deps=: -+ ;; -+ *) -+ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps -+ ;; -+ esac -+ -+ $opt_help || { -+ # Sanity checks first: -+ func_check_version_match -+ -+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then -+ func_fatal_configuration "not configured to build any kind of library" -+ fi -+ -+ # Darwin sucks -+ eval std_shrext=\"$shrext_cmds\" -+ -+ # Only execute mode is allowed to have -dlopen flags. -+ if test -n "$opt_dlopen" && test "$opt_mode" != execute; then -+ func_error "unrecognized option \`-dlopen'" -+ $ECHO "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # Change the help message to a mode-specific one. -+ generic_help="$help" -+ help="Try \`$progname --help --mode=$opt_mode' for more information." -+ } -+ -+ -+ # Bail if the options were screwed -+ $exit_cmd $EXIT_FAILURE -+} -+ -+ -+ -+ - ## ----------- ## - ## Main. ## - ## ----------- ## - --$opt_help || { -- # Sanity checks first: -- func_check_version_match -- -- if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then -- func_fatal_configuration "not configured to build any kind of library" -- fi -- -- test -z "$mode" && func_fatal_error "error: you must specify a MODE." -- -- -- # Darwin sucks -- eval std_shrext=\"$shrext_cmds\" -- -- -- # Only execute mode is allowed to have -dlopen flags. -- if test -n "$execute_dlfiles" && test "$mode" != execute; then -- func_error "unrecognized option \`-dlopen'" -- $ECHO "$help" 1>&2 -- exit $EXIT_FAILURE -- fi -- -- # Change the help message to a mode-specific one. -- generic_help="$help" -- help="Try \`$progname --help --mode=$mode' for more information." --} -- -- - # func_lalib_p file - # True iff FILE is a libtool `.la' library or `.lo' object file. - # This function is only a basic sanity check; it will hardly flush out - # determined imposters. - func_lalib_p () - { - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ -@@ -945,22 +1282,19 @@ func_ltwrapper_executable_p () - } - - # func_ltwrapper_scriptname file - # Assumes file is an ltwrapper_executable - # uses $file to determine the appropriate filename for a - # temporary ltwrapper_script. - func_ltwrapper_scriptname () - { -- func_ltwrapper_scriptname_result="" -- if func_ltwrapper_executable_p "$1"; then -- func_dirname_and_basename "$1" "" "." -- func_stripname '' '.exe' "$func_basename_result" -- func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" -- fi -+ func_dirname_and_basename "$1" "" "." -+ func_stripname '' '.exe' "$func_basename_result" -+ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" - } - - # func_ltwrapper_p file - # True iff FILE is a libtool wrapper script or wrapper executable - # This function is only a basic sanity check; it will hardly flush out - # determined imposters. - func_ltwrapper_p () - { -@@ -996,50 +1330,85 @@ func_source () - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac - } - - -+# func_resolve_sysroot PATH -+# Replace a leading = in PATH with a sysroot. Store the result into -+# func_resolve_sysroot_result -+func_resolve_sysroot () -+{ -+ func_resolve_sysroot_result=$1 -+ case $func_resolve_sysroot_result in -+ =*) -+ func_stripname '=' '' "$func_resolve_sysroot_result" -+ func_resolve_sysroot_result=$lt_sysroot$func_stripname_result -+ ;; -+ esac -+} -+ -+# func_replace_sysroot PATH -+# If PATH begins with the sysroot, replace it with = and -+# store the result into func_replace_sysroot_result. -+func_replace_sysroot () -+{ -+ case "$lt_sysroot:$1" in -+ ?*:"$lt_sysroot"*) -+ func_stripname "$lt_sysroot" '' "$1" -+ func_replace_sysroot_result="=$func_stripname_result" -+ ;; -+ *) -+ # Including no sysroot. -+ func_replace_sysroot_result=$1 -+ ;; -+ esac -+} -+ - # func_infer_tag arg - # Infer tagged configuration to use if any are available and - # if one wasn't chosen via the "--tag" command line option. - # Only attempt this if the compiler in the base compile - # command doesn't match the default compiler. - # arg is usually of the form 'gcc ...' - func_infer_tag () - { - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do -- func_quote_for_eval "$arg" -- CC_quoted="$CC_quoted $func_quote_for_eval_result" -+ func_append_quoted CC_quoted "$arg" - done -+ CC_expanded=`func_echo_all $CC` -+ CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. -- " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; -+ " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ -+ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. -- func_quote_for_eval "$arg" -- CC_quoted="$CC_quoted $func_quote_for_eval_result" -+ func_append_quoted CC_quoted "$arg" - done -+ CC_expanded=`func_echo_all $CC` -+ CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in -- " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) -+ " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ -+ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi -@@ -1092,16 +1461,496 @@ pic_object=$write_lobj - # Name of the non-PIC object - non_pic_object=$write_oldobj - - EOF - $MV "${write_libobj}T" "${write_libobj}" - } - } - -+ -+################################################## -+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # -+################################################## -+ -+# func_convert_core_file_wine_to_w32 ARG -+# Helper function used by file name conversion functions when $build is *nix, -+# and $host is mingw, cygwin, or some other w32 environment. Relies on a -+# correctly configured wine environment available, with the winepath program -+# in $build's $PATH. -+# -+# ARG is the $build file name to be converted to w32 format. -+# Result is available in $func_convert_core_file_wine_to_w32_result, and will -+# be empty on error (or when ARG is empty) -+func_convert_core_file_wine_to_w32 () -+{ -+ $opt_debug -+ func_convert_core_file_wine_to_w32_result="$1" -+ if test -n "$1"; then -+ # Unfortunately, winepath does not exit with a non-zero error code, so we -+ # are forced to check the contents of stdout. On the other hand, if the -+ # command is not found, the shell will set an exit code of 127 and print -+ # *an error message* to stdout. So we must check for both error code of -+ # zero AND non-empty stdout, which explains the odd construction: -+ func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` -+ if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then -+ func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | -+ $SED -e "$lt_sed_naive_backslashify"` -+ else -+ func_convert_core_file_wine_to_w32_result= -+ fi -+ fi -+} -+# end: func_convert_core_file_wine_to_w32 -+ -+ -+# func_convert_core_path_wine_to_w32 ARG -+# Helper function used by path conversion functions when $build is *nix, and -+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -+# configured wine environment available, with the winepath program in $build's -+# $PATH. Assumes ARG has no leading or trailing path separator characters. -+# -+# ARG is path to be converted from $build format to win32. -+# Result is available in $func_convert_core_path_wine_to_w32_result. -+# Unconvertible file (directory) names in ARG are skipped; if no directory names -+# are convertible, then the result may be empty. -+func_convert_core_path_wine_to_w32 () -+{ -+ $opt_debug -+ # unfortunately, winepath doesn't convert paths, only file names -+ func_convert_core_path_wine_to_w32_result="" -+ if test -n "$1"; then -+ oldIFS=$IFS -+ IFS=: -+ for func_convert_core_path_wine_to_w32_f in $1; do -+ IFS=$oldIFS -+ func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" -+ if test -n "$func_convert_core_file_wine_to_w32_result" ; then -+ if test -z "$func_convert_core_path_wine_to_w32_result"; then -+ func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" -+ else -+ func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" -+ fi -+ fi -+ done -+ IFS=$oldIFS -+ fi -+} -+# end: func_convert_core_path_wine_to_w32 -+ -+ -+# func_cygpath ARGS... -+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -+# (2), returns the Cygwin file name or path in func_cygpath_result (input -+# file name or path is assumed to be in w32 format, as previously converted -+# from $build's *nix or MSYS format). In case (3), returns the w32 file name -+# or path in func_cygpath_result (input file name or path is assumed to be in -+# Cygwin format). Returns an empty string on error. -+# -+# ARGS are passed to cygpath, with the last one being the file name or path to -+# be converted. -+# -+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -+# environment variable; do not put it in $PATH. -+func_cygpath () -+{ -+ $opt_debug -+ if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then -+ func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` -+ if test "$?" -ne 0; then -+ # on failure, ensure result is empty -+ func_cygpath_result= -+ fi -+ else -+ func_cygpath_result= -+ func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" -+ fi -+} -+#end: func_cygpath -+ -+ -+# func_convert_core_msys_to_w32 ARG -+# Convert file name or path ARG from MSYS format to w32 format. Return -+# result in func_convert_core_msys_to_w32_result. -+func_convert_core_msys_to_w32 () -+{ -+ $opt_debug -+ # awkward: cmd appends spaces to result -+ func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | -+ $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` -+} -+#end: func_convert_core_msys_to_w32 -+ -+ -+# func_convert_file_check ARG1 ARG2 -+# Verify that ARG1 (a file name in $build format) was converted to $host -+# format in ARG2. Otherwise, emit an error message, but continue (resetting -+# func_to_host_file_result to ARG1). -+func_convert_file_check () -+{ -+ $opt_debug -+ if test -z "$2" && test -n "$1" ; then -+ func_error "Could not determine host file name corresponding to" -+ func_error " \`$1'" -+ func_error "Continuing, but uninstalled executables may not work." -+ # Fallback: -+ func_to_host_file_result="$1" -+ fi -+} -+# end func_convert_file_check -+ -+ -+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -+# Verify that FROM_PATH (a path in $build format) was converted to $host -+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -+# func_to_host_file_result to a simplistic fallback value (see below). -+func_convert_path_check () -+{ -+ $opt_debug -+ if test -z "$4" && test -n "$3"; then -+ func_error "Could not determine the host path corresponding to" -+ func_error " \`$3'" -+ func_error "Continuing, but uninstalled executables may not work." -+ # Fallback. This is a deliberately simplistic "conversion" and -+ # should not be "improved". See libtool.info. -+ if test "x$1" != "x$2"; then -+ lt_replace_pathsep_chars="s|$1|$2|g" -+ func_to_host_path_result=`echo "$3" | -+ $SED -e "$lt_replace_pathsep_chars"` -+ else -+ func_to_host_path_result="$3" -+ fi -+ fi -+} -+# end func_convert_path_check -+ -+ -+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -+# and appending REPL if ORIG matches BACKPAT. -+func_convert_path_front_back_pathsep () -+{ -+ $opt_debug -+ case $4 in -+ $1 ) func_to_host_path_result="$3$func_to_host_path_result" -+ ;; -+ esac -+ case $4 in -+ $2 ) func_append func_to_host_path_result "$3" -+ ;; -+ esac -+} -+# end func_convert_path_front_back_pathsep -+ -+ -+################################################## -+# $build to $host FILE NAME CONVERSION FUNCTIONS # -+################################################## -+# invoked via `$to_host_file_cmd ARG' -+# -+# In each case, ARG is the path to be converted from $build to $host format. -+# Result will be available in $func_to_host_file_result. -+ -+ -+# func_to_host_file ARG -+# Converts the file name ARG from $build format to $host format. Return result -+# in func_to_host_file_result. -+func_to_host_file () -+{ -+ $opt_debug -+ $to_host_file_cmd "$1" -+} -+# end func_to_host_file -+ -+ -+# func_to_tool_file ARG LAZY -+# converts the file name ARG from $build format to toolchain format. Return -+# result in func_to_tool_file_result. If the conversion in use is listed -+# in (the comma separated) LAZY, no conversion takes place. -+func_to_tool_file () -+{ -+ $opt_debug -+ case ,$2, in -+ *,"$to_tool_file_cmd",*) -+ func_to_tool_file_result=$1 -+ ;; -+ *) -+ $to_tool_file_cmd "$1" -+ func_to_tool_file_result=$func_to_host_file_result -+ ;; -+ esac -+} -+# end func_to_tool_file -+ -+ -+# func_convert_file_noop ARG -+# Copy ARG to func_to_host_file_result. -+func_convert_file_noop () -+{ -+ func_to_host_file_result="$1" -+} -+# end func_convert_file_noop -+ -+ -+# func_convert_file_msys_to_w32 ARG -+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -+# conversion to w32 is not available inside the cwrapper. Returns result in -+# func_to_host_file_result. -+func_convert_file_msys_to_w32 () -+{ -+ $opt_debug -+ func_to_host_file_result="$1" -+ if test -n "$1"; then -+ func_convert_core_msys_to_w32 "$1" -+ func_to_host_file_result="$func_convert_core_msys_to_w32_result" -+ fi -+ func_convert_file_check "$1" "$func_to_host_file_result" -+} -+# end func_convert_file_msys_to_w32 -+ -+ -+# func_convert_file_cygwin_to_w32 ARG -+# Convert file name ARG from Cygwin to w32 format. Returns result in -+# func_to_host_file_result. -+func_convert_file_cygwin_to_w32 () -+{ -+ $opt_debug -+ func_to_host_file_result="$1" -+ if test -n "$1"; then -+ # because $build is cygwin, we call "the" cygpath in $PATH; no need to use -+ # LT_CYGPATH in this case. -+ func_to_host_file_result=`cygpath -m "$1"` -+ fi -+ func_convert_file_check "$1" "$func_to_host_file_result" -+} -+# end func_convert_file_cygwin_to_w32 -+ -+ -+# func_convert_file_nix_to_w32 ARG -+# Convert file name ARG from *nix to w32 format. Requires a wine environment -+# and a working winepath. Returns result in func_to_host_file_result. -+func_convert_file_nix_to_w32 () -+{ -+ $opt_debug -+ func_to_host_file_result="$1" -+ if test -n "$1"; then -+ func_convert_core_file_wine_to_w32 "$1" -+ func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" -+ fi -+ func_convert_file_check "$1" "$func_to_host_file_result" -+} -+# end func_convert_file_nix_to_w32 -+ -+ -+# func_convert_file_msys_to_cygwin ARG -+# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -+# Returns result in func_to_host_file_result. -+func_convert_file_msys_to_cygwin () -+{ -+ $opt_debug -+ func_to_host_file_result="$1" -+ if test -n "$1"; then -+ func_convert_core_msys_to_w32 "$1" -+ func_cygpath -u "$func_convert_core_msys_to_w32_result" -+ func_to_host_file_result="$func_cygpath_result" -+ fi -+ func_convert_file_check "$1" "$func_to_host_file_result" -+} -+# end func_convert_file_msys_to_cygwin -+ -+ -+# func_convert_file_nix_to_cygwin ARG -+# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -+# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -+# in func_to_host_file_result. -+func_convert_file_nix_to_cygwin () -+{ -+ $opt_debug -+ func_to_host_file_result="$1" -+ if test -n "$1"; then -+ # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. -+ func_convert_core_file_wine_to_w32 "$1" -+ func_cygpath -u "$func_convert_core_file_wine_to_w32_result" -+ func_to_host_file_result="$func_cygpath_result" -+ fi -+ func_convert_file_check "$1" "$func_to_host_file_result" -+} -+# end func_convert_file_nix_to_cygwin -+ -+ -+############################################# -+# $build to $host PATH CONVERSION FUNCTIONS # -+############################################# -+# invoked via `$to_host_path_cmd ARG' -+# -+# In each case, ARG is the path to be converted from $build to $host format. -+# The result will be available in $func_to_host_path_result. -+# -+# Path separators are also converted from $build format to $host format. If -+# ARG begins or ends with a path separator character, it is preserved (but -+# converted to $host format) on output. -+# -+# All path conversion functions are named using the following convention: -+# file name conversion function : func_convert_file_X_to_Y () -+# path conversion function : func_convert_path_X_to_Y () -+# where, for any given $build/$host combination the 'X_to_Y' value is the -+# same. If conversion functions are added for new $build/$host combinations, -+# the two new functions must follow this pattern, or func_init_to_host_path_cmd -+# will break. -+ -+ -+# func_init_to_host_path_cmd -+# Ensures that function "pointer" variable $to_host_path_cmd is set to the -+# appropriate value, based on the value of $to_host_file_cmd. -+to_host_path_cmd= -+func_init_to_host_path_cmd () -+{ -+ $opt_debug -+ if test -z "$to_host_path_cmd"; then -+ func_stripname 'func_convert_file_' '' "$to_host_file_cmd" -+ to_host_path_cmd="func_convert_path_${func_stripname_result}" -+ fi -+} -+ -+ -+# func_to_host_path ARG -+# Converts the path ARG from $build format to $host format. Return result -+# in func_to_host_path_result. -+func_to_host_path () -+{ -+ $opt_debug -+ func_init_to_host_path_cmd -+ $to_host_path_cmd "$1" -+} -+# end func_to_host_path -+ -+ -+# func_convert_path_noop ARG -+# Copy ARG to func_to_host_path_result. -+func_convert_path_noop () -+{ -+ func_to_host_path_result="$1" -+} -+# end func_convert_path_noop -+ -+ -+# func_convert_path_msys_to_w32 ARG -+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -+# conversion to w32 is not available inside the cwrapper. Returns result in -+# func_to_host_path_result. -+func_convert_path_msys_to_w32 () -+{ -+ $opt_debug -+ func_to_host_path_result="$1" -+ if test -n "$1"; then -+ # Remove leading and trailing path separator characters from ARG. MSYS -+ # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; -+ # and winepath ignores them completely. -+ func_stripname : : "$1" -+ func_to_host_path_tmp1=$func_stripname_result -+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" -+ func_to_host_path_result="$func_convert_core_msys_to_w32_result" -+ func_convert_path_check : ";" \ -+ "$func_to_host_path_tmp1" "$func_to_host_path_result" -+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" -+ fi -+} -+# end func_convert_path_msys_to_w32 -+ -+ -+# func_convert_path_cygwin_to_w32 ARG -+# Convert path ARG from Cygwin to w32 format. Returns result in -+# func_to_host_file_result. -+func_convert_path_cygwin_to_w32 () -+{ -+ $opt_debug -+ func_to_host_path_result="$1" -+ if test -n "$1"; then -+ # See func_convert_path_msys_to_w32: -+ func_stripname : : "$1" -+ func_to_host_path_tmp1=$func_stripname_result -+ func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` -+ func_convert_path_check : ";" \ -+ "$func_to_host_path_tmp1" "$func_to_host_path_result" -+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" -+ fi -+} -+# end func_convert_path_cygwin_to_w32 -+ -+ -+# func_convert_path_nix_to_w32 ARG -+# Convert path ARG from *nix to w32 format. Requires a wine environment and -+# a working winepath. Returns result in func_to_host_file_result. -+func_convert_path_nix_to_w32 () -+{ -+ $opt_debug -+ func_to_host_path_result="$1" -+ if test -n "$1"; then -+ # See func_convert_path_msys_to_w32: -+ func_stripname : : "$1" -+ func_to_host_path_tmp1=$func_stripname_result -+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" -+ func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" -+ func_convert_path_check : ";" \ -+ "$func_to_host_path_tmp1" "$func_to_host_path_result" -+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" -+ fi -+} -+# end func_convert_path_nix_to_w32 -+ -+ -+# func_convert_path_msys_to_cygwin ARG -+# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -+# Returns result in func_to_host_file_result. -+func_convert_path_msys_to_cygwin () -+{ -+ $opt_debug -+ func_to_host_path_result="$1" -+ if test -n "$1"; then -+ # See func_convert_path_msys_to_w32: -+ func_stripname : : "$1" -+ func_to_host_path_tmp1=$func_stripname_result -+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" -+ func_cygpath -u -p "$func_convert_core_msys_to_w32_result" -+ func_to_host_path_result="$func_cygpath_result" -+ func_convert_path_check : : \ -+ "$func_to_host_path_tmp1" "$func_to_host_path_result" -+ func_convert_path_front_back_pathsep ":*" "*:" : "$1" -+ fi -+} -+# end func_convert_path_msys_to_cygwin -+ -+ -+# func_convert_path_nix_to_cygwin ARG -+# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -+# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -+# func_to_host_file_result. -+func_convert_path_nix_to_cygwin () -+{ -+ $opt_debug -+ func_to_host_path_result="$1" -+ if test -n "$1"; then -+ # Remove leading and trailing path separator characters from -+ # ARG. msys behavior is inconsistent here, cygpath turns them -+ # into '.;' and ';.', and winepath ignores them completely. -+ func_stripname : : "$1" -+ func_to_host_path_tmp1=$func_stripname_result -+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" -+ func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" -+ func_to_host_path_result="$func_cygpath_result" -+ func_convert_path_check : : \ -+ "$func_to_host_path_tmp1" "$func_to_host_path_result" -+ func_convert_path_front_back_pathsep ":*" "*:" : "$1" -+ fi -+} -+# end func_convert_path_nix_to_cygwin -+ -+ - # func_mode_compile arg... - func_mode_compile () - { - $opt_debug - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes -@@ -1132,22 +1981,22 @@ func_mode_compile () - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) -- pie_flag="$pie_flag $arg" -+ func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) -- later="$later $arg" -+ func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - -@@ -1158,42 +2007,40 @@ func_mode_compile () - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" -- func_quote_for_eval "$arg" -- lastarg="$lastarg $func_quote_for_eval_result" -+ func_append_quoted lastarg "$arg" - done - IFS="$save_ifs" - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. -- base_compile="$base_compile $lastarg" -+ func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. -- func_quote_for_eval "$lastarg" -- base_compile="$base_compile $func_quote_for_eval_result" -+ func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with \`-o'" -@@ -1208,17 +2055,17 @@ func_mode_compile () - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ -- *.[fF][09]? | *.for | *.java | *.obj | *.sx) -+ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) -@@ -1283,17 +2130,17 @@ func_mode_compile () - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then -- output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} -+ output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed -@@ -1314,27 +2161,26 @@ temporary object file, and libtool could - your compiler does not support \`-c' and \`-o' together. If you - repeat this compilation, it may succeed, by chance, but you had better - avoid parallel builds (make -j) in this platform, or get a better - compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi -- removelist="$removelist $output_obj" -+ func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist -- removelist="$removelist $lockfile" -+ func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - -- if test -n "$fix_srcfile_path"; then -- eval srcfile=\"$fix_srcfile_path\" -- fi -+ func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 -+ srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - -@@ -1344,17 +2190,17 @@ compiler." - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir -- command="$command -o $lobj" -+ func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -@@ -1391,21 +2237,21 @@ compiler." - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then -- command="$command -o $obj" -+ func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. -- command="$command$suppress_output" -+ func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ - *** ERROR, $lockfile contains: - `cat $lockfile 2>/dev/null` -@@ -1440,23 +2286,23 @@ compiler." - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS - } - - $opt_help || { --test "$mode" = compile && func_mode_compile ${1+"$@"} -+ test "$opt_mode" = compile && func_mode_compile ${1+"$@"} - } - - func_mode_help () - { - # We need to display help for each of the modes. -- case $mode in -+ case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -@@ -1477,20 +2323,21 @@ with it are deleted. Otherwise, only FIL - "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - - Compile a source file into a libtool library object. - - This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes -- -prefer-pic try to building PIC objects only -- -prefer-non-pic try to building non-PIC objects only -+ -prefer-pic try to build PIC objects only -+ -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking -+ -Wc,FLAG pass FLAG directly to the compiler - - COMPILE-COMMAND is a command to be used in creating a \`standard' object file - from the given SOURCEFILE. - - The output file name is determined by removing the directory component from - SOURCEFILE, then substituting the C source code suffix \`.c' with the - library object suffix, \`.lo'." - ;; -@@ -1533,17 +2380,17 @@ the \`--dry-run' option if you just want - - Install executables or libraries. - - INSTALL-COMMAND is the installation command. The first component should be - either the \`install' or \`cp' program. - - The following components of INSTALL-COMMAND are treated specially: - -- -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation -+ -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - - The rest of the components are interpreted as arguments to that command (only - BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ - "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... -@@ -1553,16 +2400,18 @@ create an executable program. - - LINK-COMMAND is a command using the C compiler that you would use to create - a program from several object files. - - The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible -+ -bindir BINDIR specify path to binaries directory (for systems where -+ libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries -@@ -1581,16 +2430,21 @@ The following components of LINK-COMMAND - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface -+ -Wc,FLAG -+ -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -+ -Wl,FLAG -+ -Xlinker FLAG pass linker-specific FLAG directly to the linker -+ -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - - All other options (arguments beginning with \`-') are ignored. - - Every other argument is treated as a filename. Files ending in \`.la' are - treated as uninstalled libtool libraries, other files are standard or library - object files. - - If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -@@ -1614,47 +2468,76 @@ RM is the name of the program to use to - (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed - to RM. - - If FILE is a libtool library, all the files associated with it are deleted. - Otherwise, only FILE itself is deleted using RM." - ;; - - *) -- func_fatal_help "invalid operation mode \`$mode'" -+ func_fatal_help "invalid operation mode \`$opt_mode'" - ;; - esac - -- $ECHO -+ echo - $ECHO "Try \`$progname --help' for more information about other modes." -- -- exit $? --} -- -- # Now that we've collected a possible --mode arg, show help if necessary -- $opt_help && func_mode_help -+} -+ -+# Now that we've collected a possible --mode arg, show help if necessary -+if $opt_help; then -+ if test "$opt_help" = :; then -+ func_mode_help -+ else -+ { -+ func_help noexit -+ for opt_mode in compile link execute install finish uninstall clean; do -+ func_mode_help -+ done -+ } | sed -n '1p; 2,$s/^Usage:/ or: /p' -+ { -+ func_help noexit -+ for opt_mode in compile link execute install finish uninstall clean; do -+ echo -+ func_mode_help -+ done -+ } | -+ sed '1d -+ /^When reporting/,/^Report/{ -+ H -+ d -+ } -+ $x -+ /information about other modes/d -+ /more detailed .*MODE/d -+ s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' -+ fi -+ exit $? -+fi - - - # func_mode_execute arg... - func_mode_execute () - { - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. -- for file in $execute_dlfiles; do -+ for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "\`$file' is not a file" - - dir= - case $file in - *.la) -+ func_resolve_sysroot "$file" -+ file=$func_resolve_sysroot_result -+ - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" -@@ -1666,17 +2549,17 @@ func_mode_execute () - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then -- dir="$dir/$objdir" -+ func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) -@@ -1707,34 +2590,33 @@ func_mode_execute () - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in -- -*) ;; -+ -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). -- func_quote_for_eval "$file" -- args="$args $func_quote_for_eval_result" -+ func_append_quoted args "$file" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - -@@ -1749,185 +2631,245 @@ func_mode_execute () - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" -- $ECHO "export $shlibpath_var" -+ echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi - } - --test "$mode" = execute && func_mode_execute ${1+"$@"} -+test "$opt_mode" = execute && func_mode_execute ${1+"$@"} - - - # func_mode_finish arg... - func_mode_finish () - { - $opt_debug -- libdirs="$nonopt" -+ libs= -+ libdirs= - admincmds= - -+ for opt in "$nonopt" ${1+"$@"} -+ do -+ if test -d "$opt"; then -+ func_append libdirs " $opt" -+ -+ elif test -f "$opt"; then -+ if func_lalib_unsafe_p "$opt"; then -+ func_append libs " $opt" -+ else -+ func_warning "\`$opt' is not a valid libtool archive" -+ fi -+ -+ else -+ func_fatal_error "invalid argument \`$opt'" -+ fi -+ done -+ -+ if test -n "$libs"; then -+ if test -n "$lt_sysroot"; then -+ sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` -+ sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" -+ else -+ sysroot_cmd= -+ fi -+ -+ # Remove sysroot references -+ if $opt_dry_run; then -+ for lib in $libs; do -+ echo "removing references to $lt_sysroot and \`=' prefixes from $lib" -+ done -+ else -+ tmpdir=`func_mktempdir` -+ for lib in $libs; do -+ sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ -+ > $tmpdir/tmp-la -+ mv -f $tmpdir/tmp-la $lib -+ done -+ ${RM}r "$tmpdir" -+ fi -+ fi -+ - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then -- for dir -- do -- libdirs="$libdirs $dir" -- done -- - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds - '"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" -- $opt_dry_run || eval "$cmds" || admincmds="$admincmds -+ $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - -- $ECHO "X----------------------------------------------------------------------" | $Xsed -- $ECHO "Libraries have been installed in:" -- for libdir in $libdirs; do -- $ECHO " $libdir" -- done -- $ECHO -- $ECHO "If you ever happen to want to link against installed libraries" -- $ECHO "in a given directory, LIBDIR, you must either use libtool, and" -- $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" -- $ECHO "flag during linking and do at least one of the following:" -- if test -n "$shlibpath_var"; then -- $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" -- $ECHO " during execution" -+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then -+ echo "----------------------------------------------------------------------" -+ echo "Libraries have been installed in:" -+ for libdir in $libdirs; do -+ $ECHO " $libdir" -+ done -+ echo -+ echo "If you ever happen to want to link against installed libraries" -+ echo "in a given directory, LIBDIR, you must either use libtool, and" -+ echo "specify the full pathname of the library, or use the \`-LLIBDIR'" -+ echo "flag during linking and do at least one of the following:" -+ if test -n "$shlibpath_var"; then -+ echo " - add LIBDIR to the \`$shlibpath_var' environment variable" -+ echo " during execution" -+ fi -+ if test -n "$runpath_var"; then -+ echo " - add LIBDIR to the \`$runpath_var' environment variable" -+ echo " during linking" -+ fi -+ if test -n "$hardcode_libdir_flag_spec"; then -+ libdir=LIBDIR -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ -+ $ECHO " - use the \`$flag' linker flag" -+ fi -+ if test -n "$admincmds"; then -+ $ECHO " - have your system administrator run these commands:$admincmds" -+ fi -+ if test -f /etc/ld.so.conf; then -+ echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" -+ fi -+ echo -+ -+ echo "See any operating system documentation about shared libraries for" -+ case $host in -+ solaris2.[6789]|solaris2.1[0-9]) -+ echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" -+ echo "pages." -+ ;; -+ *) -+ echo "more information, such as the ld(1) and ld.so(8) manual pages." -+ ;; -+ esac -+ echo "----------------------------------------------------------------------" - fi -- if test -n "$runpath_var"; then -- $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" -- $ECHO " during linking" -- fi -- if test -n "$hardcode_libdir_flag_spec"; then -- libdir=LIBDIR -- eval flag=\"$hardcode_libdir_flag_spec\" -- -- $ECHO " - use the \`$flag' linker flag" -- fi -- if test -n "$admincmds"; then -- $ECHO " - have your system administrator run these commands:$admincmds" -- fi -- if test -f /etc/ld.so.conf; then -- $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" -- fi -- $ECHO -- -- $ECHO "See any operating system documentation about shared libraries for" -- case $host in -- solaris2.[6789]|solaris2.1[0-9]) -- $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" -- $ECHO "pages." -- ;; -- *) -- $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." -- ;; -- esac -- $ECHO "X----------------------------------------------------------------------" | $Xsed - exit $EXIT_SUCCESS - } - --test "$mode" = finish && func_mode_finish ${1+"$@"} -+test "$opt_mode" = finish && func_mode_finish ${1+"$@"} - - - # func_mode_install arg... - func_mode_install () - { - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. -- $ECHO "X$nonopt" | $GREP shtool >/dev/null; then -+ case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" -- install_prog="$install_prog$func_quote_for_eval_result" -+ func_append install_prog "$func_quote_for_eval_result" -+ install_shared_prog=$install_prog -+ case " $install_prog " in -+ *[\\\ /]cp\ *) install_cp=: ;; -+ *) install_cp=false ;; -+ esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= -+ no_mode=: - for arg - do -+ arg2= - if test -n "$dest"; then -- files="$files $dest" -+ func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) -- case " $install_prog " in -- *[\\\ /]cp\ *) ;; -- *) prev=$arg ;; -- esac -+ if $install_cp; then :; else -+ prev=$arg -+ fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then -+ if test "x$prev" = x-m && test -n "$install_override_mode"; then -+ arg2=$install_override_mode -+ no_mode=false -+ fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" -- install_prog="$install_prog $func_quote_for_eval_result" -+ func_append install_prog " $func_quote_for_eval_result" -+ if test -n "$arg2"; then -+ func_quote_for_eval "$arg2" -+ fi -+ func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" - -+ if test -n "$install_override_mode" && $no_mode; then -+ if $install_cp; then :; else -+ func_quote_for_eval "$install_override_mode" -+ func_append install_shared_prog " -m $func_quote_for_eval_result" -+ fi -+ fi -+ - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - -@@ -1972,65 +2914,68 @@ func_mode_install () - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. -- staticlibs="$staticlibs $file" -+ func_append staticlibs " $file" - ;; - - *.la) -+ func_resolve_sysroot "$file" -+ file=$func_resolve_sysroot_result -+ - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; -- *) current_libdirs="$current_libdirs $libdir" ;; -+ *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; -- *) future_libdirs="$future_libdirs $libdir" ;; -+ *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" -- dir="$dir$objdir" -+ func_append dir "$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. -- inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` -+ inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. -- relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` -+ relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else -- relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` -+ relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. -@@ -2038,17 +2983,17 @@ func_mode_install () - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. -- func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ -+ func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; -@@ -2078,17 +3023,17 @@ func_mode_install () - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. -- test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" -+ test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" -@@ -2178,17 +3123,17 @@ func_mode_install () - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi -- libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test -+ libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no - fi - done - - relink_command= - func_source "$wrapper" -@@ -2197,17 +3142,17 @@ func_mode_install () - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. -- relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` -+ relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" -@@ -2216,17 +3161,17 @@ func_mode_install () - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. -- file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` -+ file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in -@@ -2252,21 +3197,23 @@ func_mode_install () - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # Set up the ranlib parameters. - oldlib="$destdir/$name" -+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 -+ tool_oldlib=$func_to_tool_file_result - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then -- func_show_eval "$old_striplib $oldlib" 'exit $?' -+ func_show_eval "$old_striplib $tool_oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" -@@ -2275,17 +3222,17 @@ func_mode_install () - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi - } - --test "$mode" = install && func_mode_install ${1+"$@"} -+test "$opt_mode" = install && func_mode_install ${1+"$@"} - - - # func_generate_dlsyms outputname originator pic_p - # Extract symbols from dlprefiles and create ${outputname}S.o with - # a dlpreopen symbol table. - func_generate_dlsyms () - { - $opt_debug -@@ -2318,29 +3265,46 @@ func_generate_dlsyms () - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ - /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ - /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - - #ifdef __cplusplus - extern \"C\" { - #endif - -+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -+#endif -+ -+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -+/* DATA imports from DLLs on WIN32 con't be const, because runtime -+ relocations are performed -- see ld's documentation on pseudo-relocs. */ -+# define LT_DLSYM_CONST -+#elif defined(__osf__) -+/* This system does not cope well with relocations in const data. */ -+# define LT_DLSYM_CONST -+#else -+# define LT_DLSYM_CONST const -+#endif -+ - /* External symbol declarations for the compiler. */\ - " - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. -- progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do -- func_verbose "extracting global C symbols from \`$progfile'" -- $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" -+ func_to_tool_file "$progfile" func_convert_file_msys_to_w32 -+ func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" -+ $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi -@@ -2366,33 +3330,75 @@ extern \"C\" { - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in -- *cygwin | *mingw* | *cegcc* ) -+ *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" -- $opt_dry_run || { -- eval '$ECHO ": $name " >> "$nlist"' -- eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" -- } -+ case $host in -+ *cygwin* | *mingw* | *cegcc* ) -+ # if an import library, we need to obtain dlname -+ if func_win32_import_lib_p "$dlprefile"; then -+ func_tr_sh "$dlprefile" -+ eval "curr_lafile=\$libfile_$func_tr_sh_result" -+ dlprefile_dlbasename="" -+ if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then -+ # Use subshell, to avoid clobbering current variable values -+ dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` -+ if test -n "$dlprefile_dlname" ; then -+ func_basename "$dlprefile_dlname" -+ dlprefile_dlbasename="$func_basename_result" -+ else -+ # no lafile. user explicitly requested -dlpreopen . -+ $sharedlib_from_linklib_cmd "$dlprefile" -+ dlprefile_dlbasename=$sharedlib_from_linklib_result -+ fi -+ fi -+ $opt_dry_run || { -+ if test -n "$dlprefile_dlbasename" ; then -+ eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' -+ else -+ func_warning "Could not compute DLL name from $name" -+ eval '$ECHO ": $name " >> "$nlist"' -+ fi -+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 -+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | -+ $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" -+ } -+ else # not an import lib -+ $opt_dry_run || { -+ eval '$ECHO ": $name " >> "$nlist"' -+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 -+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" -+ } -+ fi -+ ;; -+ *) -+ $opt_dry_run || { -+ eval '$ECHO ": $name " >> "$nlist"' -+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 -+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" -+ } -+ ;; -+ esac - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T -@@ -2410,59 +3416,42 @@ extern \"C\" { - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else -- $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" -+ echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - -- $ECHO >> "$output_objdir/$my_dlsyms" "\ -+ echo >> "$output_objdir/$my_dlsyms" "\ - - /* The mapping between symbol names and symbols. */ - typedef struct { - const char *name; - void *address; - } lt_dlsymlist; --" -- case $host in -- *cygwin* | *mingw* | *cegcc* ) -- $ECHO >> "$output_objdir/$my_dlsyms" "\ --/* DATA imports from DLLs on WIN32 con't be const, because -- runtime relocations are performed -- see ld's documentation -- on pseudo-relocs. */" -- lt_dlsym_const= ;; -- *osf5*) -- echo >> "$output_objdir/$my_dlsyms" "\ --/* This system does not cope well with relocations in const data */" -- lt_dlsym_const= ;; -- *) -- lt_dlsym_const=const ;; -- esac -- -- $ECHO >> "$output_objdir/$my_dlsyms" "\ --extern $lt_dlsym_const lt_dlsymlist -+extern LT_DLSYM_CONST lt_dlsymlist - lt_${my_prefix}_LTX_preloaded_symbols[]; --$lt_dlsym_const lt_dlsymlist -+LT_DLSYM_CONST lt_dlsymlist - lt_${my_prefix}_LTX_preloaded_symbols[] = - {\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac -- $ECHO >> "$output_objdir/$my_dlsyms" "\ -+ echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} - }; - - /* This works around a problem in FreeBSD linker */ - #ifdef FREEBSD_WORKAROUND - static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; - } -@@ -2479,94 +3468,97 @@ static const void *lt_preloaded_setup() - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. -- *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) -+ *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; -- *) symtab_cflags="$symtab_cflags $arg" ;; -+ *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then -- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` -- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` -+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` -+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else -- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` -+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) -- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` -+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. -- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` -- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` -+ compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` -+ finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi - } - - # func_win32_libid arg - # return the library type of file 'arg' - # - # Need a lot of goo to handle *both* DLLs and import libs - # Has to be a shell function in order to 'eat' the argument - # that is supplied when $file_magic_command is called. -+# Despite the name, also deal with 64 bit binaries. - func_win32_libid () - { - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static -+ # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | -- $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then -- win32_nmres=`eval $NM -f posix -A $1 | -+ $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then -+ func_to_tool_file "$1" func_convert_file_msys_to_w32 -+ win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' - 1,100{ - / I /{ - s,.*,import, - p - q - } - }'` -@@ -2585,25 +3577,161 @@ func_win32_libid () - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" - } - -+# func_cygming_dll_for_implib ARG -+# -+# Platform-specific function to extract the -+# name of the DLL associated with the specified -+# import library ARG. -+# Invoked by eval'ing the libtool variable -+# $sharedlib_from_linklib_cmd -+# Result is available in the variable -+# $sharedlib_from_linklib_result -+func_cygming_dll_for_implib () -+{ -+ $opt_debug -+ sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -+} -+ -+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -+# -+# The is the core of a fallback implementation of a -+# platform-specific function to extract the name of the -+# DLL associated with the specified import library LIBNAME. -+# -+# SECTION_NAME is either .idata$6 or .idata$7, depending -+# on the platform and compiler that created the implib. -+# -+# Echos the name of the DLL associated with the -+# specified import library. -+func_cygming_dll_for_implib_fallback_core () -+{ -+ $opt_debug -+ match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` -+ $OBJDUMP -s --section "$1" "$2" 2>/dev/null | -+ $SED '/^Contents of section '"$match_literal"':/{ -+ # Place marker at beginning of archive member dllname section -+ s/.*/====MARK====/ -+ p -+ d -+ } -+ # These lines can sometimes be longer than 43 characters, but -+ # are always uninteresting -+ /:[ ]*file format pe[i]\{,1\}-/d -+ /^In archive [^:]*:/d -+ # Ensure marker is printed -+ /^====MARK====/p -+ # Remove all lines with less than 43 characters -+ /^.\{43\}/!d -+ # From remaining lines, remove first 43 characters -+ s/^.\{43\}//' | -+ $SED -n ' -+ # Join marker and all lines until next marker into a single line -+ /^====MARK====/ b para -+ H -+ $ b para -+ b -+ :para -+ x -+ s/\n//g -+ # Remove the marker -+ s/^====MARK====// -+ # Remove trailing dots and whitespace -+ s/[\. \t]*$// -+ # Print -+ /./p' | -+ # we now have a list, one entry per line, of the stringified -+ # contents of the appropriate section of all members of the -+ # archive which possess that section. Heuristic: eliminate -+ # all those which have a first or second character that is -+ # a '.' (that is, objdump's representation of an unprintable -+ # character.) This should work for all archives with less than -+ # 0x302f exports -- but will fail for DLLs whose name actually -+ # begins with a literal '.' or a single character followed by -+ # a '.'. -+ # -+ # Of those that remain, print the first one. -+ $SED -e '/^\./d;/^.\./d;q' -+} -+ -+# func_cygming_gnu_implib_p ARG -+# This predicate returns with zero status (TRUE) if -+# ARG is a GNU/binutils-style import library. Returns -+# with nonzero status (FALSE) otherwise. -+func_cygming_gnu_implib_p () -+{ -+ $opt_debug -+ func_to_tool_file "$1" func_convert_file_msys_to_w32 -+ func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` -+ test -n "$func_cygming_gnu_implib_tmp" -+} -+ -+# func_cygming_ms_implib_p ARG -+# This predicate returns with zero status (TRUE) if -+# ARG is an MS-style import library. Returns -+# with nonzero status (FALSE) otherwise. -+func_cygming_ms_implib_p () -+{ -+ $opt_debug -+ func_to_tool_file "$1" func_convert_file_msys_to_w32 -+ func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` -+ test -n "$func_cygming_ms_implib_tmp" -+} -+ -+# func_cygming_dll_for_implib_fallback ARG -+# Platform-specific function to extract the -+# name of the DLL associated with the specified -+# import library ARG. -+# -+# This fallback implementation is for use when $DLLTOOL -+# does not support the --identify-strict option. -+# Invoked by eval'ing the libtool variable -+# $sharedlib_from_linklib_cmd -+# Result is available in the variable -+# $sharedlib_from_linklib_result -+func_cygming_dll_for_implib_fallback () -+{ -+ $opt_debug -+ if func_cygming_gnu_implib_p "$1" ; then -+ # binutils import library -+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` -+ elif func_cygming_ms_implib_p "$1" ; then -+ # ms-generated import library -+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` -+ else -+ # unknown -+ sharedlib_from_linklib_result="" -+ fi -+} - - - # func_extract_an_archive dir oldlib - func_extract_an_archive () - { - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" -- func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' -+ if test "$lock_old_archive_extraction" = yes; then -+ lockfile=$f_ex_an_ar_oldlib.lock -+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do -+ func_echo "Waiting for $lockfile to be removed" -+ sleep 2 -+ done -+ fi -+ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ -+ 'stat=$?; rm -f "$lockfile"; exit $stat' -+ if test "$lock_old_archive_extraction" = yes; then -+ $opt_dry_run || rm -f "$lockfile" -+ fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi - } - - -@@ -2664,471 +3792,349 @@ func_extract_archives () - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do -- darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` -+ darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac -- my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` -+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result="$my_oldobjs" - } - - -- --# func_emit_wrapper_part1 [arg=no] --# --# Emit the first part of a libtool wrapper script on stdout. --# For more information, see the description associated with --# func_emit_wrapper(), below. --func_emit_wrapper_part1 () --{ -- func_emit_wrapper_part1_arg1=no -- if test -n "$1" ; then -- func_emit_wrapper_part1_arg1=$1 -- fi -- -- $ECHO "\ --#! $SHELL -- --# $output - temporary wrapper script for $objdir/$outputname --# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION --# --# The $output program cannot be directly executed until all the libtool --# libraries that it depends on are installed. --# --# This wrapper script should never be moved out of the build directory. --# If it is, it will not operate correctly. -- --# Sed substitution that helps us do robust quoting. It backslashifies --# metacharacters that are still active within double-quoted strings. --Xsed='${SED} -e 1s/^X//' --sed_quote_subst='$sed_quote_subst' -- --# Be Bourne compatible --if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then -- emulate sh -- NULLCMD=: -- # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which -- # is contrary to our usage. Disable this feature. -- alias -g '\${1+\"\$@\"}'='\"\$@\"' -- setopt NO_GLOB_SUBST --else -- case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac --fi --BIN_SH=xpg4; export BIN_SH # for Tru64 --DUALCASE=1; export DUALCASE # for MKS sh -- --# The HP-UX ksh and POSIX shell print the target directory to stdout --# if CDPATH is set. --(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -- --relink_command=\"$relink_command\" -- --# This environment variable determines our operation mode. --if test \"\$libtool_install_magic\" = \"$magic\"; then -- # install mode needs the following variables: -- generated_by_libtool_version='$macro_version' -- notinst_deplibs='$notinst_deplibs' --else -- # When we are sourced in execute mode, \$file and \$ECHO are already set. -- if test \"\$libtool_execute_magic\" != \"$magic\"; then -- ECHO=\"$qecho\" -- file=\"\$0\" -- # Make sure echo works. -- if test \"X\$1\" = X--no-reexec; then -- # Discard the --no-reexec flag, and continue. -- shift -- elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then -- # Yippee, \$ECHO works! -- : -- else -- # Restart under the correct shell, and then maybe \$ECHO will work. -- exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} -- fi -- fi\ --" -- $ECHO "\ -- -- # Find the directory that this script lives in. -- thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` -- test \"x\$thisdir\" = \"x\$file\" && thisdir=. -- -- # Follow symbolic links until we get to the real thisdir. -- file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` -- while test -n \"\$file\"; do -- destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` -- -- # If there was a directory component, then change thisdir. -- if test \"x\$destdir\" != \"x\$file\"; then -- case \"\$destdir\" in -- [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; -- *) thisdir=\"\$thisdir/\$destdir\" ;; -- esac -- fi -- -- file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` -- file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` -- done --" --} --# end: func_emit_wrapper_part1 -- --# func_emit_wrapper_part2 [arg=no] --# --# Emit the second part of a libtool wrapper script on stdout. --# For more information, see the description associated with --# func_emit_wrapper(), below. --func_emit_wrapper_part2 () --{ -- func_emit_wrapper_part2_arg1=no -- if test -n "$1" ; then -- func_emit_wrapper_part2_arg1=$1 -- fi -- -- $ECHO "\ -- -- # Usually 'no', except on cygwin/mingw when embedded into -- # the cwrapper. -- WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 -- if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then -- # special case for '.' -- if test \"\$thisdir\" = \".\"; then -- thisdir=\`pwd\` -- fi -- # remove .libs from thisdir -- case \"\$thisdir\" in -- *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; -- $objdir ) thisdir=. ;; -- esac -- fi -- -- # Try to get the absolute directory name. -- absdir=\`cd \"\$thisdir\" && pwd\` -- test -n \"\$absdir\" && thisdir=\"\$absdir\" --" -- -- if test "$fast_install" = yes; then -- $ECHO "\ -- program=lt-'$outputname'$exeext -- progdir=\"\$thisdir/$objdir\" -- -- if test ! -f \"\$progdir/\$program\" || -- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ -- test \"X\$file\" != \"X\$progdir/\$program\"; }; then -- -- file=\"\$\$-\$program\" -- -- if test ! -d \"\$progdir\"; then -- $MKDIR \"\$progdir\" -- else -- $RM \"\$progdir/\$file\" -- fi" -- -- $ECHO "\ -- -- # relink executable if necessary -- if test -n \"\$relink_command\"; then -- if relink_command_output=\`eval \$relink_command 2>&1\`; then : -- else -- $ECHO \"\$relink_command_output\" >&2 -- $RM \"\$progdir/\$file\" -- exit 1 -- fi -- fi -- -- $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || -- { $RM \"\$progdir/\$program\"; -- $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } -- $RM \"\$progdir/\$file\" -- fi" -- else -- $ECHO "\ -- program='$outputname' -- progdir=\"\$thisdir/$objdir\" --" -- fi -- -- $ECHO "\ -- -- if test -f \"\$progdir/\$program\"; then" -- -- # Export our shlibpath_var if we have one. -- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then -- $ECHO "\ -- # Add our own library path to $shlibpath_var -- $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" -- -- # Some systems cannot cope with colon-terminated $shlibpath_var -- # The second colon is a workaround for a bug in BeOS R4 sed -- $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` -- -- export $shlibpath_var --" -- fi -- -- # fixup the dll searchpath if we need to. -- if test -n "$dllsearchpath"; then -- $ECHO "\ -- # Add the dll search path components to the executable PATH -- PATH=$dllsearchpath:\$PATH --" -- fi -- -- $ECHO "\ -- if test \"\$libtool_execute_magic\" != \"$magic\"; then -- # Run the actual program with our arguments. --" -- case $host in -- # Backslashes separate directories on plain windows -- *-*-mingw | *-*-os2* | *-cegcc*) -- $ECHO "\ -- exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} --" -- ;; -- -- *) -- $ECHO "\ -- exec \"\$progdir/\$program\" \${1+\"\$@\"} --" -- ;; -- esac -- $ECHO "\ -- \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 -- exit 1 -- fi -- else -- # The program doesn't exist. -- \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 -- \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 -- $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 -- exit 1 -- fi --fi\ --" --} --# end: func_emit_wrapper_part2 -- -- - # func_emit_wrapper [arg=no] - # - # Emit a libtool wrapper script on stdout. - # Don't directly open a file because we may want to - # incorporate the script contents within a cygwin/mingw - # wrapper executable. Must ONLY be called from within - # func_mode_link because it depends on a number of variables - # set therein. - # - # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR - # variable will take. If 'yes', then the emitted script - # will assume that the directory in which it is stored is - # the $objdir directory. This is a cygwin/mingw-specific - # behavior. - func_emit_wrapper () - { -- func_emit_wrapper_arg1=no -- if test -n "$1" ; then -- func_emit_wrapper_arg1=$1 -- fi -- -- # split this up so that func_emit_cwrapperexe_src -- # can call each part independently. -- func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" -- func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" --} -- -- --# func_to_host_path arg -+ func_emit_wrapper_arg1=${1-no} -+ -+ $ECHO "\ -+#! $SHELL -+ -+# $output - temporary wrapper script for $objdir/$outputname -+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION - # --# Convert paths to host format when used with build tools. --# Intended for use with "native" mingw (where libtool itself --# is running under the msys shell), or in the following cross- --# build environments: --# $build $host --# mingw (msys) mingw [e.g. native] --# cygwin mingw --# *nix + wine mingw --# where wine is equipped with the `winepath' executable. --# In the native mingw case, the (msys) shell automatically --# converts paths for any non-msys applications it launches, --# but that facility isn't available from inside the cwrapper. --# Similar accommodations are necessary for $host mingw and --# $build cygwin. Calling this function does no harm for other --# $host/$build combinations not listed above. -+# The $output program cannot be directly executed until all the libtool -+# libraries that it depends on are installed. - # --# ARG is the path (on $build) that should be converted to --# the proper representation for $host. The result is stored --# in $func_to_host_path_result. --func_to_host_path () --{ -- func_to_host_path_result="$1" -- if test -n "$1" ; then -- case $host in -- *mingw* ) -- lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -- case $build in -- *mingw* ) # actually, msys -- # awkward: cmd appends spaces to result -- lt_sed_strip_trailing_spaces="s/[ ]*\$//" -- func_to_host_path_tmp1=`( cmd //c echo "$1" |\ -- $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` -- func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ -- $SED -e "$lt_sed_naive_backslashify"` -- ;; -- *cygwin* ) -- func_to_host_path_tmp1=`cygpath -w "$1"` -- func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ -- $SED -e "$lt_sed_naive_backslashify"` -- ;; -- * ) -- # Unfortunately, winepath does not exit with a non-zero -- # error code, so we are forced to check the contents of -- # stdout. On the other hand, if the command is not -- # found, the shell will set an exit code of 127 and print -- # *an error message* to stdout. So we must check for both -- # error code of zero AND non-empty stdout, which explains -- # the odd construction: -- func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` -- if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then -- func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ -- $SED -e "$lt_sed_naive_backslashify"` -- else -- # Allow warning below. -- func_to_host_path_result="" -- fi -- ;; -- esac -- if test -z "$func_to_host_path_result" ; then -- func_error "Could not determine host path corresponding to" -- func_error " '$1'" -- func_error "Continuing, but uninstalled executables may not work." -- # Fallback: -- func_to_host_path_result="$1" -- fi -- ;; -+# This wrapper script should never be moved out of the build directory. -+# If it is, it will not operate correctly. -+ -+# Sed substitution that helps us do robust quoting. It backslashifies -+# metacharacters that are still active within double-quoted strings. -+sed_quote_subst='$sed_quote_subst' -+ -+# Be Bourne compatible -+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '\${1+\"\$@\"}'='\"\$@\"' -+ setopt NO_GLOB_SUBST -+else -+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -+fi -+BIN_SH=xpg4; export BIN_SH # for Tru64 -+DUALCASE=1; export DUALCASE # for MKS sh -+ -+# The HP-UX ksh and POSIX shell print the target directory to stdout -+# if CDPATH is set. -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -+ -+relink_command=\"$relink_command\" -+ -+# This environment variable determines our operation mode. -+if test \"\$libtool_install_magic\" = \"$magic\"; then -+ # install mode needs the following variables: -+ generated_by_libtool_version='$macro_version' -+ notinst_deplibs='$notinst_deplibs' -+else -+ # When we are sourced in execute mode, \$file and \$ECHO are already set. -+ if test \"\$libtool_execute_magic\" != \"$magic\"; then -+ file=\"\$0\"" -+ -+ qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` -+ $ECHO "\ -+ -+# A function that is used when there is no print builtin or printf. -+func_fallback_echo () -+{ -+ eval 'cat <<_LTECHO_EOF -+\$1 -+_LTECHO_EOF' -+} -+ ECHO=\"$qECHO\" -+ fi -+ -+# Very basic option parsing. These options are (a) specific to -+# the libtool wrapper, (b) are identical between the wrapper -+# /script/ and the wrapper /executable/ which is used only on -+# windows platforms, and (c) all begin with the string "--lt-" -+# (application programs are unlikely to have options which match -+# this pattern). -+# -+# There are only two supported options: --lt-debug and -+# --lt-dump-script. There is, deliberately, no --lt-help. -+# -+# The first argument to this parsing function should be the -+# script's $0 value, followed by "$@". -+lt_option_debug= -+func_parse_lt_options () -+{ -+ lt_script_arg0=\$0 -+ shift -+ for lt_opt -+ do -+ case \"\$lt_opt\" in -+ --lt-debug) lt_option_debug=1 ;; -+ --lt-dump-script) -+ lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` -+ test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. -+ lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` -+ cat \"\$lt_dump_D/\$lt_dump_F\" -+ exit 0 -+ ;; -+ --lt-*) -+ \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 -+ exit 1 -+ ;; -+ esac -+ done -+ -+ # Print the debug banner immediately: -+ if test -n \"\$lt_option_debug\"; then -+ echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 -+ fi -+} -+ -+# Used when --lt-debug. Prints its arguments to stdout -+# (redirection is the responsibility of the caller) -+func_lt_dump_args () -+{ -+ lt_dump_args_N=1; -+ for lt_arg -+ do -+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" -+ lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` -+ done -+} -+ -+# Core function for launching the target application -+func_exec_program_core () -+{ -+" -+ case $host in -+ # Backslashes separate directories on plain windows -+ *-*-mingw | *-*-os2* | *-cegcc*) -+ $ECHO "\ -+ if test -n \"\$lt_option_debug\"; then -+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 -+ func_lt_dump_args \${1+\"\$@\"} 1>&2 -+ fi -+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -+" -+ ;; -+ -+ *) -+ $ECHO "\ -+ if test -n \"\$lt_option_debug\"; then -+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 -+ func_lt_dump_args \${1+\"\$@\"} 1>&2 -+ fi -+ exec \"\$progdir/\$program\" \${1+\"\$@\"} -+" -+ ;; -+ esac -+ $ECHO "\ -+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 -+ exit 1 -+} -+ -+# A function to encapsulate launching the target application -+# Strips options in the --lt-* namespace from \$@ and -+# launches target application with the remaining arguments. -+func_exec_program () -+{ -+ case \" \$* \" in -+ *\\ --lt-*) -+ for lt_wr_arg -+ do -+ case \$lt_wr_arg in -+ --lt-*) ;; -+ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; -+ esac -+ shift -+ done ;; -+ esac -+ func_exec_program_core \${1+\"\$@\"} -+} -+ -+ # Parse options -+ func_parse_lt_options \"\$0\" \${1+\"\$@\"} -+ -+ # Find the directory that this script lives in. -+ thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` -+ test \"x\$thisdir\" = \"x\$file\" && thisdir=. -+ -+ # Follow symbolic links until we get to the real thisdir. -+ file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` -+ while test -n \"\$file\"; do -+ destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` -+ -+ # If there was a directory component, then change thisdir. -+ if test \"x\$destdir\" != \"x\$file\"; then -+ case \"\$destdir\" in -+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; -+ *) thisdir=\"\$thisdir/\$destdir\" ;; -+ esac -+ fi -+ -+ file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` -+ file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` -+ done -+ -+ # Usually 'no', except on cygwin/mingw when embedded into -+ # the cwrapper. -+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 -+ if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then -+ # special case for '.' -+ if test \"\$thisdir\" = \".\"; then -+ thisdir=\`pwd\` -+ fi -+ # remove .libs from thisdir -+ case \"\$thisdir\" in -+ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; -+ $objdir ) thisdir=. ;; - esac - fi --} --# end: func_to_host_path -- --# func_to_host_pathlist arg --# --# Convert pathlists to host format when used with build tools. --# See func_to_host_path(), above. This function supports the --# following $build/$host combinations (but does no harm for --# combinations not listed here): --# $build $host --# mingw (msys) mingw [e.g. native] --# cygwin mingw --# *nix + wine mingw --# --# Path separators are also converted from $build format to --# $host format. If ARG begins or ends with a path separator --# character, it is preserved (but converted to $host format) --# on output. --# --# ARG is a pathlist (on $build) that should be converted to --# the proper representation on $host. The result is stored --# in $func_to_host_pathlist_result. --func_to_host_pathlist () --{ -- func_to_host_pathlist_result="$1" -- if test -n "$1" ; then -- case $host in -- *mingw* ) -- lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -- # Remove leading and trailing path separator characters from -- # ARG. msys behavior is inconsistent here, cygpath turns them -- # into '.;' and ';.', and winepath ignores them completely. -- func_to_host_pathlist_tmp2="$1" -- # Once set for this call, this variable should not be -- # reassigned. It is used in tha fallback case. -- func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ -- $SED -e 's|^:*||' -e 's|:*$||'` -- case $build in -- *mingw* ) # Actually, msys. -- # Awkward: cmd appends spaces to result. -- lt_sed_strip_trailing_spaces="s/[ ]*\$//" -- func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ -- $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` -- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ -- $SED -e "$lt_sed_naive_backslashify"` -- ;; -- *cygwin* ) -- func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` -- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ -- $SED -e "$lt_sed_naive_backslashify"` -- ;; -- * ) -- # unfortunately, winepath doesn't convert pathlists -- func_to_host_pathlist_result="" -- func_to_host_pathlist_oldIFS=$IFS -- IFS=: -- for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do -- IFS=$func_to_host_pathlist_oldIFS -- if test -n "$func_to_host_pathlist_f" ; then -- func_to_host_path "$func_to_host_pathlist_f" -- if test -n "$func_to_host_path_result" ; then -- if test -z "$func_to_host_pathlist_result" ; then -- func_to_host_pathlist_result="$func_to_host_path_result" -- else -- func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" -- fi -- fi -- fi -- IFS=: -- done -- IFS=$func_to_host_pathlist_oldIFS -- ;; -- esac -- if test -z "$func_to_host_pathlist_result" ; then -- func_error "Could not determine the host path(s) corresponding to" -- func_error " '$1'" -- func_error "Continuing, but uninstalled executables may not work." -- # Fallback. This may break if $1 contains DOS-style drive -- # specifications. The fix is not to complicate the expression -- # below, but for the user to provide a working wine installation -- # with winepath so that path translation in the cross-to-mingw -- # case works properly. -- lt_replace_pathsep_nix_to_dos="s|:|;|g" -- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ -- $SED -e "$lt_replace_pathsep_nix_to_dos"` -- fi -- # Now, add the leading and trailing path separators back -- case "$1" in -- :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" -- ;; -- esac -- case "$1" in -- *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" -- ;; -- esac -- ;; -- esac -+ -+ # Try to get the absolute directory name. -+ absdir=\`cd \"\$thisdir\" && pwd\` -+ test -n \"\$absdir\" && thisdir=\"\$absdir\" -+" -+ -+ if test "$fast_install" = yes; then -+ $ECHO "\ -+ program=lt-'$outputname'$exeext -+ progdir=\"\$thisdir/$objdir\" -+ -+ if test ! -f \"\$progdir/\$program\" || -+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ -+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then -+ -+ file=\"\$\$-\$program\" -+ -+ if test ! -d \"\$progdir\"; then -+ $MKDIR \"\$progdir\" -+ else -+ $RM \"\$progdir/\$file\" -+ fi" -+ -+ $ECHO "\ -+ -+ # relink executable if necessary -+ if test -n \"\$relink_command\"; then -+ if relink_command_output=\`eval \$relink_command 2>&1\`; then : -+ else -+ $ECHO \"\$relink_command_output\" >&2 -+ $RM \"\$progdir/\$file\" -+ exit 1 -+ fi -+ fi -+ -+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || -+ { $RM \"\$progdir/\$program\"; -+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } -+ $RM \"\$progdir/\$file\" -+ fi" -+ else -+ $ECHO "\ -+ program='$outputname' -+ progdir=\"\$thisdir/$objdir\" -+" -+ fi -+ -+ $ECHO "\ -+ -+ if test -f \"\$progdir/\$program\"; then" -+ -+ # fixup the dll searchpath if we need to. -+ # -+ # Fix the DLL searchpath if we need to. Do this before prepending -+ # to shlibpath, because on Windows, both are PATH and uninstalled -+ # libraries must come first. -+ if test -n "$dllsearchpath"; then -+ $ECHO "\ -+ # Add the dll search path components to the executable PATH -+ PATH=$dllsearchpath:\$PATH -+" -+ fi -+ -+ # Export our shlibpath_var if we have one. -+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then -+ $ECHO "\ -+ # Add our own library path to $shlibpath_var -+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" -+ -+ # Some systems cannot cope with colon-terminated $shlibpath_var -+ # The second colon is a workaround for a bug in BeOS R4 sed -+ $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` -+ -+ export $shlibpath_var -+" -+ fi -+ -+ $ECHO "\ -+ if test \"\$libtool_execute_magic\" != \"$magic\"; then -+ # Run the actual program with our arguments. -+ func_exec_program \${1+\"\$@\"} -+ fi -+ else -+ # The program doesn't exist. -+ \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 -+ \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 -+ \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 -+ exit 1 - fi --} --# end: func_to_host_pathlist -+fi\ -+" -+} -+ - - # func_emit_cwrapperexe_src - # emit the source code for a wrapper executable on stdout - # Must ONLY be called from within func_mode_link because - # it depends on a number of variable set therein. - func_emit_cwrapperexe_src () - { - cat < - #include - #ifdef _MSC_VER - # include - # include - # include --# define setmode _setmode - #else - # include - # include - # ifdef __CYGWIN__ - # include --# define HAVE_SETENV --# ifdef __STRICT_ANSI__ --char *realpath (const char *, char *); --int putenv (char *); --int setenv (const char *, const char *, int); --# endif - # endif - #endif - #include - #include - #include - #include - #include - #include - #include - #include - -+/* declarations of non-ANSI functions */ -+#if defined(__MINGW32__) -+# ifdef __STRICT_ANSI__ -+int _putenv (const char *); -+# endif -+#elif defined(__CYGWIN__) -+# ifdef __STRICT_ANSI__ -+char *realpath (const char *, char *); -+int putenv (char *); -+int setenv (const char *, const char *, int); -+# endif -+/* #elif defined (other platforms) ... */ -+#endif -+ -+/* portability defines, excluding path handling macros */ -+#if defined(_MSC_VER) -+# define setmode _setmode -+# define stat _stat -+# define chmod _chmod -+# define getcwd _getcwd -+# define putenv _putenv -+# define S_IXUSR _S_IEXEC -+# ifndef _INTPTR_T_DEFINED -+# define _INTPTR_T_DEFINED -+# define intptr_t int -+# endif -+#elif defined(__MINGW32__) -+# define setmode _setmode -+# define stat _stat -+# define chmod _chmod -+# define getcwd _getcwd -+# define putenv _putenv -+#elif defined(__CYGWIN__) -+# define HAVE_SETENV -+# define FOPEN_WB "wb" -+/* #elif defined (other platforms) ... */ -+#endif -+ - #if defined(PATH_MAX) - # define LT_PATHMAX PATH_MAX - #elif defined(MAXPATHLEN) - # define LT_PATHMAX MAXPATHLEN - #else - # define LT_PATHMAX 1024 - #endif - - #ifndef S_IXOTH - # define S_IXOTH 0 - #endif - #ifndef S_IXGRP - # define S_IXGRP 0 - #endif - --#ifdef _MSC_VER --# define S_IXUSR _S_IEXEC --# define stat _stat --# ifndef _INTPTR_T_DEFINED --# define intptr_t int --# endif --#endif -- -+/* path handling portability macros */ - #ifndef DIR_SEPARATOR - # define DIR_SEPARATOR '/' - # define PATH_SEPARATOR ':' - #endif - - #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) - # define HAVE_DOS_BASED_FILE_SYSTEM -@@ -3225,104 +4254,77 @@ int setenv (const char *, const char *, - #endif /* DIR_SEPARATOR_2 */ - - #ifndef PATH_SEPARATOR_2 - # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) - #else /* PATH_SEPARATOR_2 */ - # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) - #endif /* PATH_SEPARATOR_2 */ - --#ifdef __CYGWIN__ --# define FOPEN_WB "wb" --#endif -- - #ifndef FOPEN_WB - # define FOPEN_WB "w" - #endif - #ifndef _O_BINARY - # define _O_BINARY 0 - #endif - - #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) - #define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ - } while (0) - --#undef LTWRAPPER_DEBUGPRINTF --#if defined DEBUGWRAPPER --# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args --static void --ltwrapper_debugprintf (const char *fmt, ...) --{ -- va_list args; -- va_start (args, fmt); -- (void) vfprintf (stderr, fmt, args); -- va_end (args); --} -+#if defined(LT_DEBUGWRAPPER) -+static int lt_debug = 1; - #else --# define LTWRAPPER_DEBUGPRINTF(args) -+static int lt_debug = 0; - #endif - --const char *program_name = NULL; -+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - - void *xmalloc (size_t num); - char *xstrdup (const char *string); - const char *base_name (const char *name); - char *find_executable (const char *wrapper); - char *chase_symlinks (const char *pathspec); - int make_executable (const char *path); - int check_executable (const char *path); - char *strendzap (char *str, const char *pat); --void lt_fatal (const char *message, ...); -+void lt_debugprintf (const char *file, int line, const char *fmt, ...); -+void lt_fatal (const char *file, int line, const char *message, ...); -+static const char *nonnull (const char *s); -+static const char *nonempty (const char *s); - void lt_setenv (const char *name, const char *value); - char *lt_extend_str (const char *orig_value, const char *add, int to_end); --void lt_opt_process_env_set (const char *arg); --void lt_opt_process_env_prepend (const char *arg); --void lt_opt_process_env_append (const char *arg); --int lt_split_name_value (const char *arg, char** name, char** value); - void lt_update_exe_path (const char *name, const char *value); - void lt_update_lib_path (const char *name, const char *value); -- --static const char *script_text_part1 = -+char **prepare_spawn (char **argv); -+void lt_dump_script (FILE *f); - EOF - -- func_emit_wrapper_part1 yes | -- $SED -e 's/\([\\"]\)/\\\1/g' \ -- -e 's/^/ "/' -e 's/$/\\n"/' -- echo ";" - cat <"))); -+ -+ lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", -+ nonnull (lt_argv_zero)); - for (i = 0; i < newargc; i++) - { -- LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); -+ lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", -+ i, nonnull (newargz[i])); - } - - EOF - - case $host_os in - mingw*) - cat <<"EOF" - /* execv doesn't actually work on mingw as expected on unix */ -+ newargz = prepare_spawn (newargz); - rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); - if (rval == -1) - { - /* failed to start process */ -- LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); -+ lt_debugprintf (__FILE__, __LINE__, -+ "(main) failed to launch target \"%s\": %s\n", -+ lt_argv_zero, nonnull (strerror (errno))); - return 127; - } - return rval; - EOF - ;; - *) - cat <<"EOF" - execv (lt_argv_zero, newargz); -@@ -3581,17 +4547,17 @@ EOF - cat <<"EOF" - } - - void * - xmalloc (size_t num) - { - void *p = (void *) malloc (num); - if (!p) -- lt_fatal ("Memory exhausted"); -+ lt_fatal (__FILE__, __LINE__, "memory exhausted"); - - return p; - } - - char * - xstrdup (const char *string) - { - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), -@@ -3615,36 +4581,36 @@ base_name (const char *name) - return base; - } - - int - check_executable (const char *path) - { - struct stat st; - -- LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", -- path ? (*path ? path : "EMPTY!") : "NULL!")); -+ lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", -+ nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if ((stat (path, &st) >= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; - } - - int - make_executable (const char *path) - { - int rval = 0; - struct stat st; - -- LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", -- path ? (*path ? path : "EMPTY!") : "NULL!")); -+ lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", -+ nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -@@ -3660,18 +4626,18 @@ find_executable (const char *wrapper) - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - -- LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", -- wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); -+ lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", -+ nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ - #if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { -@@ -3714,17 +4680,18 @@ find_executable (const char *wrapper) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) -- lt_fatal ("getcwd failed"); -+ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", -+ nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else -@@ -3739,17 +4706,18 @@ find_executable (const char *wrapper) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) -- lt_fatal ("getcwd failed"); -+ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", -+ nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; -@@ -3765,18 +4733,19 @@ chase_symlinks (const char *pathspec) - #else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { -- LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", -- tmp_pathspec)); -+ lt_debugprintf (__FILE__, __LINE__, -+ "checking path component for symlinks: %s\n", -+ tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - -@@ -3788,31 +4757,33 @@ chase_symlinks (const char *pathspec) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { -- char *errstr = strerror (errno); -- lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); -+ lt_fatal (__FILE__, __LINE__, -+ "error accessing file \"%s\": %s", -+ tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { -- lt_fatal ("Could not follow symlinks for %s", pathspec); -+ lt_fatal (__FILE__, __LINE__, -+ "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); - #endif - } - - char * - strendzap (char *str, const char *pat) - { -@@ -3828,43 +4799,69 @@ strendzap (char *str, const char *pat) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; - } - -+void -+lt_debugprintf (const char *file, int line, const char *fmt, ...) -+{ -+ va_list args; -+ if (lt_debug) -+ { -+ (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); -+ va_start (args, fmt); -+ (void) vfprintf (stderr, fmt, args); -+ va_end (args); -+ } -+} -+ - static void --lt_error_core (int exit_status, const char *mode, -+lt_error_core (int exit_status, const char *file, -+ int line, const char *mode, - const char *message, va_list ap) - { -- fprintf (stderr, "%s: %s: ", program_name, mode); -+ fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); - } - - void --lt_fatal (const char *message, ...) -+lt_fatal (const char *file, int line, const char *message, ...) - { - va_list ap; - va_start (ap, message); -- lt_error_core (EXIT_FAILURE, "FATAL", message, ap); -+ lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); - } - -+static const char * -+nonnull (const char *s) -+{ -+ return s ? s : "(null)"; -+} -+ -+static const char * -+nonempty (const char *s) -+{ -+ return (s && !*s) ? "(empty)" : nonnull (s); -+} -+ - void - lt_setenv (const char *name, const char *value) - { -- LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", -- (name ? name : ""), -- (value ? value : ""))); -+ lt_debugprintf (__FILE__, __LINE__, -+ "(lt_setenv) setting '%s' to '%s'\n", -+ nonnull (name), nonnull (value)); - { - #ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); - #else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); -@@ -3899,105 +4896,22 @@ lt_extend_str (const char *orig_value, c - } - else - { - new_value = xstrdup (add); - } - return new_value; - } - --int --lt_split_name_value (const char *arg, char** name, char** value) --{ -- const char *p; -- int len; -- if (!arg || !*arg) -- return 1; -- -- p = strchr (arg, (int)'='); -- -- if (!p) -- return 1; -- -- *value = xstrdup (++p); -- -- len = strlen (arg) - strlen (*value); -- *name = XMALLOC (char, len); -- strncpy (*name, arg, len-1); -- (*name)[len - 1] = '\0'; -- -- return 0; --} -- --void --lt_opt_process_env_set (const char *arg) --{ -- char *name = NULL; -- char *value = NULL; -- -- if (lt_split_name_value (arg, &name, &value) != 0) -- { -- XFREE (name); -- XFREE (value); -- lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); -- } -- -- lt_setenv (name, value); -- XFREE (name); -- XFREE (value); --} -- --void --lt_opt_process_env_prepend (const char *arg) --{ -- char *name = NULL; -- char *value = NULL; -- char *new_value = NULL; -- -- if (lt_split_name_value (arg, &name, &value) != 0) -- { -- XFREE (name); -- XFREE (value); -- lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); -- } -- -- new_value = lt_extend_str (getenv (name), value, 0); -- lt_setenv (name, new_value); -- XFREE (new_value); -- XFREE (name); -- XFREE (value); --} -- --void --lt_opt_process_env_append (const char *arg) --{ -- char *name = NULL; -- char *value = NULL; -- char *new_value = NULL; -- -- if (lt_split_name_value (arg, &name, &value) != 0) -- { -- XFREE (name); -- XFREE (value); -- lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); -- } -- -- new_value = lt_extend_str (getenv (name), value, 1); -- lt_setenv (name, new_value); -- XFREE (new_value); -- XFREE (name); -- XFREE (value); --} -- - void - lt_update_exe_path (const char *name, const char *value) - { -- LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", -- (name ? name : ""), -- (value ? value : ""))); -+ lt_debugprintf (__FILE__, __LINE__, -+ "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", -+ nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { -@@ -4006,33 +4920,180 @@ lt_update_exe_path (const char *name, co - lt_setenv (name, new_value); - XFREE (new_value); - } - } - - void - lt_update_lib_path (const char *name, const char *value) - { -- LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", -- (name ? name : ""), -- (value ? value : ""))); -+ lt_debugprintf (__FILE__, __LINE__, -+ "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", -+ nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } - } - -- - EOF -+ case $host_os in -+ mingw*) -+ cat <<"EOF" -+ -+/* Prepares an argument vector before calling spawn(). -+ Note that spawn() does not by itself call the command interpreter -+ (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : -+ ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); -+ GetVersionEx(&v); -+ v.dwPlatformId == VER_PLATFORM_WIN32_NT; -+ }) ? "cmd.exe" : "command.com"). -+ Instead it simply concatenates the arguments, separated by ' ', and calls -+ CreateProcess(). We must quote the arguments since Win32 CreateProcess() -+ interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a -+ special way: -+ - Space and tab are interpreted as delimiters. They are not treated as -+ delimiters if they are surrounded by double quotes: "...". -+ - Unescaped double quotes are removed from the input. Their only effect is -+ that within double quotes, space and tab are treated like normal -+ characters. -+ - Backslashes not followed by double quotes are not special. -+ - But 2*n+1 backslashes followed by a double quote become -+ n backslashes followed by a double quote (n >= 0): -+ \" -> " -+ \\\" -> \" -+ \\\\\" -> \\" -+ */ -+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -+char ** -+prepare_spawn (char **argv) -+{ -+ size_t argc; -+ char **new_argv; -+ size_t i; -+ -+ /* Count number of arguments. */ -+ for (argc = 0; argv[argc] != NULL; argc++) -+ ; -+ -+ /* Allocate new argument vector. */ -+ new_argv = XMALLOC (char *, argc + 1); -+ -+ /* Put quoted arguments into the new argument vector. */ -+ for (i = 0; i < argc; i++) -+ { -+ const char *string = argv[i]; -+ -+ if (string[0] == '\0') -+ new_argv[i] = xstrdup ("\"\""); -+ else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) -+ { -+ int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); -+ size_t length; -+ unsigned int backslashes; -+ const char *s; -+ char *quoted_string; -+ char *p; -+ -+ length = 0; -+ backslashes = 0; -+ if (quote_around) -+ length++; -+ for (s = string; *s != '\0'; s++) -+ { -+ char c = *s; -+ if (c == '"') -+ length += backslashes + 1; -+ length++; -+ if (c == '\\') -+ backslashes++; -+ else -+ backslashes = 0; -+ } -+ if (quote_around) -+ length += backslashes + 1; -+ -+ quoted_string = XMALLOC (char, length + 1); -+ -+ p = quoted_string; -+ backslashes = 0; -+ if (quote_around) -+ *p++ = '"'; -+ for (s = string; *s != '\0'; s++) -+ { -+ char c = *s; -+ if (c == '"') -+ { -+ unsigned int j; -+ for (j = backslashes + 1; j > 0; j--) -+ *p++ = '\\'; -+ } -+ *p++ = c; -+ if (c == '\\') -+ backslashes++; -+ else -+ backslashes = 0; -+ } -+ if (quote_around) -+ { -+ unsigned int j; -+ for (j = backslashes; j > 0; j--) -+ *p++ = '\\'; -+ *p++ = '"'; -+ } -+ *p = '\0'; -+ -+ new_argv[i] = quoted_string; -+ } -+ else -+ new_argv[i] = (char *) string; -+ } -+ new_argv[argc] = NULL; -+ -+ return new_argv; -+} -+EOF -+ ;; -+ esac -+ -+ cat <<"EOF" -+void lt_dump_script (FILE* f) -+{ -+EOF -+ func_emit_wrapper yes | -+ $SED -n -e ' -+s/^\(.\{79\}\)\(..*\)/\1\ -+\2/ -+h -+s/\([\\"]\)/\\\1/g -+s/$/\\n/ -+s/\([^\n]*\).*/ fputs ("\1", f);/p -+g -+D' -+ cat <<"EOF" -+} -+EOF - } - # end: func_emit_cwrapperexe_src - -+# func_win32_import_lib_p ARG -+# True if ARG is an import lib, as indicated by $file_magic_cmd -+func_win32_import_lib_p () -+{ -+ $opt_debug -+ case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in -+ *import*) : ;; -+ *) false ;; -+ esac -+} -+ - # func_mode_link arg... - func_mode_link () - { - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out -@@ -4067,16 +5128,17 @@ func_mode_link () - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no -+ bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= -@@ -4159,16 +5221,21 @@ func_mode_link () - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in -+ bindir) -+ bindir="$arg" -+ prev= -+ continue -+ ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in -@@ -4190,19 +5257,19 @@ func_mode_link () - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then -- dlfiles="$dlfiles $arg" -+ func_append dlfiles " $arg" - else -- dlprefiles="$dlprefiles $arg" -+ func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" -@@ -4216,17 +5283,17 @@ func_mode_link () - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; -- *) deplibs="$deplibs $qarg.ltframework" # this is fixed later -+ *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) -@@ -4235,17 +5302,17 @@ func_mode_link () - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do --# moreargs="$moreargs $fil" -+# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - -@@ -4264,29 +5331,29 @@ func_mode_link () - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -- dlfiles="$dlfiles $pic_object" -+ func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. -- dlprefiles="$dlprefiles $pic_object" -+ func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - -@@ -4346,55 +5413,55 @@ func_mode_link () - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; -- *) rpath="$rpath $arg" ;; -+ *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; -- *) xrpath="$xrpath $arg" ;; -+ *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) -- weak_libs="$weak_libs $arg" -+ func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) -- linker_flags="$linker_flags $qarg" -- compiler_flags="$compiler_flags $qarg" -+ func_append linker_flags " $qarg" -+ func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) -- compiler_flags="$compiler_flags $qarg" -+ func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) -- linker_flags="$linker_flags $qarg" -- compiler_flags="$compiler_flags $wl$qarg" -+ func_append linker_flags " $qarg" -+ func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= -@@ -4420,16 +5487,21 @@ func_mode_link () - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - -+ -bindir) -+ prev=bindir -+ continue -+ ;; -+ - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue -@@ -4470,78 +5542,85 @@ func_mode_link () - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) -- func_stripname '-L' '' "$arg" -- dir=$func_stripname_result -- if test -z "$dir"; then -+ func_stripname "-L" '' "$arg" -+ if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" - else - func_fatal_error "need path for \`-L' option" - fi - fi -+ func_resolve_sysroot "$func_stripname_result" -+ dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in -- *" -L$dir "*) ;; -+ *" -L$dir "* | *" $arg "*) -+ # Will only happen for absolute or sysroot arguments -+ ;; - *) -- deplibs="$deplibs -L$dir" -- lib_search_path="$lib_search_path $dir" -+ # Preserve sysroot, but never include relative directories -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; -+ *) func_append deplibs " -L$dir" ;; -+ esac -+ func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) -- testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` -+ testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; -- *) dllsearchpath="$dllsearchpath:$dir";; -+ *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; -- *) dllsearchpath="$dllsearchpath:$testbindir";; -+ *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in -- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework -- deplibs="$deplibs System.ltframework" -+ func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work -@@ -4551,43 +5630,44 @@ func_mode_link () - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi -- deplibs="$deplibs $arg" -+ func_append deplibs " $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. -- -model|-arch|-isysroot) -- compiler_flags="$compiler_flags $arg" -+ -model|-arch|-isysroot|--sysroot) -+ func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - -- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) -- compiler_flags="$compiler_flags $arg" -+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ -+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) -+ func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; -- * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; -+ * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; -@@ -4644,23 +5724,27 @@ func_mode_link () - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; -+ =*) -+ func_stripname '=' '' "$dir" -+ dir=$lt_sysroot$func_stripname_result -+ ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; -- *) xrpath="$xrpath $dir" ;; -+ *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; -@@ -4703,35 +5787,35 @@ func_mode_link () - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" -- arg="$arg $wl$func_quote_for_eval_result" -- compiler_flags="$compiler_flags $func_quote_for_eval_result" -+ func_append arg " $func_quote_for_eval_result" -+ func_append compiler_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" -- arg="$arg $wl$func_quote_for_eval_result" -- compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" -- linker_flags="$linker_flags $func_quote_for_eval_result" -+ func_append arg " $wl$func_quote_for_eval_result" -+ func_append compiler_flags " $wl$func_quote_for_eval_result" -+ func_append linker_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler -@@ -4749,45 +5833,49 @@ func_mode_link () - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - -- # -64, -mips[0-9] enable 64-bit mode on the SGI compiler -- # -r[0-9][0-9]* specifies the processor on the SGI compiler -- # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler -- # +DA*, +DD* enable 64-bit mode on the HP compiler -- # -q* pass through compiler args for the IBM compiler -- # -m*, -t[45]*, -txscale* pass through architecture-specific -- # compiler args for GCC -- # -F/path gives path to uninstalled frameworks, gcc on darwin -- # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC -- # @file GCC response files -+ # Flags to be passed through unchanged, with rationale: -+ # -64, -mips[0-9] enable 64-bit mode for the SGI compiler -+ # -r[0-9][0-9]* specify processor for the SGI compiler -+ # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler -+ # +DA*, +DD* enable 64-bit mode for the HP compiler -+ # -q* compiler args for the IBM compiler -+ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC -+ # -F/path path to uninstalled frameworks, gcc on darwin -+ # -p, -pg, --coverage, -fprofile-* profiling flags for GCC -+ # @file GCC response files -+ # -tp=* Portland pgcc target processor selection -+ # --sysroot=* for sysroot support -+ # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) -+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -+ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" - func_append finalize_command " $arg" -- compiler_flags="$compiler_flags $arg" -+ func_append compiler_flags " $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. -- objs="$objs $arg" -+ func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= -@@ -4808,29 +5896,29 @@ func_mode_link () - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -- dlfiles="$dlfiles $pic_object" -+ func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. -- dlprefiles="$dlprefiles $pic_object" -+ func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - -@@ -4865,34 +5953,35 @@ func_mode_link () - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. -- deplibs="$deplibs $arg" -- old_deplibs="$old_deplibs $arg" -+ func_append deplibs " $arg" -+ func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - -+ func_resolve_sysroot "$arg" - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. -- dlfiles="$dlfiles $arg" -+ func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. -- dlprefiles="$dlprefiles $arg" -+ func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else -- deplibs="$deplibs $arg" -+ func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. -@@ -4920,25 +6009,27 @@ func_mode_link () - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var -- eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` -+ eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" -+ func_to_tool_file "$output_objdir/" -+ tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; -@@ -4949,37 +6040,37 @@ func_mode_link () - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do -- if $opt_duplicate_deps ; then -+ if $opt_preserve_dup_deps ; then - case "$libs " in -- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi -- libs="$libs $deplib" -+ func_append libs " $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in -- *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; -+ *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac -- pre_post_deps="$pre_post_deps $pre_post_dep" -+ func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= -@@ -5036,52 +6127,55 @@ func_mode_link () - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= -+ func_resolve_sysroot "$lib" - case $lib in -- *.la) func_source "$lib" ;; -+ *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do -- deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` -+ func_basename "$deplib" -+ deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; -- *) deplibs="$deplibs $deplib" ;; -+ *) func_append deplibs " $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in -- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) -+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ -+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else -- compiler_flags="$compiler_flags $deplib" -+ func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; -- * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; -+ * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" -@@ -5156,65 +6250,71 @@ func_mode_link () - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; -- * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; -+ * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" -- newlib_search_path="$newlib_search_path $func_stripname_result" -+ func_resolve_sysroot "$func_stripname_result" -+ func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" -- newlib_search_path="$newlib_search_path $func_stripname_result" -+ func_resolve_sysroot "$func_stripname_result" -+ func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" -- dir=$func_stripname_result -+ func_resolve_sysroot "$func_stripname_result" -+ dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; -- *) xrpath="$xrpath $dir" ;; -+ *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; -- *.la) lib="$deplib" ;; -+ *.la) -+ func_resolve_sysroot "$deplib" -+ lib=$func_resolve_sysroot_result -+ ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, -@@ -5222,35 +6322,35 @@ func_mode_link () - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` -- if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ -+ if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then -- $ECHO -+ echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." -- $ECHO "*** I have the capability to make that library automatically link in when" -- $ECHO "*** you link to this library. But I can only do this if you have a" -- $ECHO "*** shared version of the library, which you do not appear to have" -- $ECHO "*** because the file extensions .$libext of this argument makes me believe" -- $ECHO "*** that it is just a static archive that I should not use here." -+ echo "*** I have the capability to make that library automatically link in when" -+ echo "*** you link to this library. But I can only do this if you have a" -+ echo "*** shared version of the library, which you do not appear to have" -+ echo "*** because the file extensions .$libext of this argument makes me believe" -+ echo "*** that it is just a static archive that I should not use here." - else -- $ECHO -+ echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; -@@ -5267,21 +6367,21 @@ func_mode_link () - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. -- newdlprefiles="$newdlprefiles $deplib" -+ func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else -- newdlfiles="$newdlfiles $deplib" -+ func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; -@@ -5313,83 +6413,89 @@ func_mode_link () - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then -- tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` -+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; -- *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; -+ *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi -- dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then -- test -n "$dlopen" && dlfiles="$dlfiles $dlopen" -- test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" -+ test -n "$dlopen" && func_append dlfiles " $dlopen" -+ test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. -- convenience="$convenience $ladir/$objdir/$old_library" -- old_convenience="$old_convenience $ladir/$objdir/$old_library" -+ func_append convenience " $ladir/$objdir/$old_library" -+ func_append old_convenience " $ladir/$objdir/$old_library" - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" -- if $opt_duplicate_deps ; then -+ if $opt_preserve_dup_deps ; then - case "$tmp_libs " in -- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi -- tmp_libs="$tmp_libs $deplib" -+ func_append tmp_libs " $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= -- for l in $old_library $library_names; do -- linklib="$l" -- done -+ if test -n "$old_library" && -+ { test "$prefer_static_libs" = yes || -+ test "$prefer_static_libs,$installed" = "built,no"; }; then -+ linklib=$old_library -+ else -+ for l in $old_library $library_names; do -+ linklib="$l" -+ done -+ fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. -- dlprefiles="$dlprefiles $lib $dependency_libs" -+ func_append dlprefiles " $lib $dependency_libs" - else -- newdlfiles="$newdlfiles $lib" -+ func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) -@@ -5401,61 +6507,87 @@ func_mode_link () - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then -- if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then -+ if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else -- dir="$libdir" -- absdir="$libdir" -+ dir="$lt_sysroot$libdir" -+ absdir="$lt_sysroot$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later -- notinst_path="$notinst_path $abs_ladir" -+ func_append notinst_path " $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later -- notinst_path="$notinst_path $abs_ladir" -+ func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - fi -- # Prefer using a static library (so that no silly _DYNAMIC symbols -- # are required to link). -- if test -n "$old_library"; then -- newdlprefiles="$newdlprefiles $dir/$old_library" -- # Keep a list of preopened convenience libraries to check -- # that they are being used correctly in the link pass. -- test -z "$libdir" && \ -- dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" -- # Otherwise, use the dlname, so that lt_dlopen finds it. -- elif test -n "$dlname"; then -- newdlprefiles="$newdlprefiles $dir/$dlname" -- else -- newdlprefiles="$newdlprefiles $dir/$linklib" -- fi -+ case "$host" in -+ # special handling for platforms with PE-DLLs. -+ *cygwin* | *mingw* | *cegcc* ) -+ # Linker will automatically link against shared library if both -+ # static and shared are present. Therefore, ensure we extract -+ # symbols from the import library if a shared library is present -+ # (otherwise, the dlopen module name will be incorrect). We do -+ # this by putting the import library name into $newdlprefiles. -+ # We recover the dlopen module name by 'saving' the la file -+ # name in a special purpose variable, and (later) extracting the -+ # dlname from the la file. -+ if test -n "$dlname"; then -+ func_tr_sh "$dir/$linklib" -+ eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" -+ func_append newdlprefiles " $dir/$linklib" -+ else -+ func_append newdlprefiles " $dir/$old_library" -+ # Keep a list of preopened convenience libraries to check -+ # that they are being used correctly in the link pass. -+ test -z "$libdir" && \ -+ func_append dlpreconveniencelibs " $dir/$old_library" -+ fi -+ ;; -+ * ) -+ # Prefer using a static library (so that no silly _DYNAMIC symbols -+ # are required to link). -+ if test -n "$old_library"; then -+ func_append newdlprefiles " $dir/$old_library" -+ # Keep a list of preopened convenience libraries to check -+ # that they are being used correctly in the link pass. -+ test -z "$libdir" && \ -+ func_append dlpreconveniencelibs " $dir/$old_library" -+ # Otherwise, use the dlname, so that lt_dlopen finds it. -+ elif test -n "$dlname"; then -+ func_append newdlprefiles " $dir/$dlname" -+ else -+ func_append newdlprefiles " $dir/$linklib" -+ fi -+ ;; -+ esac - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" -@@ -5463,82 +6595,83 @@ func_mode_link () - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then -- newlib_search_path="$newlib_search_path $ladir" -+ func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" -- newlib_search_path="$newlib_search_path $func_stripname_result" -+ func_resolve_sysroot "$func_stripname_result" -+ func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi -- if $opt_duplicate_deps ; then -+ if $opt_preserve_dup_deps ; then - case "$tmp_libs " in -- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi -- tmp_libs="$tmp_libs $deplib" -+ func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; -- *) temp_rpath="$temp_rpath$absdir:" ;; -+ *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; -- *) compile_rpath="$compile_rpath $absdir" -+ *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; -- *) finalize_rpath="$finalize_rpath $libdir" -+ *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && -@@ -5553,39 +6686,39 @@ func_mode_link () - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded -- notinst_deplibs="$notinst_deplibs $lib" -+ func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then -- notinst_deplibs="$notinst_deplibs $lib" -+ func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then -- $ECHO -+ echo - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && -@@ -5593,26 +6726,26 @@ func_mode_link () - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; -- *) compile_rpath="$compile_rpath $absdir" -+ *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; -- *) finalize_rpath="$finalize_rpath $libdir" -+ *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names -@@ -5656,17 +6789,17 @@ func_mode_link () - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - -- if test "$linkmode" = prog || test "$mode" != relink; then -+ if test "$linkmode" = prog || test "$opt_mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" -@@ -5678,19 +6811,19 @@ func_mode_link () - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then -- $ECHO -- $ECHO "*** And there doesn't seem to be a static archive available" -- $ECHO "*** The link will probably fail, sorry" -+ echo -+ echo "*** And there doesn't seem to be a static archive available" -+ echo "*** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac -@@ -5707,22 +6840,22 @@ func_mode_link () - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then -- add_dir="-L$dir" -+ add_dir="-L$absdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) -- add_dir="$add_dir -L$inst_prefix_dir$libdir" -+ func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else -@@ -5734,68 +6867,68 @@ func_mode_link () - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; -- *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; -+ *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; -- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; -+ *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - -- if test "$linkmode" = prog || test "$mode" = relink; then -+ if test "$linkmode" = prog || test "$opt_mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; -- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; -+ *) func_append finalize_shlibpath "$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) -- add_dir="$add_dir -L$inst_prefix_dir$libdir" -+ func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" -@@ -5820,31 +6953,31 @@ func_mode_link () - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. -- $ECHO -+ echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." -- $ECHO "*** I have the capability to make that library automatically link in when" -- $ECHO "*** you link to this library. But I can only do this if you have a" -- $ECHO "*** shared version of the library, which you do not appear to have." -+ echo "*** I have the capability to make that library automatically link in when" -+ echo "*** you link to this library. But I can only do this if you have a" -+ echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then -- $ECHO "*** But as you try to build a module library, libtool will still create " -- $ECHO "*** a static module, that should work as long as the dlopening application" -- $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." -+ echo "*** But as you try to build a module library, libtool will still create " -+ echo "*** a static module, that should work as long as the dlopening application" -+ echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then -- $ECHO -- $ECHO "*** However, this would only work if libtool was able to extract symbol" -- $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" -- $ECHO "*** not find such a program. So, this module is probably useless." -- $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." -+ echo -+ echo "*** However, this would only work if libtool was able to extract symbol" -+ echo "*** lists from a program, using \`nm' or equivalent, but libtool could" -+ echo "*** not find such a program. So, this module is probably useless." -+ echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi -@@ -5862,47 +6995,56 @@ func_mode_link () - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; -- *) xrpath="$xrpath $temp_xrpath";; -+ *) func_append xrpath " $temp_xrpath";; - esac;; -- *) temp_deplibs="$temp_deplibs $libdir";; -+ *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - -- newlib_search_path="$newlib_search_path $absdir" -+ func_append newlib_search_path " $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" -- if $opt_duplicate_deps ; then -+ case $deplib in -+ -L*) func_stripname '-L' '' "$deplib" -+ func_resolve_sysroot "$func_stripname_result";; -+ *) func_resolve_sysroot "$deplib" ;; -+ esac -+ if $opt_preserve_dup_deps ; then - case "$tmp_libs " in -- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ *" $func_resolve_sysroot_result "*) -+ func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi -- tmp_libs="$tmp_libs $deplib" -+ func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do -+ path= - case $deplib in - -L*) path="$deplib" ;; - *.la) -+ func_resolve_sysroot "$deplib" -+ deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." -- dir="$func_dirname_result" -+ dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" -@@ -5919,18 +7061,18 @@ func_mode_link () - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi -- compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" -- linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" -+ func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" -+ func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" - path= - fi - fi - ;; - *) - path="-L$absdir/$objdir" - ;; - esac -@@ -5953,34 +7095,34 @@ func_mode_link () - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else -- compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; -- *) lib_search_path="$lib_search_path $dir" ;; -+ *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else -@@ -6028,36 +7170,36 @@ func_mode_link () - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; -- *) tmp_libs="$tmp_libs $deplib" ;; -+ *) func_append tmp_libs " $deplib" ;; - esac - ;; -- *) tmp_libs="$tmp_libs $deplib" ;; -+ *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then -- tmp_libs="$tmp_libs $i" -+ func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then -@@ -6088,17 +7230,17 @@ func_mode_link () - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" -- objs="$objs$old_deplibs" -+ func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result -@@ -6121,20 +7263,20 @@ func_mode_link () - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" - else -- $ECHO -+ echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" -- libobjs="$libobjs $objs" -+ func_append libobjs " $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift -@@ -6183,23 +7325,24 @@ func_mode_link () - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in -+ # correct linux to gnu/linux during the next big refactor - darwin|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_revision" - ;; -- freebsd-aout|freebsd-elf|sunos) -+ freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" -@@ -6299,17 +7442,17 @@ func_mode_link () - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - -- linux) -+ linux) # correct to gnu/linux during the next big refactor - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result -@@ -6322,17 +7465,17 @@ func_mode_link () - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. -- verstring="$verstring:${current}.0" -+ func_append verstring ":${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) -@@ -6390,120 +7533,121 @@ func_mode_link () - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" -- libobjs="$libobjs $symfileobj" -+ func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= - -- if test "$mode" != relink; then -+ if test "$opt_mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi -- removelist="$removelist $p" -+ func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then -- oldlibs="$oldlibs $output_objdir/$libname.$libext" -+ func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. -- oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` -+ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do -- # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` -- # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` -- # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` -+ # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` -+ # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` -+ # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do -- temp_xrpath="$temp_xrpath -R$libdir" -+ func_replace_sysroot "$libdir" -+ func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; -- *) finalize_rpath="$finalize_rpath $libdir" ;; -+ *) func_append finalize_rpath " $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; -- *) dlfiles="$dlfiles $lib" ;; -+ *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; -- *) dlprefiles="$dlprefiles $lib" ;; -+ *) func_append dlprefiles " $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in -- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework -- deplibs="$deplibs System.ltframework" -+ func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then -- deplibs="$deplibs -lc" -+ func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname -@@ -6542,42 +7686,42 @@ EOF - for i in $deplibs; do - case $i in - -l*) - func_stripname -l '' "$i" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $i "*) -- newdeplibs="$newdeplibs $i" -+ func_append newdeplibs " $i" - i="" - ;; - esac - fi - if test -n "$i" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` - set dummy $deplib_matches; shift - deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then -- newdeplibs="$newdeplibs $i" -+ func_append newdeplibs " $i" - else - droppeddeps=yes -- $ECHO -+ echo - $ECHO "*** Warning: dynamic linker does not accept needed library $i." -- $ECHO "*** I have the capability to make that library automatically link in when" -- $ECHO "*** you link to this library. But I can only do this if you have a" -- $ECHO "*** shared version of the library, which I believe you do not have" -- $ECHO "*** because a test_compile did reveal that the linker did not use it for" -- $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." -+ echo "*** I have the capability to make that library automatically link in when" -+ echo "*** you link to this library. But I can only do this if you have a" -+ echo "*** shared version of the library, which I believe you do not have" -+ echo "*** because a test_compile did reveal that the linker did not use it for" -+ echo "*** its dynamic dependency list that programs get resolved with at runtime." - fi - fi - ;; - *) -- newdeplibs="$newdeplibs $i" -+ func_append newdeplibs " $i" - ;; - esac - done - else - # Error occurred in the first compile. Let's try to salvage - # the situation: Compile a separate program for each library. - for i in $deplibs; do - case $i in -@@ -6585,360 +7729,375 @@ EOF - func_stripname -l '' "$i" - name=$func_stripname_result - $opt_dry_run || $RM conftest - if $LTCC $LTCFLAGS -o conftest conftest.c $i; then - ldd_output=`ldd conftest` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $i "*) -- newdeplibs="$newdeplibs $i" -+ func_append newdeplibs " $i" - i="" - ;; - esac - fi - if test -n "$i" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` - set dummy $deplib_matches; shift - deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then -- newdeplibs="$newdeplibs $i" -+ func_append newdeplibs " $i" - else - droppeddeps=yes -- $ECHO -+ echo - $ECHO "*** Warning: dynamic linker does not accept needed library $i." -- $ECHO "*** I have the capability to make that library automatically link in when" -- $ECHO "*** you link to this library. But I can only do this if you have a" -- $ECHO "*** shared version of the library, which you do not appear to have" -- $ECHO "*** because a test_compile did reveal that the linker did not use this one" -- $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." -+ echo "*** I have the capability to make that library automatically link in when" -+ echo "*** you link to this library. But I can only do this if you have a" -+ echo "*** shared version of the library, which you do not appear to have" -+ echo "*** because a test_compile did reveal that the linker did not use this one" -+ echo "*** as a dynamic dependency that programs can get resolved with at runtime." - fi - fi - else - droppeddeps=yes -- $ECHO -+ echo - $ECHO "*** Warning! Library $i is needed by this library but I was not able to" -- $ECHO "*** make it link in! You will probably need to install it or some" -- $ECHO "*** library that it depends on before this library will be fully" -- $ECHO "*** functional. Installing it before continuing would be even better." -+ echo "*** make it link in! You will probably need to install it or some" -+ echo "*** library that it depends on before this library will be fully" -+ echo "*** functional. Installing it before continuing would be even better." - fi - ;; - *) -- newdeplibs="$newdeplibs $i" -+ func_append newdeplibs " $i" - ;; - esac - done - fi - ;; - file_magic*) - set dummy $deplibs_check_method; shift - file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) -- newdeplibs="$newdeplibs $a_deplib" -+ func_append newdeplibs " $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` -+ if test -n "$file_magic_glob"; then -+ libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` -+ else -+ libnameglob=$libname -+ fi -+ test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do -- potential_libs=`ls $i/$libname[.-]* 2>/dev/null` -+ if test "$want_nocaseglob" = yes; then -+ shopt -s nocaseglob -+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` -+ $nocaseglob -+ else -+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` -+ fi - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; -- *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; -+ *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then -- newdeplibs="$newdeplibs $a_deplib" -+ func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes -- $ECHO -+ echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." -- $ECHO "*** I have the capability to make that library automatically link in when" -- $ECHO "*** you link to this library. But I can only do this if you have a" -- $ECHO "*** shared version of the library, which you do not appear to have" -- $ECHO "*** because I did check the linker path looking for a file starting" -+ echo "*** I have the capability to make that library automatically link in when" -+ echo "*** you link to this library. But I can only do this if you have a" -+ echo "*** shared version of the library, which you do not appear to have" -+ echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. -- newdeplibs="$newdeplibs $a_deplib" -+ func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) -- newdeplibs="$newdeplibs $a_deplib" -+ func_append newdeplibs " $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test -- if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ -+ if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then -- newdeplibs="$newdeplibs $a_deplib" -+ func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes -- $ECHO -+ echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." -- $ECHO "*** I have the capability to make that library automatically link in when" -- $ECHO "*** you link to this library. But I can only do this if you have a" -- $ECHO "*** shared version of the library, which you do not appear to have" -- $ECHO "*** because I did check the linker path looking for a file starting" -+ echo "*** I have the capability to make that library automatically link in when" -+ echo "*** you link to this library. But I can only do this if you have a" -+ echo "*** shared version of the library, which you do not appear to have" -+ echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. -- newdeplibs="$newdeplibs $a_deplib" -+ func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" -- tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ -- -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` -+ tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' -- tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` -+ tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` - done - fi -- if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | -- $GREP . >/dev/null; then -- $ECHO -+ case $tmp_deplibs in -+ *[!\ \ ]*) -+ echo - if test "X$deplibs_check_method" = "Xnone"; then -- $ECHO "*** Warning: inter-library dependencies are not supported in this platform." -+ echo "*** Warning: inter-library dependencies are not supported in this platform." - else -- $ECHO "*** Warning: inter-library dependencies are not known to be supported." -+ echo "*** Warning: inter-library dependencies are not known to be supported." - fi -- $ECHO "*** All declared inter-library dependencies are being dropped." -+ echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes -- fi -+ ;; -+ esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework -- newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then -- $ECHO -- $ECHO "*** Warning: libtool could not satisfy all declared inter-library" -+ echo -+ echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" -- $ECHO "*** a static module, that should work as long as the dlopening" -- $ECHO "*** application is linked with the -dlopen flag." -+ echo "*** a static module, that should work as long as the dlopening" -+ echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then -- $ECHO -- $ECHO "*** However, this would only work if libtool was able to extract symbol" -- $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" -- $ECHO "*** not find such a program. So, this module is probably useless." -- $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." -+ echo -+ echo "*** However, this would only work if libtool was able to extract symbol" -+ echo "*** lists from a program, using \`nm' or equivalent, but libtool could" -+ echo "*** not find such a program. So, this module is probably useless." -+ echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else -- $ECHO "*** The inter-library dependencies that have been dropped here will be" -- $ECHO "*** automatically added whenever a program is linked with this library" -- $ECHO "*** or is declared to -dlopen it." -+ echo "*** The inter-library dependencies that have been dropped here will be" -+ echo "*** automatically added whenever a program is linked with this library" -+ echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then -- $ECHO -- $ECHO "*** Since this library must not contain undefined symbols," -- $ECHO "*** because either the platform does not support them or" -- $ECHO "*** it was explicitly requested with -no-undefined," -- $ECHO "*** libtool will only create a static version of it." -+ echo -+ echo "*** Since this library must not contain undefined symbols," -+ echo "*** because either the platform does not support them or" -+ echo "*** it was explicitly requested with -no-undefined," -+ echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) -- newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -- new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -- deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` -+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` -+ deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) -- new_libs="$new_libs -L$path/$objdir" ;; -+ func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; -- *) new_libs="$new_libs $deplib" ;; -+ *) func_append new_libs " $deplib" ;; - esac - ;; -- *) new_libs="$new_libs $deplib" ;; -+ *) func_append new_libs " $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then -+ # Remove ${wl} instances when linking with ld. -+ # FIXME: should test the right _cmds variable. -+ case $archive_cmds in -+ *\$LD\ *) wl= ;; -+ esac - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" -- test "$mode" != relink && rpath="$compile_rpath$rpath" -+ test "$opt_mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then -+ func_replace_sysroot "$libdir" -+ libdir=$func_replace_sysroot_result - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) -- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" -+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" -- dep_rpath="$dep_rpath $flag" -+ func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; -- *) perm_rpath="$perm_rpath $libdir" ;; -+ *) func_append perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" -- if test -n "$hardcode_libdir_flag_spec_ld"; then -- eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" -- else -- eval dep_rpath=\"$hardcode_libdir_flag_spec\" -- fi -+ eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do -- rpath="$rpath$dir:" -+ func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" -- test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" -+ test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names -@@ -6954,28 +8113,28 @@ EOF - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do -- linknames="$linknames $link" -+ func_append linknames " $link" - done - - # Use standard objects if they are pic -- test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" -- delfiles="$delfiles $export_symbols" -+ func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then -@@ -6996,24 +8155,56 @@ EOF - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' -- for cmd in $cmds; do -+ for cmd1 in $cmds; do - IFS="$save_ifs" -- eval cmd=\"$cmd\" -- func_len " $cmd" -- len=$func_len_result -- if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then -+ # Take the normal branch if the nm_file_list_spec branch -+ # doesn't work or if tool conversion is not needed. -+ case $nm_file_list_spec~$to_tool_file_cmd in -+ *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) -+ try_normal_branch=yes -+ eval cmd=\"$cmd1\" -+ func_len " $cmd" -+ len=$func_len_result -+ ;; -+ *) -+ try_normal_branch=no -+ ;; -+ esac -+ if test "$try_normal_branch" = yes \ -+ && { test "$len" -lt "$max_cmd_len" \ -+ || test "$max_cmd_len" -le -1; } -+ then - func_show_eval "$cmd" 'exit $?' - skipped_export=false -+ elif test -n "$nm_file_list_spec"; then -+ func_basename "$output" -+ output_la=$func_basename_result -+ save_libobjs=$libobjs -+ save_output=$output -+ output=${output_objdir}/${output_la}.nm -+ func_to_tool_file "$output" -+ libobjs=$nm_file_list_spec$func_to_tool_file_result -+ func_append delfiles " $output" -+ func_verbose "creating $NM input file list: $output" -+ for obj in $save_libobjs; do -+ func_to_tool_file "$obj" -+ $ECHO "$func_to_tool_file_result" -+ done > "$output" -+ eval cmd=\"$cmd1\" -+ func_show_eval "$cmd" 'exit $?' -+ output=$save_output -+ libobjs=$save_libobjs -+ skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi -@@ -7024,39 +8215,39 @@ EOF - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" -- $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' -+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter -- delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" -+ func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) -- tmp_deplibs="$tmp_deplibs $test_deplib" -+ func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && -@@ -7066,31 +8257,31 @@ EOF - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" -- generated="$generated $gentop" -+ func_append generated " $gentop" - - func_extract_archives $gentop $convenience -- libobjs="$libobjs $func_extract_archives_result" -+ func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" -- linker_flags="$linker_flags $flag" -+ func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking -- if test "$mode" = relink; then -+ if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds -@@ -7125,53 +8316,59 @@ EOF - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output -- output_la=`$ECHO "X$output" | $Xsed -e "$basename"` -+ func_basename "$output" -+ output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript - func_verbose "creating GNU ld script: $output" -- $ECHO 'INPUT (' > $output -+ echo 'INPUT (' > $output - for obj in $save_libobjs - do -- $ECHO "$obj" >> $output -+ func_to_tool_file "$obj" -+ $ECHO "$func_to_tool_file_result" >> $output - done -- $ECHO ')' >> $output -- delfiles="$delfiles $output" -+ echo ')' >> $output -+ func_append delfiles " $output" -+ func_to_tool_file "$output" -+ output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do -- $ECHO "$obj" >> $output -+ func_to_tool_file "$obj" -+ $ECHO "$func_to_tool_file_result" >> $output - done -- delfiles="$delfiles $output" -- output=$firstobj\"$file_list_spec$output\" -+ func_append delfiles " $output" -+ func_to_tool_file "$output" -+ output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 -@@ -7185,41 +8382,44 @@ EOF - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. -- eval concat_cmds=\"$reload_cmds $objlist $last_robj\" -+ reload_objs=$objlist -+ eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. -- eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" -+ reload_objs="$objlist $last_robj" -+ eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext -- objlist=$obj -+ objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ -- eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" -+ reload_objs="$objlist $last_robj" -+ eval concat_cmds=\"\${concat_cmds}$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" - fi -- delfiles="$delfiles $output" -+ func_append delfiles " $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" -@@ -7243,17 +8443,17 @@ EOF - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit -- if test "$mode" = relink; then -+ if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done -@@ -7264,29 +8464,29 @@ EOF - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" -- $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' -+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter -- delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" -+ func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - fi - - libobjs=$output - # Restore the value of output. - output=$save_output -@@ -7317,48 +8517,48 @@ EOF - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" -- generated="$generated $gentop" -+ func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles -- libobjs="$libobjs $func_extract_archives_result" -+ func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit -- if test "$mode" = relink; then -+ if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit -- if test "$mode" = relink; then -+ if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - -@@ -7429,28 +8629,31 @@ EOF - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" -- reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` -+ reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" -- generated="$generated $gentop" -+ func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - -+ # If we're not building shared, we need to use non_pic_objs -+ test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" -+ - # Create the old-style object. -- reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test -+ reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' -@@ -7500,78 +8703,78 @@ EOF - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework -- compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -- finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` -+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) -- compile_command="$compile_command ${wl}-bind_at_load" -- finalize_command="$finalize_command ${wl}-bind_at_load" -+ func_append compile_command " ${wl}-bind_at_load" -+ func_append finalize_command " ${wl}-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" -- compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -- finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` -+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) -- new_libs="$new_libs -L$path/$objdir" ;; -+ func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; -- *) new_libs="$new_libs $deplib" ;; -+ *) func_append new_libs " $deplib" ;; - esac - ;; -- *) new_libs="$new_libs $deplib" ;; -+ *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - -- compile_command="$compile_command $compile_deplibs" -- finalize_command="$finalize_command $finalize_deplibs" -+ func_append compile_command " $compile_deplibs" -+ func_append finalize_command " $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; -- *) finalize_rpath="$finalize_rpath $libdir" ;; -+ *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do -@@ -7580,42 +8783,42 @@ EOF - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) -- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" -+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" -- rpath="$rpath $flag" -+ func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; -- *) perm_rpath="$perm_rpath $libdir" ;; -+ *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; -- *) dllsearchpath="$dllsearchpath:$libdir";; -+ *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; -- *) dllsearchpath="$dllsearchpath:$testbindir";; -+ *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" -@@ -7631,78 +8834,84 @@ EOF - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) -- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" -+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" -- rpath="$rpath $flag" -+ func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; -- *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; -+ *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. -- compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -- finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` -+ finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=yes - case $host in -+ *cegcc* | *mingw32ce*) -+ # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. -+ wrappers_required=no -+ ;; - *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; -- *cegcc) -- # Disable wrappers for cegcc, we are cross compiling anyway. -- wrappers_required=no -- ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. -- compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` -+ compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - -+ if test -n "$postlink_cmds"; then -+ func_to_tool_file "$output" -+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` -+ func_execute_cmds "$postlink_cmds" 'exit $?' -+ fi -+ - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' - fi - - exit $exit_status - fi - -@@ -7715,72 +8924,85 @@ EOF - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do -- rpath="$rpath$dir:" -+ func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do -- rpath="$rpath$dir:" -+ func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. -- link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` -+ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' -+ -+ if test -n "$postlink_cmds"; then -+ func_to_tool_file "$output" -+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` -+ func_execute_cmds "$postlink_cmds" 'exit $?' -+ fi -+ - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then -- relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` -+ relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. -- link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` -+ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - -+ if test -n "$postlink_cmds"; then -+ func_to_tool_file "$output_objdir/$outputname" -+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` -+ func_execute_cmds "$postlink_cmds" 'exit $?' -+ fi -+ - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then -@@ -7788,28 +9010,17 @@ EOF - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" -- relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` -- fi -- -- # Quote $ECHO for shipping. -- if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then -- case $progpath in -- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; -- *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; -- esac -- qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` -- else -- qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` -+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" -@@ -7879,60 +9090,60 @@ EOF - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then -- oldobjs="$oldobjs $symfileobj" -+ func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" -- generated="$generated $gentop" -+ func_append generated " $gentop" - - func_extract_archives $gentop $addlibs -- oldobjs="$oldobjs $func_extract_archives_result" -+ func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" -- generated="$generated $gentop" -+ func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles -- oldobjs="$oldobjs $func_extract_archives_result" -+ func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else -- $ECHO "copying selected object files to avoid basename conflicts..." -+ echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" -- generated="$generated $gentop" -+ func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" -@@ -7946,28 +9157,40 @@ EOF - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" -- oldobjs="$oldobjs $gentop/$newobj" -+ func_append oldobjs " $gentop/$newobj" - ;; -- *) oldobjs="$oldobjs $obj" ;; -+ *) func_append oldobjs " $obj" ;; - esac - done - fi -+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 -+ tool_oldlib=$func_to_tool_file_result - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds -+ elif test -n "$archiver_list_spec"; then -+ func_verbose "using command file archive linking..." -+ for obj in $oldobjs -+ do -+ func_to_tool_file "$obj" -+ $ECHO "$func_to_tool_file_result" -+ done > $output_objdir/$libname.libcmd -+ func_to_tool_file "$output_objdir/$libname.libcmd" -+ oldobjs=" $archiver_list_spec$func_to_tool_file_result" -+ cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs -@@ -8031,17 +9254,17 @@ EOF - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" -- relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` -+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then -@@ -8051,84 +9274,113 @@ EOF - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" -- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` -+ func_resolve_sysroot "$deplib" -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" -- newdependency_libs="$newdependency_libs $libdir/$name" -+ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; -- *) newdependency_libs="$newdependency_libs $deplib" ;; -+ -L*) -+ func_stripname -L '' "$deplib" -+ func_replace_sysroot "$func_stripname_result" -+ func_append newdependency_libs " -L$func_replace_sysroot_result" -+ ;; -+ -R*) -+ func_stripname -R '' "$deplib" -+ func_replace_sysroot "$func_stripname_result" -+ func_append newdependency_libs " -R$func_replace_sysroot_result" -+ ;; -+ *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" -- newdlfiles="$newdlfiles $libdir/$name" -+ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; -- *) newdlfiles="$newdlfiles $lib" ;; -+ *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" -- newdlprefiles="$newdlprefiles $libdir/$name" -+ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac -- newdlfiles="$newdlfiles $abs" -+ func_append newdlfiles " $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac -- newdlprefiles="$newdlprefiles $abs" -+ func_append newdlprefiles " $abs" - done - dlprefiles="$newdlprefiles" - fi - $RM $output - # place dlname in correct position for cygwin -+ # In fact, it would be nice if we could use this code for all target -+ # systems that can't hard-code library paths into their executables -+ # and that have no shared library path variable independent of PATH, -+ # but it turns out we can't easily determine that from inspecting -+ # libtool variables, so we have to hard-code the OSs to which it -+ # applies here; at the moment, that means platforms that use the PE -+ # object format with DLL files. See the long comment at the top of -+ # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in -- *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; -+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) -+ # If a -bindir argument was supplied, place the dll there. -+ if test "x$bindir" != x ; -+ then -+ func_relative_path "$install_libdir" "$bindir" -+ tdlname=$func_relative_path_result$dlname -+ else -+ # Otherwise fall back on heuristic. -+ tdlname=../bin/$dlname -+ fi -+ ;; - esac - $ECHO > $output "\ - # $outputname - a libtool library file - # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION - # - # Please DO NOT delete this file! - # It is necessary for linking the library. - -@@ -8177,17 +9429,17 @@ relink_command=\"$relink_command\"" - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS - } - --{ test "$mode" = link || test "$mode" = relink; } && -+{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} - - - # func_mode_uninstall arg... - func_mode_uninstall () - { - $opt_debug - RM="$nonopt" -@@ -8197,45 +9449,44 @@ func_mode_uninstall () - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in -- -f) RM="$RM $arg"; rmforce=yes ;; -- -*) RM="$RM $arg" ;; -- *) files="$files $arg" ;; -+ -f) func_append RM " $arg"; rmforce=yes ;; -+ -*) func_append RM " $arg" ;; -+ *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - -- origobjdir="$objdir" - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then -- objdir="$origobjdir" -+ odir="$objdir" - else -- objdir="$dir/$origobjdir" -+ odir="$dir/$objdir" - fi - func_basename "$file" - name="$func_basename_result" -- test "$mode" = uninstall && objdir="$dir" -- -- # Remember objdir for removal later, being careful to avoid duplicates -- if test "$mode" = clean; then -+ test "$opt_mode" = uninstall && odir="$dir" -+ -+ # Remember odir for removal later, being careful to avoid duplicates -+ if test "$opt_mode" = clean; then - case " $rmdirs " in -- *" $objdir "*) ;; -- *) rmdirs="$rmdirs $objdir" ;; -+ *" $odir "*) ;; -+ *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : -@@ -8251,28 +9502,27 @@ func_mode_uninstall () - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do -- rmfiles="$rmfiles $objdir/$n" -+ func_append rmfiles " $odir/$n" - done -- test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" -- -- case "$mode" in -+ test -n "$old_library" && func_append rmfiles " $odir/$old_library" -+ -+ case "$opt_mode" in - clean) -- case " $library_names " in -- # " " in the beginning catches empty $dlname -+ case " $library_names " in - *" $dlname "*) ;; -- *) rmfiles="$rmfiles $objdir/$dlname" ;; -+ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac -- test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" -+ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then -@@ -8290,90 +9540,89 @@ func_mode_uninstall () - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then -- rmfiles="$rmfiles $dir/$pic_object" -+ func_append rmfiles " $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then -- rmfiles="$rmfiles $dir/$non_pic_object" -+ func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) -- if test "$mode" = clean ; then -+ if test "$opt_mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe -- rmfiles="$rmfiles $file" -+ func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result -- rmfiles="$rmfiles $func_ltwrapper_scriptname_result" -+ func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles -- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" -+ func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then -- rmfiles="$rmfiles $objdir/lt-$name" -+ func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then -- rmfiles="$rmfiles $objdir/lt-${noexename}.c" -+ func_append rmfiles " $odir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done -- objdir="$origobjdir" - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status - } - --{ test "$mode" = uninstall || test "$mode" = clean; } && -+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} - --test -z "$mode" && { -+test -z "$opt_mode" && { - help="$generic_help" - func_fatal_help "you must specify a MODE" - } - - test -z "$exec_cmd" && \ -- func_fatal_help "invalid operation mode \`$mode'" -+ func_fatal_help "invalid operation mode \`$opt_mode'" - - if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE - fi - - exit $exit_status - -diff --git a/js/src/ctypes/libffi/m4/asmcfi.m4 b/js/src/ctypes/libffi/m4/asmcfi.m4 -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/m4/asmcfi.m4 -@@ -0,0 +1,13 @@ -+AC_DEFUN([GCC_AS_CFI_PSEUDO_OP], -+[AC_CACHE_CHECK([assembler .cfi pseudo-op support], -+ gcc_cv_as_cfi_pseudo_op, [ -+ gcc_cv_as_cfi_pseudo_op=unknown -+ AC_TRY_COMPILE([asm (".cfi_startproc\n\t.cfi_endproc");],, -+ [gcc_cv_as_cfi_pseudo_op=yes], -+ [gcc_cv_as_cfi_pseudo_op=no]) -+ ]) -+ if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then -+ AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1, -+ [Define if your assembler supports .cfi_* directives.]) -+ fi -+]) -diff --git a/js/src/ctypes/libffi/m4/ax_append_flag.m4 b/js/src/ctypes/libffi/m4/ax_append_flag.m4 -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/m4/ax_append_flag.m4 -@@ -0,0 +1,69 @@ -+# =========================================================================== -+# http://www.gnu.org/software/autoconf-archive/ax_append_flag.html -+# =========================================================================== -+# -+# SYNOPSIS -+# -+# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) -+# -+# DESCRIPTION -+# -+# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space -+# added in between. -+# -+# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. -+# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains -+# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly -+# FLAG. -+# -+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. -+# -+# LICENSE -+# -+# Copyright (c) 2008 Guido U. Draheim -+# Copyright (c) 2011 Maarten Bosmans -+# -+# This program is free software: you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by the -+# Free Software Foundation, either version 3 of the License, or (at your -+# option) any later version. -+# -+# This program is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -+# Public License for more details. -+# -+# You should have received a copy of the GNU General Public License along -+# with this program. If not, see . -+# -+# As a special exception, the respective Autoconf Macro's copyright owner -+# gives unlimited permission to copy, distribute and modify the configure -+# scripts that are the output of Autoconf when processing the Macro. You -+# need not follow the terms of the GNU General Public License when using -+# or distributing such scripts, even though portions of the text of the -+# Macro appear in them. The GNU General Public License (GPL) does govern -+# all other use of the material that constitutes the Autoconf Macro. -+# -+# This special exception to the GPL applies to versions of the Autoconf -+# Macro released by the Autoconf Archive. When you make and distribute a -+# modified version of the Autoconf Macro, you may extend this special -+# exception to the GPL to apply to your modified version as well. -+ -+#serial 2 -+ -+AC_DEFUN([AX_APPEND_FLAG], -+[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX -+AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])dnl -+AS_VAR_SET_IF(FLAGS, -+ [case " AS_VAR_GET(FLAGS) " in -+ *" $1 "*) -+ AC_RUN_LOG([: FLAGS already contains $1]) -+ ;; -+ *) -+ AC_RUN_LOG([: FLAGS="$FLAGS $1"]) -+ AS_VAR_SET(FLAGS, ["AS_VAR_GET(FLAGS) $1"]) -+ ;; -+ esac], -+ [AS_VAR_SET(FLAGS,["$1"])]) -+AS_VAR_POPDEF([FLAGS])dnl -+])dnl AX_APPEND_FLAG -diff --git a/js/src/ctypes/libffi/m4/ax_cc_maxopt.m4 b/js/src/ctypes/libffi/m4/ax_cc_maxopt.m4 -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/m4/ax_cc_maxopt.m4 -@@ -0,0 +1,181 @@ -+# =========================================================================== -+# http://www.gnu.org/software/autoconf-archive/ax_cc_maxopt.html -+# =========================================================================== -+# -+# SYNOPSIS -+# -+# AX_CC_MAXOPT -+# -+# DESCRIPTION -+# -+# Try to turn on "good" C optimization flags for various compilers and -+# architectures, for some definition of "good". (In our case, good for -+# FFTW and hopefully for other scientific codes. Modify as needed.) -+# -+# The user can override the flags by setting the CFLAGS environment -+# variable. The user can also specify --enable-portable-binary in order to -+# disable any optimization flags that might result in a binary that only -+# runs on the host architecture. -+# -+# Note also that the flags assume that ANSI C aliasing rules are followed -+# by the code (e.g. for gcc's -fstrict-aliasing), and that floating-point -+# computations can be re-ordered as needed. -+# -+# Requires macros: AX_CHECK_COMPILE_FLAG, AX_COMPILER_VENDOR, -+# AX_GCC_ARCHFLAG, AX_GCC_X86_CPUID. -+# -+# LICENSE -+# -+# Copyright (c) 2008 Steven G. Johnson -+# Copyright (c) 2008 Matteo Frigo -+# -+# This program is free software: you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by the -+# Free Software Foundation, either version 3 of the License, or (at your -+# option) any later version. -+# -+# This program is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -+# Public License for more details. -+# -+# You should have received a copy of the GNU General Public License along -+# with this program. If not, see . -+# -+# As a special exception, the respective Autoconf Macro's copyright owner -+# gives unlimited permission to copy, distribute and modify the configure -+# scripts that are the output of Autoconf when processing the Macro. You -+# need not follow the terms of the GNU General Public License when using -+# or distributing such scripts, even though portions of the text of the -+# Macro appear in them. The GNU General Public License (GPL) does govern -+# all other use of the material that constitutes the Autoconf Macro. -+# -+# This special exception to the GPL applies to versions of the Autoconf -+# Macro released by the Autoconf Archive. When you make and distribute a -+# modified version of the Autoconf Macro, you may extend this special -+# exception to the GPL to apply to your modified version as well. -+ -+#serial 13 -+ -+AC_DEFUN([AX_CC_MAXOPT], -+[ -+AC_REQUIRE([AC_PROG_CC]) -+AC_REQUIRE([AX_COMPILER_VENDOR]) -+AC_REQUIRE([AC_CANONICAL_HOST]) -+ -+AC_ARG_ENABLE(portable-binary, [AS_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])], -+ acx_maxopt_portable=$enableval, acx_maxopt_portable=no) -+ -+# Try to determine "good" native compiler flags if none specified via CFLAGS -+if test "$ac_test_CFLAGS" != "set"; then -+ CFLAGS="" -+ case $ax_cv_c_compiler_vendor in -+ dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host" -+ if test "x$acx_maxopt_portable" = xno; then -+ CFLAGS="$CFLAGS -arch host" -+ fi;; -+ -+ sun) CFLAGS="-native -fast -xO5 -dalign" -+ if test "x$acx_maxopt_portable" = xyes; then -+ CFLAGS="$CFLAGS -xarch=generic" -+ fi;; -+ -+ hp) CFLAGS="+Oall +Optrs_ansi +DSnative" -+ if test "x$acx_maxopt_portable" = xyes; then -+ CFLAGS="$CFLAGS +DAportable" -+ fi;; -+ -+ ibm) if test "x$acx_maxopt_portable" = xno; then -+ xlc_opt="-qarch=auto -qtune=auto" -+ else -+ xlc_opt="-qtune=auto" -+ fi -+ AX_CHECK_COMPILE_FLAG($xlc_opt, -+ CFLAGS="-O3 -qansialias -w $xlc_opt", -+ [CFLAGS="-O3 -qansialias -w" -+ echo "******************************************************" -+ echo "* You seem to have the IBM C compiler. It is *" -+ echo "* recommended for best performance that you use: *" -+ echo "* *" -+ echo "* CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *" -+ echo "* ^^^ ^^^ *" -+ echo "* where xxx is pwr2, pwr3, 604, or whatever kind of *" -+ echo "* CPU you have. (Set the CFLAGS environment var. *" -+ echo "* and re-run configure.) For more info, man cc. *" -+ echo "******************************************************"]) -+ ;; -+ -+ intel) CFLAGS="-O3 -ansi_alias" -+ if test "x$acx_maxopt_portable" = xno; then -+ icc_archflag=unknown -+ icc_flags="" -+ case $host_cpu in -+ i686*|x86_64*) -+ # icc accepts gcc assembly syntax, so these should work: -+ AX_GCC_X86_CPUID(0) -+ AX_GCC_X86_CPUID(1) -+ case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG -+ *:756e6547:*:*) # Intel -+ case $ax_cv_gcc_x86_cpuid_1 in -+ *6a?:*[[234]]:*:*|*6[[789b]]?:*:*:*) icc_flags="-xK";; -+ *f3[[347]]:*:*:*|*f4[1347]:*:*:*) icc_flags="-xP -xN -xW -xK";; -+ *f??:*:*:*) icc_flags="-xN -xW -xK";; -+ esac ;; -+ esac ;; -+ esac -+ if test "x$icc_flags" != x; then -+ for flag in $icc_flags; do -+ AX_CHECK_COMPILE_FLAG($flag, [icc_archflag=$flag; break]) -+ done -+ fi -+ AC_MSG_CHECKING([for icc architecture flag]) -+ AC_MSG_RESULT($icc_archflag) -+ if test "x$icc_archflag" != xunknown; then -+ CFLAGS="$CFLAGS $icc_archflag" -+ fi -+ fi -+ ;; -+ -+ gnu) -+ # default optimization flags for gcc on all systems -+ CFLAGS="-O3 -fomit-frame-pointer" -+ -+ # -malign-double for x86 systems -+ # LIBFFI -- DON'T DO THIS - CHANGES ABI -+ # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double") -+ -+ # -fstrict-aliasing for gcc-2.95+ -+ AX_CHECK_COMPILE_FLAG(-fstrict-aliasing, -+ CFLAGS="$CFLAGS -fstrict-aliasing") -+ -+ # note that we enable "unsafe" fp optimization with other compilers, too -+ AX_CHECK_COMPILE_FLAG(-ffast-math, CFLAGS="$CFLAGS -ffast-math") -+ -+ AX_GCC_ARCHFLAG($acx_maxopt_portable) -+ ;; -+ esac -+ -+ if test -z "$CFLAGS"; then -+ echo "" -+ echo "********************************************************" -+ echo "* WARNING: Don't know the best CFLAGS for this system *" -+ echo "* Use ./configure CFLAGS=... to specify your own flags *" -+ echo "* (otherwise, a default of CFLAGS=-O3 will be used) *" -+ echo "********************************************************" -+ echo "" -+ CFLAGS="-O3" -+ fi -+ -+ AX_CHECK_COMPILE_FLAG($CFLAGS, [], [ -+ echo "" -+ echo "********************************************************" -+ echo "* WARNING: The guessed CFLAGS don't seem to work with *" -+ echo "* your compiler. *" -+ echo "* Use ./configure CFLAGS=... to specify your own flags *" -+ echo "********************************************************" -+ echo "" -+ CFLAGS="" -+ ]) -+ -+fi -+]) -diff --git a/js/src/ctypes/libffi/m4/ax_cflags_warn_all.m4 b/js/src/ctypes/libffi/m4/ax_cflags_warn_all.m4 -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/m4/ax_cflags_warn_all.m4 -@@ -0,0 +1,122 @@ -+# =========================================================================== -+# http://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html -+# =========================================================================== -+# -+# SYNOPSIS -+# -+# AX_CFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] -+# AX_CXXFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] -+# AX_FCFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] -+# -+# DESCRIPTION -+# -+# Try to find a compiler option that enables most reasonable warnings. -+# -+# For the GNU compiler it will be -Wall (and -ansi -pedantic) The result -+# is added to the shellvar being CFLAGS, CXXFLAGS, or FCFLAGS by default. -+# -+# Currently this macro knows about the GCC, Solaris, Digital Unix, AIX, -+# HP-UX, IRIX, NEC SX-5 (Super-UX 10), Cray J90 (Unicos 10.0.0.8), and -+# Intel compilers. For a given compiler, the Fortran flags are much more -+# experimental than their C equivalents. -+# -+# - $1 shell-variable-to-add-to : CFLAGS, CXXFLAGS, or FCFLAGS -+# - $2 add-value-if-not-found : nothing -+# - $3 action-if-found : add value to shellvariable -+# - $4 action-if-not-found : nothing -+# -+# NOTE: These macros depend on AX_APPEND_FLAG. -+# -+# LICENSE -+# -+# Copyright (c) 2008 Guido U. Draheim -+# Copyright (c) 2010 Rhys Ulerich -+# -+# This program is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by the -+# Free Software Foundation; either version 3 of the License, or (at your -+# option) any later version. -+# -+# This program is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -+# Public License for more details. -+# -+# You should have received a copy of the GNU General Public License along -+# with this program. If not, see . -+# -+# As a special exception, the respective Autoconf Macro's copyright owner -+# gives unlimited permission to copy, distribute and modify the configure -+# scripts that are the output of Autoconf when processing the Macro. You -+# need not follow the terms of the GNU General Public License when using -+# or distributing such scripts, even though portions of the text of the -+# Macro appear in them. The GNU General Public License (GPL) does govern -+# all other use of the material that constitutes the Autoconf Macro. -+# -+# This special exception to the GPL applies to versions of the Autoconf -+# Macro released by the Autoconf Archive. When you make and distribute a -+# modified version of the Autoconf Macro, you may extend this special -+# exception to the GPL to apply to your modified version as well. -+ -+#serial 14 -+ -+AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl -+AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl -+AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl -+AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings], -+VAR,[VAR="no, unknown" -+ac_save_[]FLAGS="$[]FLAGS" -+for ac_arg dnl -+in "-warn all % -warn all" dnl Intel -+ "-pedantic % -Wall" dnl GCC -+ "-xstrconst % -v" dnl Solaris C -+ "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix -+ "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX -+ "-ansi -ansiE % -fullwarn" dnl IRIX -+ "+ESlit % +w1" dnl HP-UX C -+ "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10) -+ "-h conform % -h msglevel 2" dnl Cray C (Unicos) -+ # -+do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM], -+ [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) -+done -+FLAGS="$ac_save_[]FLAGS" -+]) -+AS_VAR_POPDEF([FLAGS])dnl -+AC_REQUIRE([AX_APPEND_FLAG]) -+case ".$VAR" in -+ .ok|.ok,*) m4_ifvaln($3,$3) ;; -+ .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;; -+ *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;; -+esac -+AS_VAR_POPDEF([VAR])dnl -+])dnl AX_FLAGS_WARN_ALL -+dnl implementation tactics: -+dnl the for-argument contains a list of options. The first part of -+dnl these does only exist to detect the compiler - usually it is -+dnl a global option to enable -ansi or -extrawarnings. All other -+dnl compilers will fail about it. That was needed since a lot of -+dnl compilers will give false positives for some option-syntax -+dnl like -Woption or -Xoption as they think of it is a pass-through -+dnl to later compile stages or something. The "%" is used as a -+dnl delimiter. A non-option comment can be given after "%%" marks -+dnl which will be shown but not added to the respective C/CXXFLAGS. -+ -+AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl -+AC_LANG_PUSH([C]) -+AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) -+AC_LANG_POP([C]) -+]) -+ -+AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl -+AC_LANG_PUSH([C++]) -+AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) -+AC_LANG_POP([C++]) -+]) -+ -+AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl -+AC_LANG_PUSH([Fortran]) -+AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) -+AC_LANG_POP([Fortran]) -+]) -diff --git a/js/src/ctypes/libffi/m4/ax_check_compile_flag.m4 b/js/src/ctypes/libffi/m4/ax_check_compile_flag.m4 -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/m4/ax_check_compile_flag.m4 -@@ -0,0 +1,72 @@ -+# =========================================================================== -+# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html -+# =========================================================================== -+# -+# SYNOPSIS -+# -+# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) -+# -+# DESCRIPTION -+# -+# Check whether the given FLAG works with the current language's compiler -+# or gives an error. (Warnings, however, are ignored) -+# -+# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on -+# success/failure. -+# -+# If EXTRA-FLAGS is defined, it is added to the current language's default -+# flags (e.g. CFLAGS) when the check is done. The check is thus made with -+# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to -+# force the compiler to issue an error when a bad flag is given. -+# -+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this -+# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. -+# -+# LICENSE -+# -+# Copyright (c) 2008 Guido U. Draheim -+# Copyright (c) 2011 Maarten Bosmans -+# -+# This program is free software: you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by the -+# Free Software Foundation, either version 3 of the License, or (at your -+# option) any later version. -+# -+# This program is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -+# Public License for more details. -+# -+# You should have received a copy of the GNU General Public License along -+# with this program. If not, see . -+# -+# As a special exception, the respective Autoconf Macro's copyright owner -+# gives unlimited permission to copy, distribute and modify the configure -+# scripts that are the output of Autoconf when processing the Macro. You -+# need not follow the terms of the GNU General Public License when using -+# or distributing such scripts, even though portions of the text of the -+# Macro appear in them. The GNU General Public License (GPL) does govern -+# all other use of the material that constitutes the Autoconf Macro. -+# -+# This special exception to the GPL applies to versions of the Autoconf -+# Macro released by the Autoconf Archive. When you make and distribute a -+# modified version of the Autoconf Macro, you may extend this special -+# exception to the GPL to apply to your modified version as well. -+ -+#serial 2 -+ -+AC_DEFUN([AX_CHECK_COMPILE_FLAG], -+[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX -+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl -+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ -+ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS -+ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], -+ [AS_VAR_SET(CACHEVAR,[yes])], -+ [AS_VAR_SET(CACHEVAR,[no])]) -+ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) -+AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], -+ [m4_default([$2], :)], -+ [m4_default([$3], :)]) -+AS_VAR_POPDEF([CACHEVAR])dnl -+])dnl AX_CHECK_COMPILE_FLAGS -diff --git a/js/src/ctypes/libffi/m4/ax_compiler_vendor.m4 b/js/src/ctypes/libffi/m4/ax_compiler_vendor.m4 -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/m4/ax_compiler_vendor.m4 -@@ -0,0 +1,84 @@ -+# =========================================================================== -+# http://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html -+# =========================================================================== -+# -+# SYNOPSIS -+# -+# AX_COMPILER_VENDOR -+# -+# DESCRIPTION -+# -+# Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun, -+# hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft, -+# watcom, etc. The vendor is returned in the cache variable -+# $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++. -+# -+# LICENSE -+# -+# Copyright (c) 2008 Steven G. Johnson -+# Copyright (c) 2008 Matteo Frigo -+# -+# This program is free software: you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by the -+# Free Software Foundation, either version 3 of the License, or (at your -+# option) any later version. -+# -+# This program is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -+# Public License for more details. -+# -+# You should have received a copy of the GNU General Public License along -+# with this program. If not, see . -+# -+# As a special exception, the respective Autoconf Macro's copyright owner -+# gives unlimited permission to copy, distribute and modify the configure -+# scripts that are the output of Autoconf when processing the Macro. You -+# need not follow the terms of the GNU General Public License when using -+# or distributing such scripts, even though portions of the text of the -+# Macro appear in them. The GNU General Public License (GPL) does govern -+# all other use of the material that constitutes the Autoconf Macro. -+# -+# This special exception to the GPL applies to versions of the Autoconf -+# Macro released by the Autoconf Archive. When you make and distribute a -+# modified version of the Autoconf Macro, you may extend this special -+# exception to the GPL to apply to your modified version as well. -+ -+#serial 11 -+ -+AC_DEFUN([AX_COMPILER_VENDOR], -+[AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, -+ [# note: don't check for gcc first since some other compilers define __GNUC__ -+ vendors="intel: __ICC,__ECC,__INTEL_COMPILER -+ ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__ -+ pathscale: __PATHCC__,__PATHSCALE__ -+ clang: __clang__ -+ gnu: __GNUC__ -+ sun: __SUNPRO_C,__SUNPRO_CC -+ hp: __HP_cc,__HP_aCC -+ dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER -+ borland: __BORLANDC__,__TURBOC__ -+ comeau: __COMO__ -+ cray: _CRAYC -+ kai: __KCC -+ lcc: __LCC__ -+ sgi: __sgi,sgi -+ microsoft: _MSC_VER -+ metrowerks: __MWERKS__ -+ watcom: __WATCOMC__ -+ portland: __PGI -+ unknown: UNKNOWN" -+ for ventest in $vendors; do -+ case $ventest in -+ *:) vendor=$ventest; continue ;; -+ *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; -+ esac -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[ -+ #if !($vencpp) -+ thisisanerror; -+ #endif -+ ])], [break]) -+ done -+ ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1` -+ ]) -+]) -diff --git a/js/src/ctypes/libffi/m4/ax_configure_args.m4 b/js/src/ctypes/libffi/m4/ax_configure_args.m4 -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/m4/ax_configure_args.m4 -@@ -0,0 +1,70 @@ -+# =========================================================================== -+# http://www.gnu.org/software/autoconf-archive/ax_configure_args.html -+# =========================================================================== -+# -+# SYNOPSIS -+# -+# AX_CONFIGURE_ARGS -+# -+# DESCRIPTION -+# -+# Helper macro for AX_ENABLE_BUILDDIR. -+# -+# The traditional way of starting a subdir-configure is running the script -+# with ${1+"$@"} but since autoconf 2.60 this is broken. Instead we have -+# to rely on eval'ing $ac_configure_args however some old autoconf -+# versions do not provide that. To ensure maximum portability of autoconf -+# extension macros this helper can be AC_REQUIRE'd so that -+# $ac_configure_args will alsways be present. -+# -+# Sadly, the traditional "exec $SHELL" of the enable_builddir macros is -+# spoiled now and must be replaced by "eval + exit $?". -+# -+# Example: -+# -+# AC_DEFUN([AX_ENABLE_SUBDIR],[dnl -+# AC_REQUIRE([AX_CONFIGURE_ARGS])dnl -+# eval $SHELL $ac_configure_args || exit $? -+# ...]) -+# -+# LICENSE -+# -+# Copyright (c) 2008 Guido U. Draheim -+# -+# This program is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by the -+# Free Software Foundation; either version 3 of the License, or (at your -+# option) any later version. -+# -+# This program is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -+# Public License for more details. -+# -+# You should have received a copy of the GNU General Public License along -+# with this program. If not, see . -+# -+# As a special exception, the respective Autoconf Macro's copyright owner -+# gives unlimited permission to copy, distribute and modify the configure -+# scripts that are the output of Autoconf when processing the Macro. You -+# need not follow the terms of the GNU General Public License when using -+# or distributing such scripts, even though portions of the text of the -+# Macro appear in them. The GNU General Public License (GPL) does govern -+# all other use of the material that constitutes the Autoconf Macro. -+# -+# This special exception to the GPL applies to versions of the Autoconf -+# Macro released by the Autoconf Archive. When you make and distribute a -+# modified version of the Autoconf Macro, you may extend this special -+# exception to the GPL to apply to your modified version as well. -+ -+#serial 9 -+ -+AC_DEFUN([AX_CONFIGURE_ARGS],[ -+ # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args -+ if test "${ac_configure_args+set}" != "set" ; then -+ ac_configure_args= -+ for ac_arg in ${1+"[$]@"}; do -+ ac_configure_args="$ac_configure_args '$ac_arg'" -+ done -+ fi -+]) -diff --git a/js/src/ctypes/libffi/m4/ax_enable_builddir.m4 b/js/src/ctypes/libffi/m4/ax_enable_builddir.m4 -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/m4/ax_enable_builddir.m4 -@@ -0,0 +1,300 @@ -+# =========================================================================== -+# http://www.gnu.org/software/autoconf-archive/ax_enable_builddir.html -+# =========================================================================== -+# -+# SYNOPSIS -+# -+# AX_ENABLE_BUILDDIR [(dirstring-or-command [,Makefile.mk [,-all]])] -+# -+# DESCRIPTION -+# -+# If the current configure was run within the srcdir then we move all -+# configure-files into a subdir and let the configure steps continue -+# there. We provide an option --disable-builddir to suppress the move into -+# a separate builddir. -+# -+# Defaults: -+# -+# $1 = $host (overridden with $HOST) -+# $2 = Makefile.mk -+# $3 = -all -+# -+# This macro must be called before AM_INIT_AUTOMAKE. It creates a default -+# toplevel srcdir Makefile from the information found in the created -+# toplevel builddir Makefile. It just copies the variables and -+# rule-targets, each extended with a default rule-execution that recurses -+# into the build directory of the current "HOST". You can override the -+# auto-dection through `config.guess` and build-time of course, as in -+# -+# make HOST=i386-mingw-cross -+# -+# which can of course set at configure time as well using -+# -+# configure --host=i386-mingw-cross -+# -+# After the default has been created, additional rules can be appended -+# that will not just recurse into the subdirectories and only ever exist -+# in the srcdir toplevel makefile - these parts are read from the $2 = -+# Makefile.mk file -+# -+# The automatic rules are usually scanning the toplevel Makefile for lines -+# like '#### $host |$builddir' to recognize the place where to recurse -+# into. Usually, the last one is the only one used. However, almost all -+# targets have an additional "*-all" rule which makes the script to -+# recurse into _all_ variants of the current HOST (!!) setting. The "-all" -+# suffix can be overriden for the macro as well. -+# -+# a special rule is only given for things like "dist" that will copy the -+# tarball from the builddir to the sourcedir (or $(PUB)) for reason of -+# convenience. -+# -+# LICENSE -+# -+# Copyright (c) 2009 Guido U. Draheim -+# Copyright (c) 2009 Alan Jenkins -+# -+# This program is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by the -+# Free Software Foundation; either version 3 of the License, or (at your -+# option) any later version. -+# -+# This program is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -+# Public License for more details. -+# -+# You should have received a copy of the GNU General Public License along -+# with this program. If not, see . -+# -+# As a special exception, the respective Autoconf Macro's copyright owner -+# gives unlimited permission to copy, distribute and modify the configure -+# scripts that are the output of Autoconf when processing the Macro. You -+# need not follow the terms of the GNU General Public License when using -+# or distributing such scripts, even though portions of the text of the -+# Macro appear in them. The GNU General Public License (GPL) does govern -+# all other use of the material that constitutes the Autoconf Macro. -+# -+# This special exception to the GPL applies to versions of the Autoconf -+# Macro released by the Autoconf Archive. When you make and distribute a -+# modified version of the Autoconf Macro, you may extend this special -+# exception to the GPL to apply to your modified version as well. -+ -+#serial 23 -+ -+AC_DEFUN([AX_ENABLE_BUILDDIR],[ -+AC_REQUIRE([AC_CANONICAL_HOST])[]dnl -+AC_REQUIRE([AX_CONFIGURE_ARGS])[]dnl -+AC_REQUIRE([AM_AUX_DIR_EXPAND])[]dnl -+AC_BEFORE([$0],[AM_INIT_AUTOMAKE])dnl -+AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl -+AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl -+AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl -+SUB="." -+AC_ARG_ENABLE([builddir], AS_HELP_STRING( -+ [--disable-builddir],[disable automatic build in subdir of sources]) -+ ,[SUB="$enableval"], [SUB="auto"]) -+if test ".$ac_srcdir_defaulted" != ".no" ; then -+if test ".$srcdir" = ".." ; then -+ if test -f config.status ; then -+ AC_MSG_NOTICE(toplevel srcdir already configured... skipping subdir build) -+ else -+ test ".$SUB" = "." && SUB="." -+ test ".$SUB" = ".no" && SUB="." -+ test ".$TARGET" = "." && TARGET="$target" -+ test ".$SUB" = ".auto" && SUB="m4_ifval([$1], [$1],[$TARGET])" -+ if test ".$SUB" != ".." ; then # we know where to go and -+ AS_MKDIR_P([$SUB]) -+ echo __.$SUB.__ > $SUB/conftest.tmp -+ cd $SUB -+ if grep __.$SUB.__ conftest.tmp >/dev/null 2>/dev/null ; then -+ rm conftest.tmp -+ AC_MSG_RESULT([continue configure in default builddir "./$SUB"]) -+ else -+ AC_MSG_ERROR([could not change to default builddir "./$SUB"]) -+ fi -+ srcdir=`echo "$SUB" | -+ sed -e 's,^\./,,;s,[[^/]]$,&/,;s,[[^/]]*/,../,g;s,[[/]]$,,;'` -+ # going to restart from subdirectory location -+ test -f $srcdir/config.log && mv $srcdir/config.log . -+ test -f $srcdir/confdefs.h && mv $srcdir/confdefs.h . -+ test -f $srcdir/conftest.log && mv $srcdir/conftest.log . -+ test -f $srcdir/$cache_file && mv $srcdir/$cache_file . -+ AC_MSG_RESULT(....exec $SHELL $srcdir/[$]0 "--srcdir=$srcdir" "--enable-builddir=$SUB" ${1+"[$]@"}) -+ case "[$]0" in # restart -+ [/\\]*) eval $SHELL "'[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;; -+ *) eval $SHELL "'$srcdir/[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;; -+ esac ; exit $? -+ fi -+ fi -+fi fi -+test ".$SUB" = ".auto" && SUB="." -+dnl ac_path_prog uses "set dummy" to override $@ which would defeat the "exec" -+AC_PATH_PROG(SED,gsed sed, sed) -+AUX="$am_aux_dir" -+AS_VAR_POPDEF([SED])dnl -+AS_VAR_POPDEF([AUX])dnl -+AS_VAR_POPDEF([SUB])dnl -+AC_CONFIG_COMMANDS([buildir],[dnl .............. config.status .............. -+AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl -+AS_VAR_PUSHDEF([TOP],[top_srcdir])dnl -+AS_VAR_PUSHDEF([SRC],[ac_top_srcdir])dnl -+AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl -+AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl -+pushdef([END],[Makefile.mk])dnl -+pushdef([_ALL],[ifelse([$3],,[-all],[$3])])dnl -+ SRC="$ax_enable_builddir_srcdir" -+ if test ".$SUB" = ".." ; then -+ if test -f "$TOP/Makefile" ; then -+ AC_MSG_NOTICE([skipping TOP/Makefile - left untouched]) -+ else -+ AC_MSG_NOTICE([skipping TOP/Makefile - not created]) -+ fi -+ else -+ if test -f "$SRC/Makefile" ; then -+ a=`grep "^VERSION " "$SRC/Makefile"` ; b=`grep "^VERSION " Makefile` -+ test "$a" != "$b" && rm "$SRC/Makefile" -+ fi -+ if test -f "$SRC/Makefile" ; then -+ echo "$SRC/Makefile : $SRC/Makefile.in" > $tmp/conftemp.mk -+ echo " []@ echo 'REMOVED,,,' >\$[]@" >> $tmp/conftemp.mk -+ eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null" -+ if grep '^REMOVED,,,' "$SRC/Makefile" >/dev/null -+ then rm $SRC/Makefile ; fi -+ cp $tmp/conftemp.mk $SRC/makefiles.mk~ ## DEBUGGING -+ fi -+ if test ! -f "$SRC/Makefile" ; then -+ AC_MSG_NOTICE([create TOP/Makefile guessed from local Makefile]) -+ x='`' ; cat >$tmp/conftemp.sed <<_EOF -+/^\$/n -+x -+/^\$/bS -+x -+/\\\\\$/{H;d;} -+{H;s/.*//;x;} -+bM -+:S -+x -+/\\\\\$/{h;d;} -+{h;s/.*//;x;} -+:M -+s/\\(\\n\\) /\\1 /g -+/^ /d -+/^[[ ]]*[[\\#]]/d -+/^VPATH *=/d -+s/^srcdir *=.*/srcdir = ./ -+s/^top_srcdir *=.*/top_srcdir = ./ -+/[[:=]]/!d -+/^\\./d -+dnl Now handle rules (i.e. lines containing ":" but not " = "). -+/ = /b -+/ .= /b -+/:/!b -+s/:.*/:/ -+s/ / /g -+s/ \\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/ \\1 \\1[]_ALL\\2/g -+s/^\\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/\\1 \\1[]_ALL\\2/ -+s/ / /g -+/^all all[]_ALL[[ :]]/i\\ -+all-configured : all[]_ALL -+dnl dist-all exists... and would make for dist-all-all -+s/ [[a-zA-Z0-9-]]*[]_ALL [[a-zA-Z0-9-]]*[]_ALL[]_ALL//g -+/[]_ALL[]_ALL/d -+a\\ -+ @ HOST="\$(HOST)\" \\\\\\ -+ ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\ -+ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ -+ ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ -+ ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\ -+ ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\ -+ ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ -+ ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\ -+ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ -+ ; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done -+dnl special rule add-on: "dist" copies the tarball to $(PUB). (source tree) -+/dist[]_ALL *:/a\\ -+ @ HOST="\$(HOST)\" \\\\\\ -+ ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\ -+ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ -+ ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ -+ ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\ -+ ; if test "\$\$found" -eq "0" ; then : \\\\\\ -+ ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ -+ ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ -+ ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\ -+ ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done -+dnl special rule add-on: "dist-foo" copies all the archives to $(PUB). (source tree) -+/dist-[[a-zA-Z0-9]]*[]_ALL *:/a\\ -+ @ HOST="\$(HOST)\" \\\\\\ -+ ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\ -+ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ -+ ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ -+ ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\ -+ ; if test "\$\$found" -eq "0" ; then : \\\\\\ -+ ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ -+ ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ -+ ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\ -+ ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done -+dnl special rule add-on: "distclean" removes all local builddirs completely -+/distclean[]_ALL *:/a\\ -+ @ HOST="\$(HOST)\" \\\\\\ -+ ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\ -+ ; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\ -+ ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ -+ ; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\ -+ ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ -+ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ -+ ; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\ -+ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ -+ ; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\ -+ ; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\ -+ ; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile -+_EOF -+ cp "$tmp/conftemp.sed" "$SRC/makefile.sed~" ## DEBUGGING -+ $SED -f $tmp/conftemp.sed Makefile >$SRC/Makefile -+ if test -f "$SRC/m4_ifval([$2],[$2],[END])" ; then -+ AC_MSG_NOTICE([extend TOP/Makefile with TOP/m4_ifval([$2],[$2],[END])]) -+ cat $SRC/END >>$SRC/Makefile -+ fi ; xxxx="####" -+ echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$SRC/Makefile -+ # sanity check -+ if grep '^; echo "MAKE ' $SRC/Makefile >/dev/null ; then -+ AC_MSG_NOTICE([buggy sed found - it deletes tab in "a" text parts]) -+ $SED -e '/^@ HOST=/s/^/ /' -e '/^; /s/^/ /' $SRC/Makefile \ -+ >$SRC/Makefile~ -+ (test -s $SRC/Makefile~ && mv $SRC/Makefile~ $SRC/Makefile) 2>/dev/null -+ fi -+ else -+ xxxx="\\#\\#\\#\\#" -+ # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed -+ echo "s!^$xxxx [[^|]]* | *$SUB *\$!$xxxx ...... $SUB!" >$tmp/conftemp.sed -+ $SED -f "$tmp/conftemp.sed" "$SRC/Makefile" >$tmp/mkfile.tmp -+ cp "$tmp/conftemp.sed" "$SRC/makefiles.sed~" ## DEBUGGING -+ cp "$tmp/mkfile.tmp" "$SRC/makefiles.out~" ## DEBUGGING -+ if cmp -s "$SRC/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then -+ AC_MSG_NOTICE([keeping TOP/Makefile from earlier configure]) -+ rm "$tmp/mkfile.tmp" -+ else -+ AC_MSG_NOTICE([reusing TOP/Makefile from earlier configure]) -+ mv "$tmp/mkfile.tmp" "$SRC/Makefile" -+ fi -+ fi -+ AC_MSG_NOTICE([build in $SUB (HOST=$ax_enable_builddir_host)]) -+ xxxx="####" -+ echo "$xxxx" "$ax_enable_builddir_host" "|$SUB" >>$SRC/Makefile -+ fi -+popdef([END])dnl -+AS_VAR_POPDEF([SED])dnl -+AS_VAR_POPDEF([AUX])dnl -+AS_VAR_POPDEF([SRC])dnl -+AS_VAR_POPDEF([TOP])dnl -+AS_VAR_POPDEF([SUB])dnl -+],[dnl -+ax_enable_builddir_srcdir="$srcdir" # $srcdir -+ax_enable_builddir_host="$HOST" # $HOST / $host -+ax_enable_builddir_version="$VERSION" # $VERSION -+ax_enable_builddir_package="$PACKAGE" # $PACKAGE -+ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX -+ax_enable_builddir_sed="$ax_enable_builddir_sed" # $SED -+ax_enable_builddir="$ax_enable_builddir" # $SUB -+])dnl -+]) -diff --git a/js/src/ctypes/libffi/m4/ax_gcc_archflag.m4 b/js/src/ctypes/libffi/m4/ax_gcc_archflag.m4 -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/m4/ax_gcc_archflag.m4 -@@ -0,0 +1,225 @@ -+# =========================================================================== -+# http://www.gnu.org/software/autoconf-archive/ax_gcc_archflag.html -+# =========================================================================== -+# -+# SYNOPSIS -+# -+# AX_GCC_ARCHFLAG([PORTABLE?], [ACTION-SUCCESS], [ACTION-FAILURE]) -+# -+# DESCRIPTION -+# -+# This macro tries to guess the "native" arch corresponding to the target -+# architecture for use with gcc's -march=arch or -mtune=arch flags. If -+# found, the cache variable $ax_cv_gcc_archflag is set to this flag and -+# ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is set to -+# "unknown" and ACTION-FAILURE is executed. The default ACTION-SUCCESS is -+# to add $ax_cv_gcc_archflag to the end of $CFLAGS. -+# -+# PORTABLE? should be either [yes] (default) or [no]. In the former case, -+# the flag is set to -mtune (or equivalent) so that the architecture is -+# only used for tuning, but the instruction set used is still portable. In -+# the latter case, the flag is set to -march (or equivalent) so that -+# architecture-specific instructions are enabled. -+# -+# The user can specify --with-gcc-arch= in order to override the -+# macro's choice of architecture, or --without-gcc-arch to disable this. -+# -+# When cross-compiling, or if $CC is not gcc, then ACTION-FAILURE is -+# called unless the user specified --with-gcc-arch manually. -+# -+# Requires macros: AX_CHECK_COMPILE_FLAG, AX_GCC_X86_CPUID -+# -+# (The main emphasis here is on recent CPUs, on the principle that doing -+# high-performance computing on old hardware is uncommon.) -+# -+# LICENSE -+# -+# Copyright (c) 2008 Steven G. Johnson -+# Copyright (c) 2008 Matteo Frigo -+# Copyright (c) 2012 Tsukasa Oi -+# -+# This program is free software: you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by the -+# Free Software Foundation, either version 3 of the License, or (at your -+# option) any later version. -+# -+# This program is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -+# Public License for more details. -+# -+# You should have received a copy of the GNU General Public License along -+# with this program. If not, see . -+# -+# As a special exception, the respective Autoconf Macro's copyright owner -+# gives unlimited permission to copy, distribute and modify the configure -+# scripts that are the output of Autoconf when processing the Macro. You -+# need not follow the terms of the GNU General Public License when using -+# or distributing such scripts, even though portions of the text of the -+# Macro appear in them. The GNU General Public License (GPL) does govern -+# all other use of the material that constitutes the Autoconf Macro. -+# -+# This special exception to the GPL applies to versions of the Autoconf -+# Macro released by the Autoconf Archive. When you make and distribute a -+# modified version of the Autoconf Macro, you may extend this special -+# exception to the GPL to apply to your modified version as well. -+ -+#serial 11 -+ -+AC_DEFUN([AX_GCC_ARCHFLAG], -+[AC_REQUIRE([AC_PROG_CC]) -+AC_REQUIRE([AC_CANONICAL_HOST]) -+ -+AC_ARG_WITH(gcc-arch, [AS_HELP_STRING([--with-gcc-arch=], [use architecture for gcc -march/-mtune, instead of guessing])], -+ ax_gcc_arch=$withval, ax_gcc_arch=yes) -+ -+AC_MSG_CHECKING([for gcc architecture flag]) -+AC_MSG_RESULT([]) -+AC_CACHE_VAL(ax_cv_gcc_archflag, -+[ -+ax_cv_gcc_archflag="unknown" -+ -+if test "$GCC" = yes; then -+ -+if test "x$ax_gcc_arch" = xyes; then -+ax_gcc_arch="" -+if test "$cross_compiling" = no; then -+case $host_cpu in -+ i[[3456]]86*|x86_64*) # use cpuid codes -+ AX_GCC_X86_CPUID(0) -+ AX_GCC_X86_CPUID(1) -+ case $ax_cv_gcc_x86_cpuid_0 in -+ *:756e6547:*:*) # Intel -+ case $ax_cv_gcc_x86_cpuid_1 in -+ *5[[48]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;; -+ *5??:*:*:*) ax_gcc_arch=pentium ;; -+ *0?6[[3456]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; -+ *0?6a?:*[[01]]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; -+ *0?6a?:*[[234]]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; -+ *0?6[[9de]]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;; -+ *0?6[[78b]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; -+ *0?6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;; -+ *1?6[[7d]]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;; -+ *1?6[[aef]]?:*:*:*|*2?6[[5cef]]?:*:*:*) ax_gcc_arch="corei7 core2 pentium-m pentium3 pentiumpro" ;; -+ *1?6c?:*:*:*|*[[23]]?66?:*:*:*) ax_gcc_arch="atom core2 pentium-m pentium3 pentiumpro" ;; -+ *2?6[[ad]]?:*:*:*) ax_gcc_arch="corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; -+ *0?6??:*:*:*) ax_gcc_arch=pentiumpro ;; -+ *6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;; -+ ?000?f3[[347]]:*:*:*|?000?f4[1347]:*:*:*|?000?f6?:*:*:*) -+ case $host_cpu in -+ x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;; -+ *) ax_gcc_arch="prescott pentium4 pentiumpro" ;; -+ esac ;; -+ ?000?f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";; -+ esac ;; -+ *:68747541:*:*) # AMD -+ case $ax_cv_gcc_x86_cpuid_1 in -+ *5[[67]]?:*:*:*) ax_gcc_arch=k6 ;; -+ *5[[8d]]?:*:*:*) ax_gcc_arch="k6-2 k6" ;; -+ *5[[9]]?:*:*:*) ax_gcc_arch="k6-3 k6" ;; -+ *60?:*:*:*) ax_gcc_arch=k7 ;; -+ *6[[12]]?:*:*:*) ax_gcc_arch="athlon k7" ;; -+ *6[[34]]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;; -+ *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;; -+ *6[[68a]]?:*:*:*) -+ AX_GCC_X86_CPUID(0x80000006) # L2 cache size -+ case $ax_cv_gcc_x86_cpuid_0x80000006 in -+ *:*:*[[1-9a-f]]??????:*) # (L2 = ecx >> 16) >= 256 -+ ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;; -+ *) ax_gcc_arch="athlon-4 athlon k7" ;; -+ esac ;; -+ ?00??f[[4cef8b]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;; -+ ?00??f5?:*:*:*) ax_gcc_arch="opteron k8" ;; -+ ?00??f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;; -+ ?00??f??:*:*:*) ax_gcc_arch="k8" ;; -+ ?05??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;; -+ ?06??f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;; -+ *f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;; -+ esac ;; -+ *:746e6543:*:*) # IDT -+ case $ax_cv_gcc_x86_cpuid_1 in -+ *54?:*:*:*) ax_gcc_arch=winchip-c6 ;; -+ *58?:*:*:*) ax_gcc_arch=winchip2 ;; -+ *6[[78]]?:*:*:*) ax_gcc_arch=c3 ;; -+ *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;; -+ esac ;; -+ esac -+ if test x"$ax_gcc_arch" = x; then # fallback -+ case $host_cpu in -+ i586*) ax_gcc_arch=pentium ;; -+ i686*) ax_gcc_arch=pentiumpro ;; -+ esac -+ fi -+ ;; -+ -+ sparc*) -+ AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/]) -+ cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null` -+ cputype=`echo "$cputype" | tr -d ' -' | sed 's/SPARCIIi/SPARCII/' | tr $as_cr_LETTERS $as_cr_letters` -+ case $cputype in -+ *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;; -+ *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;; -+ *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;; -+ *supersparc*|*tms390z5[[05]]*) ax_gcc_arch="supersparc v8" ;; -+ *hypersparc*|*rt62[[056]]*) ax_gcc_arch="hypersparc v8" ;; -+ *cypress*) ax_gcc_arch=cypress ;; -+ esac ;; -+ -+ alphaev5) ax_gcc_arch=ev5 ;; -+ alphaev56) ax_gcc_arch=ev56 ;; -+ alphapca56) ax_gcc_arch="pca56 ev56" ;; -+ alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;; -+ alphaev6) ax_gcc_arch=ev6 ;; -+ alphaev67) ax_gcc_arch=ev67 ;; -+ alphaev68) ax_gcc_arch="ev68 ev67" ;; -+ alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;; -+ alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;; -+ alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;; -+ -+ powerpc*) -+ cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null` -+ cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'` -+ case $cputype in -+ *750*) ax_gcc_arch="750 G3" ;; -+ *740[[0-9]]*) ax_gcc_arch="$cputype 7400 G4" ;; -+ *74[[4-5]][[0-9]]*) ax_gcc_arch="$cputype 7450 G4" ;; -+ *74[[0-9]][[0-9]]*) ax_gcc_arch="$cputype G4" ;; -+ *970*) ax_gcc_arch="970 G5 power4";; -+ *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";; -+ *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";; -+ 603ev|8240) ax_gcc_arch="$cputype 603e 603";; -+ *) ax_gcc_arch=$cputype ;; -+ esac -+ ax_gcc_arch="$ax_gcc_arch powerpc" -+ ;; -+esac -+fi # not cross-compiling -+fi # guess arch -+ -+if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then -+for arch in $ax_gcc_arch; do -+ if test "x[]m4_default([$1],yes)" = xyes; then # if we require portable code -+ flags="-mtune=$arch" -+ # -mcpu=$arch and m$arch generate nonportable code on every arch except -+ # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr. -+ case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac -+ else -+ flags="-march=$arch -mcpu=$arch -m$arch" -+ fi -+ for flag in $flags; do -+ AX_CHECK_COMPILE_FLAG($flag, [ax_cv_gcc_archflag=$flag; break]) -+ done -+ test "x$ax_cv_gcc_archflag" = xunknown || break -+done -+fi -+ -+fi # $GCC=yes -+]) -+AC_MSG_CHECKING([for gcc architecture flag]) -+AC_MSG_RESULT($ax_cv_gcc_archflag) -+if test "x$ax_cv_gcc_archflag" = xunknown; then -+ m4_default([$3],:) -+else -+ m4_default([$2], [CFLAGS="$CFLAGS $ax_cv_gcc_archflag"]) -+fi -+]) -diff --git a/js/src/ctypes/libffi/m4/ax_gcc_x86_cpuid.m4 b/js/src/ctypes/libffi/m4/ax_gcc_x86_cpuid.m4 -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/m4/ax_gcc_x86_cpuid.m4 -@@ -0,0 +1,79 @@ -+# =========================================================================== -+# http://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html -+# =========================================================================== -+# -+# SYNOPSIS -+# -+# AX_GCC_X86_CPUID(OP) -+# -+# DESCRIPTION -+# -+# On Pentium and later x86 processors, with gcc or a compiler that has a -+# compatible syntax for inline assembly instructions, run a small program -+# that executes the cpuid instruction with input OP. This can be used to -+# detect the CPU type. -+# -+# On output, the values of the eax, ebx, ecx, and edx registers are stored -+# as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable -+# ax_cv_gcc_x86_cpuid_OP. -+# -+# If the cpuid instruction fails (because you are running a -+# cross-compiler, or because you are not using gcc, or because you are on -+# a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP -+# is set to the string "unknown". -+# -+# This macro mainly exists to be used in AX_GCC_ARCHFLAG. -+# -+# LICENSE -+# -+# Copyright (c) 2008 Steven G. Johnson -+# Copyright (c) 2008 Matteo Frigo -+# -+# This program is free software: you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by the -+# Free Software Foundation, either version 3 of the License, or (at your -+# option) any later version. -+# -+# This program is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -+# Public License for more details. -+# -+# You should have received a copy of the GNU General Public License along -+# with this program. If not, see . -+# -+# As a special exception, the respective Autoconf Macro's copyright owner -+# gives unlimited permission to copy, distribute and modify the configure -+# scripts that are the output of Autoconf when processing the Macro. You -+# need not follow the terms of the GNU General Public License when using -+# or distributing such scripts, even though portions of the text of the -+# Macro appear in them. The GNU General Public License (GPL) does govern -+# all other use of the material that constitutes the Autoconf Macro. -+# -+# This special exception to the GPL applies to versions of the Autoconf -+# Macro released by the Autoconf Archive. When you make and distribute a -+# modified version of the Autoconf Macro, you may extend this special -+# exception to the GPL to apply to your modified version as well. -+ -+#serial 7 -+ -+AC_DEFUN([AX_GCC_X86_CPUID], -+[AC_REQUIRE([AC_PROG_CC]) -+AC_LANG_PUSH([C]) -+AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1, -+ [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include ], [ -+ int op = $1, eax, ebx, ecx, edx; -+ FILE *f; -+ __asm__("cpuid" -+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) -+ : "a" (op)); -+ f = fopen("conftest_cpuid", "w"); if (!f) return 1; -+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); -+ fclose(f); -+ return 0; -+])], -+ [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid], -+ [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid], -+ [ax_cv_gcc_x86_cpuid_$1=unknown])]) -+AC_LANG_POP([C]) -+]) -diff --git a/js/src/ctypes/libffi/m4/libtool.m4 b/js/src/ctypes/libffi/m4/libtool.m4 ---- a/js/src/ctypes/libffi/m4/libtool.m4 -+++ b/js/src/ctypes/libffi/m4/libtool.m4 -@@ -1,21 +1,23 @@ - # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- - # - # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, --# 2006, 2007, 2008 Free Software Foundation, Inc. -+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -+# Foundation, Inc. - # Written by Gordon Matzigkeit, 1996 - # - # This file is free software; the Free Software Foundation gives - # unlimited permission to copy and/or distribute it, with or without - # modifications, as long as this notice is preserved. - - m4_define([_LT_COPYING], [dnl - # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, --# 2006, 2007, 2008 Free Software Foundation, Inc. -+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -+# Foundation, Inc. - # Written by Gordon Matzigkeit, 1996 - # - # This file is part of GNU Libtool. - # - # GNU Libtool is free software; you can redistribute it and/or - # modify it under the terms of the GNU General Public License as - # published by the Free Software Foundation; either version 2 of - # the License, or (at your option) any later version. -@@ -32,17 +34,17 @@ m4_define([_LT_COPYING], [dnl - # - # You should have received a copy of the GNU General Public License - # along with GNU Libtool; see the file COPYING. If not, a copy - # can be downloaded from http://www.gnu.org/licenses/gpl.html, or - # obtained by writing to the Free Software Foundation, Inc., - # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - ]) - --# serial 56 LT_INIT -+# serial 57 LT_INIT - - - # LT_PREREQ(VERSION) - # ------------------ - # Complain and exit if this libtool version is less that VERSION. - m4_defun([LT_PREREQ], - [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], -@@ -61,32 +63,35 @@ m4_defun([_LT_CHECK_BUILDDIR], - esac - ]) - - - # LT_INIT([OPTIONS]) - # ------------------ - AC_DEFUN([LT_INIT], - [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl - AC_BEFORE([$0], [LT_LANG])dnl - AC_BEFORE([$0], [LT_OUTPUT])dnl - AC_BEFORE([$0], [LTDL_INIT])dnl - m4_require([_LT_CHECK_BUILDDIR])dnl - - dnl Autoconf doesn't catch unexpanded LT_ macros by default: - m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl - m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl - dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 - dnl unless we require an AC_DEFUNed macro: - AC_REQUIRE([LTOPTIONS_VERSION])dnl - AC_REQUIRE([LTSUGAR_VERSION])dnl - AC_REQUIRE([LTVERSION_VERSION])dnl - AC_REQUIRE([LTOBSOLETE_VERSION])dnl - m4_require([_LT_PROG_LTMAIN])dnl - -+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) -+ - dnl Parse OPTIONS - _LT_SET_OPTIONS([$0], [$1]) - - # This can be used to rebuild libtool when needed - LIBTOOL_DEPS="$ltmain" - - # Always use our own libtool. - LIBTOOL='$(SHELL) $(top_builddir)/libtool' -@@ -113,17 +118,17 @@ m4_defun([_LT_CC_BASENAME], - [for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac - done --cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - ]) - - - # _LT_FILEUTILS_DEFAULTS - # ---------------------- - # It is okay to use these file commands and assume they have been set - # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. - m4_defun([_LT_FILEUTILS_DEFAULTS], -@@ -133,16 +138,21 @@ m4_defun([_LT_FILEUTILS_DEFAULTS], - ])# _LT_FILEUTILS_DEFAULTS - - - # _LT_SETUP - # --------- - m4_defun([_LT_SETUP], - [AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([AC_CANONICAL_BUILD])dnl -+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl -+ -+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl -+dnl - _LT_DECL([], [host_alias], [0], [The host system])dnl - _LT_DECL([], [host], [0])dnl - _LT_DECL([], [host_os], [0])dnl - dnl - _LT_DECL([], [build_alias], [0], [The build system])dnl - _LT_DECL([], [build], [0])dnl - _LT_DECL([], [build_os], [0])dnl - dnl -@@ -155,66 +165,51 @@ test -z "$LN_S" && LN_S="ln -s" - _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl - dnl - AC_REQUIRE([LT_CMD_MAX_LEN])dnl - _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl - _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl - dnl - m4_require([_LT_FILEUTILS_DEFAULTS])dnl - m4_require([_LT_CHECK_SHELL_FEATURES])dnl -+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl - m4_require([_LT_CMD_RELOAD])dnl - m4_require([_LT_CHECK_MAGIC_METHOD])dnl -+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl - m4_require([_LT_CMD_OLD_ARCHIVE])dnl - m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -+m4_require([_LT_WITH_SYSROOT])dnl - - _LT_CONFIG_LIBTOOL_INIT([ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes INIT. - if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - ]) - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - _LT_CHECK_OBJDIR - - m4_require([_LT_TAG_COMPILER])dnl --_LT_PROG_ECHO_BACKSLASH - - case $host_os in - aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; - esac - --# Sed substitution that helps us do robust quoting. It backslashifies --# metacharacters that are still active within double-quoted strings. --sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' -- --# Same as above, but do not quote variable references. --double_quote_subst='s/\([["`\\]]\)/\\\1/g' -- --# Sed substitution to delay expansion of an escaped shell variable in a --# double_quote_subst'ed string. --delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -- --# Sed substitution to delay expansion of an escaped single quote. --delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' -- --# Sed substitution to avoid accidental globbing in evaled expressions --no_glob_subst='s/\*/\\\*/g' -- - # Global variables: - ofile=libtool - can_build_shared=yes - - # All known linkers require a `.a' archive for static linking (except MSVC, - # which needs '.lib'). - libext=a - -@@ -245,16 +240,38 @@ esac - # Use C for the default configuration in the libtool script - LT_SUPPORTED_TAG([CC]) - _LT_LANG_C_CONFIG - _LT_LANG_DEFAULT_CONFIG - _LT_CONFIG_COMMANDS - ])# _LT_SETUP - - -+# _LT_PREPARE_SED_QUOTE_VARS -+# -------------------------- -+# Define a few sed substitution that help us do robust quoting. -+m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -+[# Backslashify metacharacters that are still active within -+# double-quoted strings. -+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' -+ -+# Same as above, but do not quote variable references. -+double_quote_subst='s/\([["`\\]]\)/\\\1/g' -+ -+# Sed substitution to delay expansion of an escaped shell variable in a -+# double_quote_subst'ed string. -+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -+ -+# Sed substitution to delay expansion of an escaped single quote. -+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' -+ -+# Sed substitution to avoid accidental globbing in evaled expressions -+no_glob_subst='s/\*/\\\*/g' -+]) -+ - # _LT_PROG_LTMAIN - # --------------- - # Note that this code is called both from `configure', and `config.status' - # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, - # `config.status' has no value for ac_aux_dir unless we are using Automake, - # so we pass a copy along to make sure it has a sensible value anyway. - m4_defun([_LT_PROG_LTMAIN], - [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -@@ -403,27 +420,27 @@ m4_define([_lt_decl_all_varnames], - - - # _LT_CONFIG_STATUS_DECLARE([VARNAME]) - # ------------------------------------ - # Quote a variable value, and forward it to `config.status' so that its - # declaration there will have the same value as in `configure'. VARNAME - # must have a single quote delimited value for this to work. - m4_define([_LT_CONFIG_STATUS_DECLARE], --[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) -+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - - # _LT_CONFIG_STATUS_DECLARATIONS - # ------------------------------ - # We delimit libtool config variables with single quotes, so when - # we write them to config.status, we have to be sure to quote all - # embedded single quotes properly. In configure, this macro expands - # each variable declared with _LT_DECL (and _LT_TAGDECL) into: - # --# ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' -+# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' - m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], - [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - - # _LT_LIBTOOL_TAGS - # ---------------- - # Output comment and list of tags supported by the script -@@ -512,75 +529,96 @@ m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_I - sed_quote_subst='$sed_quote_subst' - double_quote_subst='$double_quote_subst' - delay_variable_subst='$delay_variable_subst' - _LT_CONFIG_STATUS_DECLARATIONS - LTCC='$LTCC' - LTCFLAGS='$LTCFLAGS' - compiler='$compiler_DEFAULT' - -+# A function that is used when there is no print builtin or printf. -+func_fallback_echo () -+{ -+ eval 'cat <<_LTECHO_EOF -+\$[]1 -+_LTECHO_EOF' -+} -+ - # Quote evaled strings. - for var in lt_decl_all_varnames([[ \ - ]], lt_decl_quote_varnames); do -- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in -+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) -- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" -+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac - done - - # Double-quote double-evaled strings. - for var in lt_decl_all_varnames([[ \ - ]], lt_decl_dquote_varnames); do -- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in -+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) -- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" -+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac - done - --# Fix-up fallback echo if it was mangled by the above quoting rules. --case \$lt_ECHO in --*'\\\[$]0 --fallback-echo"')dnl " -- lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` -- ;; --esac -- - _LT_OUTPUT_LIBTOOL_INIT - ]) - -+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -+# ------------------------------------ -+# Generate a child script FILE with all initialization necessary to -+# reuse the environment learned by the parent script, and make the -+# file executable. If COMMENT is supplied, it is inserted after the -+# `#!' sequence but before initialization text begins. After this -+# macro, additional text can be appended to FILE to form the body of -+# the child script. The macro ends with non-zero status if the -+# file could not be fully written (such as if the disk is full). -+m4_ifdef([AS_INIT_GENERATED], -+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -+[m4_defun([_LT_GENERATED_FILE_INIT], -+[m4_require([AS_PREPARE])]dnl -+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -+[lt_write_fail=0 -+cat >$1 <<_ASEOF || lt_write_fail=1 -+#! $SHELL -+# Generated by $as_me. -+$2 -+SHELL=\${CONFIG_SHELL-$SHELL} -+export SHELL -+_ASEOF -+cat >>$1 <<\_ASEOF || lt_write_fail=1 -+AS_SHELL_SANITIZE -+_AS_PREPARE -+exec AS_MESSAGE_FD>&1 -+_ASEOF -+test $lt_write_fail = 0 && chmod +x $1[]dnl -+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - - # LT_OUTPUT - # --------- - # This macro allows early generation of the libtool script (before - # AC_OUTPUT is called), incase it is used in configure for compilation - # tests. - AC_DEFUN([LT_OUTPUT], - [: ${CONFIG_LT=./config.lt} - AC_MSG_NOTICE([creating $CONFIG_LT]) --cat >"$CONFIG_LT" <<_LTEOF --#! $SHELL --# Generated by $as_me. --# Run this file to recreate a libtool stub with the current configuration. -- -+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -+[# Run this file to recreate a libtool stub with the current configuration.]) -+ -+cat >>"$CONFIG_LT" <<\_LTEOF - lt_cl_silent=false --SHELL=\${CONFIG_SHELL-$SHELL} --_LTEOF -- --cat >>"$CONFIG_LT" <<\_LTEOF --AS_SHELL_SANITIZE --_AS_PREPARE -- --exec AS_MESSAGE_FD>&1 - exec AS_MESSAGE_LOG_FD>>config.log - { - echo - AS_BOX([Running $as_me.]) - } >&AS_MESSAGE_LOG_FD - - lt_cl_help="\ - \`$as_me' creates a local libtool stub from the current configuration, -@@ -596,17 +634,17 @@ Usage: $[0] [[OPTIONS]] - - Report bugs to ." - - lt_cl_version="\ - m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl - m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) - configured by $[0], generated by m4_PACKAGE_STRING. - --Copyright (C) 2008 Free Software Foundation, Inc. -+Copyright (C) 2011 Free Software Foundation, Inc. - This config.lt script is free software; the Free Software Foundation - gives unlimited permision to copy, distribute and modify it." - - while test $[#] != 0 - do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; -@@ -641,25 +679,23 @@ AC_MSG_NOTICE([creating $ofile]) - AS_EXIT(0) - _LTEOF - chmod +x "$CONFIG_LT" - - # configure is writing to config.log, but config.lt does its own redirection, - # appending to config.log, which fails on DOS, as config.log is still kept - # open by configure. Here we exec the FD to /dev/null, effectively closing - # config.log, so it can be properly (re)opened and appended to by config.lt. --if test "$no_create" != yes; then -- lt_cl_success=: -- test "$silent" = yes && -- lt_config_lt_args="$lt_config_lt_args --quiet" -- exec AS_MESSAGE_LOG_FD>/dev/null -- $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -- exec AS_MESSAGE_LOG_FD>>config.log -- $lt_cl_success || AS_EXIT(1) --fi -+lt_cl_success=: -+test "$silent" = yes && -+ lt_config_lt_args="$lt_config_lt_args --quiet" -+exec AS_MESSAGE_LOG_FD>/dev/null -+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -+exec AS_MESSAGE_LOG_FD>>config.log -+$lt_cl_success || AS_EXIT(1) - ])# LT_OUTPUT - - - # _LT_CONFIG(TAG) - # --------------- - # If TAG is the built-in tag, create an initial libtool script with a - # default configuration from the untagged config vars. Otherwise add code - # to config.status for appending the configuration named by TAG from the -@@ -712,25 +748,22 @@ fi - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? -- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ -- || (rm -f "$cfgfile"; exit 1) -- -- _LT_PROG_XSI_SHELLFNS -- -- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ -- || (rm -f "$cfgfile"; exit 1) -- -- mv -f "$cfgfile" "$ofile" || -+ sed '$q' "$ltmain" >> "$cfgfile" \ -+ || (rm -f "$cfgfile"; exit 1) -+ -+ _LT_PROG_REPLACE_SHELLFNS -+ -+ mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - ], - [cat <<_LT_EOF >> "$ofile" - - dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded - dnl in a comment (ie after a #). - # ### BEGIN LIBTOOL TAG CONFIG: $1 -@@ -765,16 +798,17 @@ m4_define([_LT_TAGS], []) - # LT_LANG(LANG) - # ------------- - # Enable libtool support for the given language if not already enabled. - AC_DEFUN([LT_LANG], - [AC_BEFORE([$0], [LT_OUTPUT])dnl - m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], -+ [Go], [_LT_LANG(GO)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl - ])# LT_LANG -@@ -786,16 +820,41 @@ m4_defun([_LT_LANG], - [m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl - ])# _LT_LANG - - -+m4_ifndef([AC_PROG_GO], [ -+############################################################ -+# NOTE: This macro has been submitted for inclusion into # -+# GNU Autoconf as AC_PROG_GO. When it is available in # -+# a released version of Autoconf we should remove this # -+# macro and use it instead. # -+############################################################ -+m4_defun([AC_PROG_GO], -+[AC_LANG_PUSH(Go)dnl -+AC_ARG_VAR([GOC], [Go compiler command])dnl -+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl -+_AC_ARG_VAR_LDFLAGS()dnl -+AC_CHECK_TOOL(GOC, gccgo) -+if test -z "$GOC"; then -+ if test -n "$ac_tool_prefix"; then -+ AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) -+ fi -+fi -+if test -z "$GOC"; then -+ AC_CHECK_PROG(GOC, gccgo, gccgo, false) -+fi -+])#m4_defun -+])#m4_ifndef -+ -+ - # _LT_LANG_DEFAULT_CONFIG - # ----------------------- - m4_defun([_LT_LANG_DEFAULT_CONFIG], - [AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - - AC_PROVIDE_IFELSE([AC_PROG_F77], -@@ -816,31 +875,37 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -+AC_PROVIDE_IFELSE([AC_PROG_GO], -+ [LT_LANG(GO)], -+ [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) -+ - AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) - ])# _LT_LANG_DEFAULT_CONFIG - - # Obsolete macros: - AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) - AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) - AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) - AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) - dnl aclocal-1.4 backwards compatibility: - dnl AC_DEFUN([AC_LIBTOOL_CXX], []) - dnl AC_DEFUN([AC_LIBTOOL_F77], []) - dnl AC_DEFUN([AC_LIBTOOL_FC], []) - dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -+dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - - # _LT_TAG_COMPILER - # ---------------- - m4_defun([_LT_TAG_COMPILER], - [AC_REQUIRE([AC_PROG_CC])dnl - - _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -@@ -916,35 +981,70 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECK - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? -- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then -+ # If there is a non-empty error log, and "single_module" -+ # appears in it, assume the flag caused a linker warning -+ if test -s conftest.err && $GREP single_module conftest.err; then -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ # Otherwise, if the output was created with a 0 exit code from -+ # the compiler, it worked. -+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) -+ - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) -+ -+ AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], -+ [lt_cv_ld_force_load=no -+ cat > conftest.c << _LT_EOF -+int forced_loaded() { return 2;} -+_LT_EOF -+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD -+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD -+ echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD -+ $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD -+ echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD -+ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD -+ cat > conftest.c << _LT_EOF -+int main() { return 0;} -+_LT_EOF -+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD -+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err -+ _lt_result=$? -+ if test -s conftest.err && $GREP force_load conftest.err; then -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then -+ lt_cv_ld_force_load=yes -+ else -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ fi -+ rm -f conftest.err libconftest.a conftest conftest.c -+ rm -rf conftest.dSYM -+ ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment -@@ -962,257 +1062,202 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECK - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi -- if test "$DSYMUTIL" != ":"; then -+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - ]) - - --# _LT_DARWIN_LINKER_FEATURES --# -------------------------- -+# _LT_DARWIN_LINKER_FEATURES([TAG]) -+# --------------------------------- - # Checks for linker and compiler features on darwin - m4_defun([_LT_DARWIN_LINKER_FEATURES], - [ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -- _LT_TAGVAR(whole_archive_flag_spec, $1)='' -+ if test "$lt_cv_ld_force_load" = "yes"; then -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' -+ m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], -+ [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) -+ else -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='' -+ fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then -- output_verbose_link_cmd=echo -+ output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], - [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi - ],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ]) - --# _LT_SYS_MODULE_PATH_AIX --# ----------------------- -+# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -+# ---------------------------------- - # Links a minimal program and checks the executable - # for the system default hardcoded library path. In most cases, - # this is /usr/lib:/lib, but when the MPI compilers are used - # the location of the communication and MPI libs are included too. - # If we don't find anything, use the default library path according - # to the aix ld manual. -+# Store the results from the different compilers for each TAGNAME. -+# Allow to override them for all tags through lt_cv_aix_libpath. - m4_defun([_LT_SYS_MODULE_PATH_AIX], - [m4_require([_LT_DECL_SED])dnl --AC_LINK_IFELSE(AC_LANG_PROGRAM,[ --lt_aix_libpath_sed=' -- /Import File Strings/,/^$/ { -- /^0/ { -- s/^0 *\(.*\)$/\1/ -- p -- } -- }' --aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` --# Check for a 64-bit object if we didn't find anything. --if test -z "$aix_libpath"; then -- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` --fi],[]) --if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -+if test "${lt_cv_aix_libpath+set}" = set; then -+ aix_libpath=$lt_cv_aix_libpath -+else -+ AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], -+ [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ -+ lt_aix_libpath_sed='[ -+ /Import File Strings/,/^$/ { -+ /^0/ { -+ s/^0 *\([^ ]*\) *$/\1/ -+ p -+ } -+ }]' -+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -+ # Check for a 64-bit object if we didn't find anything. -+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then -+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -+ fi],[]) -+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then -+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" -+ fi -+ ]) -+ aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -+fi - ])# _LT_SYS_MODULE_PATH_AIX - - - # _LT_SHELL_INIT(ARG) - # ------------------- - m4_define([_LT_SHELL_INIT], --[ifdef([AC_DIVERSION_NOTICE], -- [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], -- [AC_DIVERT_PUSH(NOTICE)]) --$1 --AC_DIVERT_POP --])# _LT_SHELL_INIT -+[m4_divert_text([M4SH-INIT], [$1 -+])])# _LT_SHELL_INIT -+ - - - # _LT_PROG_ECHO_BACKSLASH - # ----------------------- --# Add some code to the start of the generated configure script which --# will find an echo command which doesn't interpret backslashes. -+# Find how we can fake an echo command that does not interpret backslash. -+# In particular, with Autoconf 2.60 or later we add some code to the start -+# of the generated configure script which will find a shell with a builtin -+# printf (which we can use as an echo command). - m4_defun([_LT_PROG_ECHO_BACKSLASH], --[_LT_SHELL_INIT([ --# Check that we are running under the correct shell. --SHELL=${CONFIG_SHELL-/bin/sh} -- --case X$lt_ECHO in --X*--fallback-echo) -- # Remove one level of quotation (which was required for Make). -- ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` -- ;; -+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO -+ -+AC_MSG_CHECKING([how to print strings]) -+# Test print first, because it will be a builtin if present. -+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ -+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then -+ ECHO='print -r --' -+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then -+ ECHO='printf %s\n' -+else -+ # Use this function as a fallback that always works. -+ func_fallback_echo () -+ { -+ eval 'cat <<_LTECHO_EOF -+$[]1 -+_LTECHO_EOF' -+ } -+ ECHO='func_fallback_echo' -+fi -+ -+# func_echo_all arg... -+# Invoke $ECHO with all args, space-separated. -+func_echo_all () -+{ -+ $ECHO "$*" -+} -+ -+case "$ECHO" in -+ printf*) AC_MSG_RESULT([printf]) ;; -+ print*) AC_MSG_RESULT([print -r]) ;; -+ *) AC_MSG_RESULT([cat]) ;; - esac - --ECHO=${lt_ECHO-echo} --if test "X[$]1" = X--no-reexec; then -- # Discard the --no-reexec flag, and continue. -- shift --elif test "X[$]1" = X--fallback-echo; then -- # Avoid inline document here, it may be left over -- : --elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then -- # Yippee, $ECHO works! -- : --else -- # Restart under the correct shell. -- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} --fi -- --if test "X[$]1" = X--fallback-echo; then -- # used as fallback echo -- shift -- cat <<_LT_EOF --[$]* --_LT_EOF -- exit 0 --fi -- --# The HP-UX ksh and POSIX shell print the target directory to stdout --# if CDPATH is set. --(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -- --if test -z "$lt_ECHO"; then -- if test "X${echo_test_string+set}" != Xset; then -- # find a string as large as possible, as long as the shell can cope with it -- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do -- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... -- if { echo_test_string=`eval $cmd`; } 2>/dev/null && -- { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null -- then -- break -- fi -- done -- fi -- -- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- : -- else -- # The Solaris, AIX, and Digital Unix default echo programs unquote -- # backslashes. This makes it impossible to quote backslashes using -- # echo "$something" | sed 's/\\/\\\\/g' -- # -- # So, first we look for a working echo in the user's PATH. -- -- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for dir in $PATH /usr/ucb; do -- IFS="$lt_save_ifs" -- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && -- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && -- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- ECHO="$dir/echo" -- break -- fi -- done -- IFS="$lt_save_ifs" -- -- if test "X$ECHO" = Xecho; then -- # We didn't find a better echo, so look for alternatives. -- if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- # This shell has a builtin print -r that does the trick. -- ECHO='print -r' -- elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && -- test "X$CONFIG_SHELL" != X/bin/ksh; then -- # If we have ksh, try running configure again with it. -- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -- export ORIGINAL_CONFIG_SHELL -- CONFIG_SHELL=/bin/ksh -- export CONFIG_SHELL -- exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} -- else -- # Try using printf. -- ECHO='printf %s\n' -- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && -- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- # Cool, printf works -- : -- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && -- test "X$echo_testing_string" = 'X\t' && -- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL -- export CONFIG_SHELL -- SHELL="$CONFIG_SHELL" -- export SHELL -- ECHO="$CONFIG_SHELL [$]0 --fallback-echo" -- elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && -- test "X$echo_testing_string" = 'X\t' && -- echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && -- test "X$echo_testing_string" = "X$echo_test_string"; then -- ECHO="$CONFIG_SHELL [$]0 --fallback-echo" -- else -- # maybe with a smaller string... -- prev=: -- -- for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do -- if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null -- then -- break -- fi -- prev="$cmd" -- done -- -- if test "$prev" != 'sed 50q "[$]0"'; then -- echo_test_string=`eval $prev` -- export echo_test_string -- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} -- else -- # Oops. We lost completely, so just stick with echo. -- ECHO=echo -- fi -- fi -- fi -- fi -- fi --fi -- --# Copy echo and quote the copy suitably for passing to libtool from --# the Makefile, instead of quoting the original, which is used later. --lt_ECHO=$ECHO --if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then -- lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" --fi -- --AC_SUBST(lt_ECHO) --]) -+m4_ifdef([_AS_DETECT_SUGGESTED], -+[_AS_DETECT_SUGGESTED([ -+ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( -+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO -+ PATH=/empty FPATH=/empty; export PATH FPATH -+ test "X`printf %s $ECHO`" = "X$ECHO" \ -+ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) -+ - _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) --_LT_DECL([], [ECHO], [1], -- [An echo program that does not interpret backslashes]) -+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) - ])# _LT_PROG_ECHO_BACKSLASH - - -+# _LT_WITH_SYSROOT -+# ---------------- -+AC_DEFUN([_LT_WITH_SYSROOT], -+[AC_MSG_CHECKING([for sysroot]) -+AC_ARG_WITH([sysroot], -+[ --with-sysroot[=DIR] Search for dependent libraries within DIR -+ (or the compiler's sysroot if not specified).], -+[], [with_sysroot=no]) -+ -+dnl lt_sysroot will always be passed unquoted. We quote it here -+dnl in case the user passed a directory name. -+lt_sysroot= -+case ${with_sysroot} in #( -+ yes) -+ if test "$GCC" = yes; then -+ lt_sysroot=`$CC --print-sysroot 2>/dev/null` -+ fi -+ ;; #( -+ /*) -+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` -+ ;; #( -+ no|'') -+ ;; #( -+ *) -+ AC_MSG_RESULT([${with_sysroot}]) -+ AC_MSG_ERROR([The sysroot must be an absolute path.]) -+ ;; -+esac -+ -+ AC_MSG_RESULT([${lt_sysroot:-no}]) -+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -+[dependent libraries, and in which our libraries should be installed.])]) -+ - # _LT_ENABLE_LOCK - # --------------- - m4_defun([_LT_ENABLE_LOCK], - [AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) - test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -@@ -1231,17 +1276,17 @@ ia64-*-hpux*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; - *-*-irix6*) - # Find out which ABI we are using. -- echo '[#]line __oline__ "configure"' > conftest.$ac_ext -+ echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" -@@ -1330,24 +1375,37 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux* - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; --sparc*-*solaris*) -+*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in -- yes*) LD="${LD-ld} -m elf64_sparc" ;; -+ yes*) -+ case $host in -+ i?86-*-solaris*) -+ LD="${LD-ld} -m elf_x86_64" -+ ;; -+ sparc*-*-solaris*) -+ LD="${LD-ld} -m elf64_sparc" -+ ;; -+ esac -+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available. -+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then -+ LD="${LD-ld}_sol2" -+ fi -+ ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac -@@ -1355,24 +1413,57 @@ sparc*-*solaris*) - rm -rf conftest* - ;; - esac - - need_locks="$enable_libtool_lock" - ])# _LT_ENABLE_LOCK - - -+# _LT_PROG_AR -+# ----------- -+m4_defun([_LT_PROG_AR], -+[AC_CHECK_TOOLS(AR, [ar], false) -+: ${AR=ar} -+: ${AR_FLAGS=cru} -+_LT_DECL([], [AR], [1], [The archiver]) -+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) -+ -+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], -+ [lt_cv_ar_at_file=no -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM], -+ [echo conftest.$ac_objext > conftest.lst -+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' -+ AC_TRY_EVAL([lt_ar_try]) -+ if test "$ac_status" -eq 0; then -+ # Ensure the archiver fails upon bogus file names. -+ rm -f conftest.$ac_objext libconftest.a -+ AC_TRY_EVAL([lt_ar_try]) -+ if test "$ac_status" -ne 0; then -+ lt_cv_ar_at_file=@ -+ fi -+ fi -+ rm -f conftest.* libconftest.a -+ ]) -+ ]) -+ -+if test "x$lt_cv_ar_at_file" = xno; then -+ archiver_list_spec= -+else -+ archiver_list_spec=$lt_cv_ar_at_file -+fi -+_LT_DECL([], [archiver_list_spec], [1], -+ [How to feed a file listing to the archiver]) -+])# _LT_PROG_AR -+ -+ - # _LT_CMD_OLD_ARCHIVE - # ------------------- - m4_defun([_LT_CMD_OLD_ARCHIVE], --[AC_CHECK_TOOL(AR, ar, false) --test -z "$AR" && AR=ar --test -z "$AR_FLAGS" && AR_FLAGS=cru --_LT_DECL([], [AR], [1], [The archiver]) --_LT_DECL([], [AR_FLAGS], [1]) -+[_LT_PROG_AR - - AC_CHECK_TOOL(STRIP, strip, :) - test -z "$STRIP" && STRIP=: - _LT_DECL([], [STRIP], [1], [A symbol stripping program]) - - AC_CHECK_TOOL(RANLIB, ranlib, :) - test -z "$RANLIB" && RANLIB=: - _LT_DECL([], [RANLIB], [1], -@@ -1381,28 +1472,37 @@ test -z "$RANLIB" && RANLIB=: - # Determine commands to create old-style static archives. - old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' - old_postinstall_cmds='chmod 644 $oldlib' - old_postuninstall_cmds= - - if test -n "$RANLIB"; then - case $host_os in - openbsd*) -- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" -+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) -- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" -+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac -- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" - fi -+ -+case $host_os in -+ darwin*) -+ lock_old_archive_extraction=yes ;; -+ *) -+ lock_old_archive_extraction=no ;; -+esac - _LT_DECL([], [old_postinstall_cmds], [2]) - _LT_DECL([], [old_postuninstall_cmds], [2]) - _LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -+_LT_DECL([], [lock_old_archive_extraction], [0], -+ [Whether to use a lock for old archive extraction]) - ])# _LT_CMD_OLD_ARCHIVE - - - # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, - # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) - # ---------------------------------------------------------------- - # Check whether the given compiler option works - AC_DEFUN([_LT_COMPILER_OPTION], -@@ -1417,25 +1517,25 @@ AC_CACHE_CHECK([$1], [$2], - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) -+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD -- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD -+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* - ]) - -@@ -1465,17 +1565,17 @@ AC_CACHE_CHECK([$1], [$2], - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD -- $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp -+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi -@@ -1528,16 +1628,21 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [d - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - -+ mint*) -+ # On MiNT this can take a long time and run out of memory. -+ lt_cv_sys_max_cmd_len=8192; -+ ;; -+ - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. -@@ -1553,16 +1658,21 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [d - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - -+ os2*) -+ # The test takes a long time on OS/2. -+ lt_cv_sys_max_cmd_len=8192 -+ ;; -+ - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then -@@ -1592,18 +1702,18 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [d - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. -- while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ -- = "XX$teststring$teststring"; } >/dev/null 2>&1 && -+ while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ -+ = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= -@@ -1644,17 +1754,17 @@ m4_defun([_LT_HEADER_DLFCN], - m4_defun([_LT_TRY_DLOPEN_SELF], - [m4_require([_LT_HEADER_DLFCN])dnl - if test "$cross_compiling" = yes; then : - [$4] - else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --[#line __oline__ "configure" -+[#line $LINENO "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H - #include - #endif - - #include - -@@ -1685,26 +1795,36 @@ else - # else - # define LT_DLLAZY_OR_NOW 0 - # endif - # endif - # endif - # endif - #endif - --void fnord() { int i=42;} -+/* When -fvisbility=hidden is used, assume the code has been annotated -+ correspondingly for the symbols needed. */ -+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -+int fnord () __attribute__((visibility("default"))); -+#endif -+ -+int fnord () { return 42; } - int main () - { - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; -- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -+ else -+ { -+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -+ else puts (dlerror ()); -+ } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; - }] - _LT_EOF -@@ -1870,26 +1990,26 @@ AC_CACHE_CHECK([if $compiler supports -c - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) -+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD -- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD -+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp -+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for -@@ -2038,47 +2158,55 @@ fi - # ----------------------------- - # PORTME Fill in your ld.so characteristics - m4_defun([_LT_SYS_DYNAMIC_LINKER], - [AC_REQUIRE([AC_CANONICAL_HOST])dnl - m4_require([_LT_DECL_EGREP])dnl - m4_require([_LT_FILEUTILS_DEFAULTS])dnl - m4_require([_LT_DECL_OBJDUMP])dnl - m4_require([_LT_DECL_SED])dnl -+m4_require([_LT_CHECK_SHELL_FEATURES])dnl - AC_MSG_CHECKING([dynamic linker characteristics]) - m4_if([$1], - [], [ - if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac -- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` -- if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then -+ case $host_os in -+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; -+ *) lt_sed_strip_eq="s,=/,/,g" ;; -+ esac -+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` -+ case $lt_search_path_spec in -+ *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. -- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` -- else -- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -- fi -+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` -+ ;; -+ *) -+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` -+ ;; -+ esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done -- lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' -+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' - BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { -@@ -2088,17 +2216,23 @@ BEGIN {RS=" "; FS="/|\n";} { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } - }'` -- sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` -+ # AWK program above erroneously prepends '/' to C:/dos/paths -+ # for these hosts. -+ case $host_os in -+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ -+ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; -+ esac -+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` - else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - fi]) - library_names_spec= - libname_spec='lib$name' - soname_spec= - shrext_cmds=".so" - postinstall_cmds= -@@ -2114,26 +2248,26 @@ need_lib_prefix=unknown - hardcode_into_libs=no - - # when you set need_version to no, make sure it does not cause -set_version - # flags to be left without arguments - need_version=unknown - - case $host_os in - aix3*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - - aix[[4-9]]*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else -@@ -2176,29 +2310,29 @@ amigaos*) - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. -- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' -+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - - beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - - bsdi[[45]]*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and -@@ -2207,18 +2341,19 @@ bsdi[[45]]*) - ;; - - cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - -- case $GCC,$host_os in -- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) -+ case $GCC,$cc_basename in -+ yes,*) -+ # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ -@@ -2229,46 +2364,93 @@ cygwin* | mingw* | pw32* | cegcc*) - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" -+m4_if([$1], [],[ -+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -- sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -- if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then -- # It is most probably a Windows format PATH printed by -- # mingw gcc, but we are running on Cygwin. Gcc prints its search -- # path with ; separators, and with drive letters. We can handle the -- # drive letters (cygwin fileutils understands them), so leave them, -- # especially as we might pass files found there to a mingw objdump, -- # which wouldn't understand a cygwinified path. Ahh. -- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` -- else -- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -- fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac -+ dynamic_linker='Win32 ld.exe' - ;; - -+ *,cl*) -+ # Native MSVC -+ libname_spec='$name' -+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -+ library_names_spec='${libname}.dll.lib' -+ -+ case $build_os in -+ mingw*) -+ sys_lib_search_path_spec= -+ lt_save_ifs=$IFS -+ IFS=';' -+ for lt_path in $LIB -+ do -+ IFS=$lt_save_ifs -+ # Let DOS variable expansion print the short 8.3 style file name. -+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` -+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" -+ done -+ IFS=$lt_save_ifs -+ # Convert to MSYS style. -+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` -+ ;; -+ cygwin*) -+ # Convert to unix form, then to dos form, then back to unix form -+ # but this time dos style (no spaces!) so that the unix form looks -+ # like /cygdrive/c/PROGRA~1:/cygdr... -+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` -+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` -+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -+ ;; -+ *) -+ sys_lib_search_path_spec="$LIB" -+ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then -+ # It is most probably a Windows format PATH. -+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` -+ else -+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -+ fi -+ # FIXME: find the short name or the path components, as spaces are -+ # common. (e.g. "Program Files" -> "PROGRA~1") -+ ;; -+ esac -+ -+ # DLL is installed to $(libdir)/../bin by postinstall_cmds -+ postinstall_cmds='base_file=`basename \${file}`~ -+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ -+ dldir=$destdir/`dirname \$dlpath`~ -+ test -d \$dldir || mkdir -p \$dldir~ -+ $install_prog $dir/$dlname \$dldir/$dlname' -+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ -+ dlpath=$dir/\$dldll~ -+ $RM \$dlpath' -+ shlibpath_overrides_runpath=yes -+ dynamic_linker='Win32 link.exe' -+ ;; -+ - *) -+ # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' -+ dynamic_linker='Win32 ld.exe' - ;; - esac -- dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - - darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no -@@ -2279,36 +2461,32 @@ darwin* | rhapsody*) - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - - dgux*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - --freebsd1*) -- dynamic_linker=no -- ;; -- - freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in -- freebsd[[123]]*) objformat=aout ;; -+ freebsd[[23]].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no -@@ -2316,17 +2494,17 @@ freebsd* | dragonfly*) - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in -- freebsd2*) -+ freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) -@@ -2336,22 +2514,36 @@ freebsd* | dragonfly*) - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - - gnu*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ ;; -+ -+haiku*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ dynamic_linker="$host_os runtime_loader" -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - - hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no -@@ -2387,38 +2579,40 @@ hpux9* | hpux10* | hpux11*) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac -- # HP-UX runs *really* slowly unless shared libraries are mode 555. -+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' -+ # or fails outright, so override atomically: -+ install_override_mode=555 - ;; - - interix[[3-9]]*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - - irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' -@@ -2445,49 +2639,55 @@ irix5* | irix6* | nonstopux*) - hardcode_into_libs=yes - ;; - - # No shared lib support for Linux oldld, aout, or coff. - linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - --# This must be Linux ELF. --linux* | k*bsd*-gnu) -- version_type=linux -+# This must be glibc/ELF. -+linux* | k*bsd*-gnu | kopensolaris*-gnu) -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no -+ - # Some binutils ld are patched to set DT_RUNPATH -- save_LDFLAGS=$LDFLAGS -- save_libdir=$libdir -- eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ -- LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" -- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], -- [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], -- [shlibpath_overrides_runpath=yes])]) -- LDFLAGS=$save_LDFLAGS -- libdir=$save_libdir -+ AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], -+ [lt_cv_shlibpath_overrides_runpath=no -+ save_LDFLAGS=$LDFLAGS -+ save_libdir=$libdir -+ eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ -+ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" -+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], -+ [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], -+ [lt_cv_shlibpath_overrides_runpath=yes])]) -+ LDFLAGS=$save_LDFLAGS -+ libdir=$save_libdir -+ ]) -+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then -- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" -+ - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. -@@ -2508,17 +2708,17 @@ netbsd*) - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - - newsos6) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - - *nto* | *qnx*) - version_type=qnx - need_lib_prefix=no -@@ -2577,17 +2777,17 @@ osf3* | osf4* | osf5*) - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - - rdos*) - dynamic_linker=no - ;; - - solaris*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable -@@ -2602,17 +2802,17 @@ sunos4*) - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - - sysv4 | sysv4.3*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH -@@ -2626,17 +2826,17 @@ sysv4 | sysv4.3*) - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - - sysv4*MP*) - if test -d /usr/nec ;then -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf -@@ -2657,27 +2857,27 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - - tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - - uts4*) -- version_type=linux -+ version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - - *) - dynamic_linker=no - ;; -@@ -2709,16 +2909,18 @@ fi - _LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) - _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) - _LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) - _LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -+_LT_DECL([], [install_override_mode], [1], -+ [Permission mode override for installation of shared libraries]) - _LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) - _LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) - _LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) - _LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but -@@ -2821,16 +3023,17 @@ fi - # ---------- - # find the pathname to the GNU or non-GNU linker - AC_DEFUN([LT_PATH_LD], - [AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([AC_CANONICAL_BUILD])dnl - m4_require([_LT_DECL_SED])dnl - m4_require([_LT_DECL_EGREP])dnl -+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - - AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - - ac_prog=ld -@@ -2942,26 +3145,31 @@ m4_defun([_LT_CMD_RELOAD], - [lt_cv_ld_reload_flag='-r']) - reload_flag=$lt_cv_ld_reload_flag - case $reload_flag in - "" | " "*) ;; - *) reload_flag=" $reload_flag" ;; - esac - reload_cmds='$LD$reload_flag -o $output$reload_objs' - case $host_os in -+ cygwin* | mingw* | pw32* | cegcc*) -+ if test "$GCC" != yes; then -+ reload_cmds=false -+ fi -+ ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; - esac --_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl --_LT_DECL([], [reload_cmds], [2])dnl -+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl -+_LT_TAGDECL([], [reload_cmds], [2])dnl - ])# _LT_CMD_RELOAD - - - # _LT_CHECK_MAGIC_METHOD - # ---------------------- - # how to check for library dependencies - # -- PORTME fill in with the dynamic library characteristics - m4_defun([_LT_CHECK_MAGIC_METHOD], -@@ -3003,26 +3211,28 @@ cygwin*) - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - - mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. -- if ( file / ) >/dev/null 2>&1; then -+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. -+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else -- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' -+ # Keep this pattern in sync with the one in func_win32_libid. -+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - --cegcc) -+cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - - darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; -@@ -3042,29 +3252,33 @@ freebsd* | dragonfly*) - lt_cv_deplibs_check_method=pass_all - fi - ;; - - gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -+haiku*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ - hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) -- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] -+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) -- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' -+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - - interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' -@@ -3075,18 +3289,18 @@ irix5* | irix6* | nonstopux*) - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - --# This must be Linux ELF. --linux* | k*bsd*-gnu) -+# This must be glibc/ELF. -+linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' -@@ -3154,24 +3368,43 @@ sysv4 | sysv4.3*) - esac - ;; - - tpf*) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ]) -+ -+file_magic_glob= -+want_nocaseglob=no -+if test "$build" = "$host"; then -+ case $host_os in -+ mingw* | pw32*) -+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then -+ want_nocaseglob=yes -+ else -+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` -+ fi -+ ;; -+ esac -+fi -+ - file_magic_cmd=$lt_cv_file_magic_cmd - deplibs_check_method=$lt_cv_deplibs_check_method - test -z "$deplibs_check_method" && deplibs_check_method=unknown - - _LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) - _LT_DECL([], [file_magic_cmd], [1], -- [Command to use when deplibs_check_method == "file_magic"]) -+ [Command to use when deplibs_check_method = "file_magic"]) -+_LT_DECL([], [file_magic_glob], [1], -+ [How to find potential files when deplibs_check_method = "file_magic"]) -+_LT_DECL([], [want_nocaseglob], [1], -+ [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) - ])# _LT_CHECK_MAGIC_METHOD - - - # LT_PATH_NM - # ---------- - # find the pathname to a BSD- or MS-compatible name lister - AC_DEFUN([LT_PATH_NM], - [AC_REQUIRE([AC_PROG_CC])dnl -@@ -3218,59 +3451,132 @@ else - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} - fi]) - if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" - else - # Didn't find any BSD compatible name lister, look for dumpbin. -- AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) -+ if test -n "$DUMPBIN"; then : -+ # Let the user override the test. -+ else -+ AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) -+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in -+ *COFF*) -+ DUMPBIN="$DUMPBIN -symbols" -+ ;; -+ *) -+ DUMPBIN=: -+ ;; -+ esac -+ fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi - fi - test -z "$NM" && NM=nm - AC_SUBST([NM]) - _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - - AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext -- (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) -+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD -- (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) -+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD -- (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) -+ (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) - ])# LT_PATH_NM - - # Old names: - AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) - AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) - dnl aclocal-1.4 backwards compatibility: - dnl AC_DEFUN([AM_PROG_NM], []) - dnl AC_DEFUN([AC_PROG_NM], []) - -+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -+# -------------------------------- -+# how to determine the name of the shared library -+# associated with a specific link library. -+# -- PORTME fill in with the dynamic library characteristics -+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -+[m4_require([_LT_DECL_EGREP]) -+m4_require([_LT_DECL_OBJDUMP]) -+m4_require([_LT_DECL_DLLTOOL]) -+AC_CACHE_CHECK([how to associate runtime and link libraries], -+lt_cv_sharedlib_from_linklib_cmd, -+[lt_cv_sharedlib_from_linklib_cmd='unknown' -+ -+case $host_os in -+cygwin* | mingw* | pw32* | cegcc*) -+ # two different shell functions defined in ltmain.sh -+ # decide which to use based on capabilities of $DLLTOOL -+ case `$DLLTOOL --help 2>&1` in -+ *--identify-strict*) -+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib -+ ;; -+ *) -+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback -+ ;; -+ esac -+ ;; -+*) -+ # fallback: assume linklib IS sharedlib -+ lt_cv_sharedlib_from_linklib_cmd="$ECHO" -+ ;; -+esac -+]) -+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO -+ -+_LT_DECL([], [sharedlib_from_linklib_cmd], [1], -+ [Command to associate shared and link libraries]) -+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -+ -+ -+# _LT_PATH_MANIFEST_TOOL -+# ---------------------- -+# locate the manifest tool -+m4_defun([_LT_PATH_MANIFEST_TOOL], -+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], -+ [lt_cv_path_mainfest_tool=no -+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD -+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then -+ lt_cv_path_mainfest_tool=yes -+ fi -+ rm -f conftest*]) -+if test "x$lt_cv_path_mainfest_tool" != xyes; then -+ MANIFEST_TOOL=: -+fi -+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -+])# _LT_PATH_MANIFEST_TOOL -+ - - # LT_LIB_M - # -------- - # check for math library - AC_DEFUN([LT_LIB_M], - [AC_REQUIRE([AC_CANONICAL_HOST])dnl - LIBM= - case $host in --*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) -+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; - *-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; - *) - AC_CHECK_LIB(m, cos, LIBM="-lm") -@@ -3288,33 +3594,39 @@ dnl AC_DEFUN([AC_CHECK_LIBM], []) - # _LT_COMPILER_NO_RTTI([TAGNAME]) - # ------------------------------- - m4_defun([_LT_COMPILER_NO_RTTI], - [m4_require([_LT_TAG_COMPILER])dnl - - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - - if test "$GCC" = yes; then -- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -+ case $cc_basename in -+ nvcc*) -+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; -+ *) -+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; -+ esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) - fi - _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) - ])# _LT_COMPILER_NO_RTTI - - - # _LT_CMD_GLOBAL_SYMBOLS - # ---------------------- - m4_defun([_LT_CMD_GLOBAL_SYMBOLS], - [AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([AC_PROG_CC])dnl -+AC_REQUIRE([AC_PROG_AWK])dnl - AC_REQUIRE([LT_PATH_NM])dnl - AC_REQUIRE([LT_PATH_LD])dnl - m4_require([_LT_DECL_SED])dnl - m4_require([_LT_DECL_EGREP])dnl - m4_require([_LT_TAG_COMPILER])dnl - - # Check for command to grab the raw symbol name followed by C symbol from nm. - AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -@@ -3372,18 +3684,18 @@ case `$NM -V 2>&1` in - esac - - # Transform an extracted symbol line into a proper C declaration. - # Some systems (esp. on ia64) link data and code symbols differently, - # so use this general approach. - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - - # Transform an extracted symbol line into symbol name and symbol address --lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" --lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" -+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - - # Handle CRLF in mingw tool chain - opt_cr= - case $build_os in - mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; - esac -@@ -3397,28 +3709,30 @@ for ac_symprfx in "" "_"; do - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ - " {last_section=section; section=\$ 3};"\ -+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ - " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ - " \$ 0!~/External *\|/{next};"\ - " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ - " {if(hide[section]) next};"\ - " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ - " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ - " s[1]~/^[@?]/{print s[1], s[1]; next};"\ - " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ - " ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi -+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF - #ifdef __cplusplus - extern "C" { -@@ -3430,40 +3744,52 @@ void nm_test_func(void){} - } - #endif - int main(){nm_test_var='a';nm_test_func();return(0);} - _LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm -- if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then -+ if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -+/* DATA imports from DLLs on WIN32 con't be const, because runtime -+ relocations are performed -- see ld's documentation on pseudo-relocs. */ -+# define LT@&t@_DLSYM_CONST -+#elif defined(__osf__) -+/* This system does not cope well with relocations in const data. */ -+# define LT@&t@_DLSYM_CONST -+#else -+# define LT@&t@_DLSYM_CONST const -+#endif -+ - #ifdef __cplusplus - extern "C" { - #endif - - _LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - - /* The mapping between symbol names and symbols. */ --const struct { -+LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; - } - lt__PROGRAM__LTX_preloaded_symbols[[]] = - { - { "@PROGRAM@", (void *) 0 }, - _LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext -@@ -3479,25 +3805,25 @@ static const void *lt_preloaded_setup() - #endif - - #ifdef __cplusplus - } - #endif - _LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext -- lt_save_LIBS="$LIBS" -- lt_save_CFLAGS="$CFLAGS" -+ lt_globsym_save_LIBS=$LIBS -+ lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi -- LIBS="$lt_save_LIBS" -- CFLAGS="$lt_save_CFLAGS" -+ LIBS=$lt_globsym_save_LIBS -+ CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD -@@ -3520,38 +3846,46 @@ if test -z "$lt_cv_sys_global_symbol_pip - lt_cv_sys_global_symbol_to_cdecl= - fi - if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) - else - AC_MSG_RESULT(ok) - fi - -+# Response file support. -+if test "$lt_cv_nm_interface" = "MS dumpbin"; then -+ nm_file_list_spec='@' -+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then -+ nm_file_list_spec='@' -+fi -+ - _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) - _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) - _LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) - _LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -+_LT_DECL([], [nm_file_list_spec], [1], -+ [Specify filename containing input files for $NM]) - ]) # _LT_CMD_GLOBAL_SYMBOLS - - - # _LT_COMPILER_PIC([TAGNAME]) - # --------------------------- - m4_defun([_LT_COMPILER_PIC], - [m4_require([_LT_TAG_COMPILER])dnl - _LT_TAGVAR(lt_prog_compiler_wl, $1)= - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)= - --AC_MSG_CHECKING([for $compiler option to produce PIC]) - m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) -@@ -3592,16 +3926,21 @@ m4_if([$1], [CXX], [ - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; -+ haiku*) -+ # PIC is the default for Haiku. -+ # The "-static" flag exists, but is broken. -+ _LT_TAGVAR(lt_prog_compiler_static, $1)= -+ ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi -@@ -3641,16 +3980,22 @@ m4_if([$1], [CXX], [ - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; -+ mingw* | cygwin* | os2* | pw32* | cegcc*) -+ # This hack is so that the source file can tell whether it is being -+ # built for inclusion in a dll (and should export symbols for example). -+ m4_if([$1], [GCJ], [], -+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) -+ ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -@@ -3697,17 +4042,17 @@ m4_if([$1], [CXX], [ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; -- linux* | k*bsd*-gnu) -+ linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. -@@ -3730,18 +4075,18 @@ m4_if([$1], [CXX], [ - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; -- xlc* | xlC*) -- # IBM XL 8.0 on PPC -+ xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) -+ # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 -@@ -3793,17 +4138,17 @@ m4_if([$1], [CXX], [ - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in -- CC*) -+ CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' -@@ -3897,16 +4242,22 @@ m4_if([$1], [CXX], [ - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - -+ haiku*) -+ # PIC is the default for Haiku. -+ # The "-static" flag exists, but is broken. -+ _LT_TAGVAR(lt_prog_compiler_static, $1)= -+ ;; -+ - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; -@@ -3939,16 +4290,25 @@ m4_if([$1], [CXX], [ - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac -+ -+ case $cc_basename in -+ nvcc*) # Cuda Compiler Driver 2.2 -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' -+ if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" -+ fi -+ ;; -+ esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -@@ -3981,17 +4341,17 @@ m4_if([$1], [CXX], [ - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - -- linux* | k*bsd*-gnu) -+ linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. -@@ -4002,47 +4362,68 @@ m4_if([$1], [CXX], [ - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; -- pgcc* | pgf77* | pgf90* | pgf95*) -+ nagfor*) -+ # NAG Fortran compiler -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; -- xl*) -- # IBM XL C 8.0/Fortran 10.1 on PPC -+ xl* | bgxl* | bgf* | mpixl*) -+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in -+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) -+ # Sun Fortran 8.3 passes all unrecognized flags to the linker -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='' -+ ;; -+ *Sun\ F* | *Sun*Fortran*) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' -+ ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; -- *Sun\ F*) -- # Sun Fortran 8.3 passes all unrecognized flags to the linker -- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ *Intel*\ [[CF]]*Compiler*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -+ ;; -+ *Portland\ Group*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -- _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -@@ -4064,17 +4445,17 @@ m4_if([$1], [CXX], [ - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in -- f77* | f90* | f95*) -+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' -@@ -4121,19 +4502,21 @@ case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; - esac --AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) --_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], -- [How to pass a linker flag through the compiler]) -+ -+AC_CACHE_CHECK([for $compiler option to produce PIC], -+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], -+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - - # - # Check to make sure the PIC flag actually works. - # - if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], -@@ -4142,16 +4525,18 @@ if test -n "$_LT_TAGVAR(lt_prog_compiler - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) - fi - _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], -+ [How to pass a linker flag through the compiler]) - # - # Check to make sure the static flag actually works. - # - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" - _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], -@@ -4162,60 +4547,70 @@ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - - - # _LT_LINKER_SHLIBS([TAGNAME]) - # ---------------------------- - # See if the linker supports building shared libraries. - m4_defun([_LT_LINKER_SHLIBS], - [AC_REQUIRE([LT_PATH_LD])dnl - AC_REQUIRE([LT_PATH_NM])dnl -+m4_require([_LT_PATH_MANIFEST_TOOL])dnl - m4_require([_LT_FILEUTILS_DEFAULTS])dnl - m4_require([_LT_DECL_EGREP])dnl - m4_require([_LT_DECL_SED])dnl - m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl - m4_require([_LT_TAG_COMPILER])dnl - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm -+ # Also, AIX nm treats weak defined symbols like other global defined -+ # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" -- ;; -+ ;; - cygwin* | mingw* | cegcc*) -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' -- ;; -+ case $cc_basename in -+ cl*) -+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' -+ ;; -+ *) -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' -+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] -+ ;; -+ esac -+ ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -- ;; -+ ;; - esac -- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - ], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= -@@ -4253,17 +4648,43 @@ dnl Note also adjust exclude_expsyms for - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes -+ -+ # On some targets, GNU ld is compatible enough with the native linker -+ # that we're better off using the native interface for both. -+ lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then -+ case $host_os in -+ aix*) -+ # The AIX port of GNU ld has always aspired to compatibility -+ # with the native linker. However, as the warning in the GNU ld -+ # block says, versions before 2.19.5* couldn't really create working -+ # shared libraries, regardless of the interface used. -+ case `$LD -v 2>&1` in -+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;; -+ *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; -+ *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; -+ *) -+ lt_use_gnu_ld_interface=yes -+ ;; -+ esac -+ ;; -+ *) -+ lt_use_gnu_ld_interface=yes -+ ;; -+ esac -+ fi -+ -+ if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -@@ -4271,36 +4692,38 @@ dnl Note also adjust exclude_expsyms for - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in -+ *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - --*** Warning: the GNU linker, at least up to release 2.9.1, is reported -+*** Warning: the GNU linker, at least up to release 2.19, is reported - *** to be unable to reliably create shared libraries on AIX. - *** Therefore, libtool is disabling shared libraries support. If you --*** really care for shared libraries, you may want to modify your PATH --*** so that a non-GNU linker is found, and then restart. -+*** really care for shared libraries, you may want to install binutils -+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -+*** You will then need to restart the configuration process. - - _LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) -@@ -4326,20 +4749,22 @@ dnl Note also adjust exclude_expsyms for - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' -+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else -@@ -4347,108 +4772,117 @@ dnl Note also adjust exclude_expsyms for - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - -+ haiku*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ ;; -+ - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - -- gnu* | linux* | tpf* | k*bsd*-gnu) -+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then -- tmp_addflag= -+ tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; -- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -+ pgf77* | pgf90* | pgf95* | pgfortran*) -+ # Portland Group f77 and f90 compilers -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; -- xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) -+ xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; -+ nvcc*) # Cuda Compiler Driver 2.2 -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' -+ _LT_TAGVAR(compiler_needs_object, $1)=yes -+ ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in -- xlf*) -+ xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' -- _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ -- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' -+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -@@ -4456,18 +4890,18 @@ dnl Note also adjust exclude_expsyms for - *** create shared libraries on Solaris systems. Therefore, libtool - *** is disabling shared libraries support. We urge you to upgrade GNU - *** binutils to release 2.9.1 or newer. Another option is to modify - *** your PATH or compiler configuration so that the native linker is - *** used, and then restart. - - _LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) -@@ -4503,18 +4937,18 @@ dnl Note also adjust exclude_expsyms for - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= -@@ -4544,18 +4978,20 @@ dnl Note also adjust exclude_expsyms for - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm -+ # Also, AIX nm treats weak defined symbols like other global -+ # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then -- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. -@@ -4632,35 +5068,40 @@ dnl Note also adjust exclude_expsyms for - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. -- _LT_SYS_MODULE_PATH_AIX -+ _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. -- _LT_SYS_MODULE_PATH_AIX -+ _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' -- # Exported symbols can be pulled into shared objects from archives -- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' -+ if test "$with_gnu_ld" = yes; then -+ # We only use this code for GNU lds that support --whole-archive. -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -+ else -+ # Exported symbols can be pulled into shared objects from archives -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' -+ fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) -@@ -4682,131 +5123,177 @@ dnl Note also adjust exclude_expsyms for - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' -- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -- # Tell ltmain to make .lib files, not .a files. -- libext=lib -- # Tell ltmain to make .dll files, not .so files. -- shrext_cmds=".dll" -- # FIXME: Setting linknames here is a bad hack. -- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' -- # The linker will automatically build a .lib file if we build a DLL. -- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' -- # FIXME: Should let the user specify the lib program. -- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' -- _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' -- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ case $cc_basename in -+ cl*) -+ # Native MSVC -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_TAGVAR(always_export_symbols, $1)=yes -+ _LT_TAGVAR(file_list_spec, $1)='@' -+ # Tell ltmain to make .lib files, not .a files. -+ libext=lib -+ # Tell ltmain to make .dll files, not .so files. -+ shrext_cmds=".dll" -+ # FIXME: Setting linknames here is a bad hack. -+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; -+ else -+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; -+ fi~ -+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ -+ linknames=' -+ # The linker will not automatically build a static lib if we build a DLL. -+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' -+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' -+ # Don't use ranlib -+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' -+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ -+ lt_tool_outputfile="@TOOL_OUTPUT@"~ -+ case $lt_outputfile in -+ *.exe|*.EXE) ;; -+ *) -+ lt_outputfile="$lt_outputfile.exe" -+ lt_tool_outputfile="$lt_tool_outputfile.exe" -+ ;; -+ esac~ -+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then -+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; -+ $RM "$lt_outputfile.manifest"; -+ fi' -+ ;; -+ *) -+ # Assume MSVC wrapper -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ # Tell ltmain to make .lib files, not .a files. -+ libext=lib -+ # Tell ltmain to make .dll files, not .so files. -+ shrext_cmds=".dll" -+ # FIXME: Setting linknames here is a bad hack. -+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' -+ # The linker will automatically build a .lib file if we build a DLL. -+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' -+ # FIXME: Should let the user specify the lib program. -+ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' -+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ ;; -+ esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - -- freebsd1*) -- _LT_TAGVAR(ld_shlibs, $1)=no -- ;; -- - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. -- freebsd2*) -+ freebsd2.*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then -- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) -- if test "$GCC" = yes -a "$with_gnu_ld" = no; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) -- if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) -- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ m4_if($1, [], [ -+ # Older versions of the 11.00 compiler do not understand -b yet -+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) -+ _LT_LINKER_OPTION([if $CC understands -b], -+ _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], -+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], -+ [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], -+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in -@@ -4824,29 +5311,44 @@ dnl Note also adjust exclude_expsyms for - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. -- save_LDFLAGS="$LDFLAGS" -- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" -- AC_LINK_IFELSE(int foo(void) {}, -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' -- ) -- LDFLAGS="$save_LDFLAGS" -+ # This should be the same for all languages, so no per-tag cache variable. -+ AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], -+ [lt_cv_irix_exported_symbol], -+ [save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" -+ AC_LINK_IFELSE( -+ [AC_LANG_SOURCE( -+ [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], -+ [C++], [[int foo (void) { return 0; }]], -+ [Fortran 77], [[ -+ subroutine foo -+ end]], -+ [Fortran], [[ -+ subroutine foo -+ end]])])], -+ [lt_cv_irix_exported_symbol=yes], -+ [lt_cv_irix_exported_symbol=no]) -+ LDFLAGS="$save_LDFLAGS"]) -+ if test "$lt_cv_irix_exported_symbol" = yes; then -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' -+ fi - else -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - -@@ -4898,58 +5400,58 @@ dnl Note also adjust exclude_expsyms for - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -- _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' -+ _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ -- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' -+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' -+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; -@@ -5115,46 +5617,48 @@ x|xyes) - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. -- AC_MSG_CHECKING([whether -lc should be explicitly linked in]) -- $RM conftest* -- echo "$lt_simple_compile_test_code" > conftest.$ac_ext -- -- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then -- soname=conftest -- lib=conftest -- libobjs=conftest.$ac_objext -- deplibs= -- wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) -- pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) -- compiler_flags=-v -- linker_flags=-v -- verstring= -- output_objdir=. -- libname=conftest -- lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) -- _LT_TAGVAR(allow_undefined_flag, $1)= -- if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) -- then -- _LT_TAGVAR(archive_cmds_need_lc, $1)=no -- else -- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes -- fi -- _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag -- else -- cat conftest.err 1>&5 -- fi -- $RM conftest* -- AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) -+ AC_CACHE_CHECK([whether -lc should be explicitly linked in], -+ [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), -+ [$RM conftest* -+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext -+ -+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then -+ soname=conftest -+ lib=conftest -+ libobjs=conftest.$ac_objext -+ deplibs= -+ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) -+ pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) -+ compiler_flags=-v -+ linker_flags=-v -+ verstring= -+ output_objdir=. -+ libname=conftest -+ lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) -+ _LT_TAGVAR(allow_undefined_flag, $1)= -+ if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) -+ then -+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no -+ else -+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes -+ fi -+ _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag -+ else -+ cat conftest.err 1>&5 -+ fi -+ $RM conftest* -+ ]) -+ _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; - esac - - _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -@@ -5181,19 +5685,16 @@ esac - [Whether we are building with GNU ld or not]) - _LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) - _LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) - _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) --_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], -- [[If ld is used when linking, flag to hardcode $libdir into a binary -- during linking. This must work even if $libdir does not exist]]) - _LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) - _LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) - _LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is -@@ -5209,28 +5710,28 @@ esac - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) - _LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) - _LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) --_LT_TAGDECL([], [fix_srcfile_path], [1], -- [Fix the shell variable $srcfile for the compiler]) - _LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) - _LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) - _LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) - _LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) - _LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -+_LT_TAGDECL([], [postlink_cmds], [2], -+ [Commands necessary for finishing linking programs]) - _LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) - dnl FIXME: Not yet implemented - dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], - dnl [Compiler flag to generate thread safe objects]) - ])# _LT_LINKER_SHLIBS - - -@@ -5314,68 +5815,54 @@ if test -n "$compiler"; then - - _LT_CONFIG($1) - fi - AC_LANG_POP - CC="$lt_save_CC" - ])# _LT_LANG_C_CONFIG - - --# _LT_PROG_CXX --# ------------ --# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ --# compiler, we have our own version here. --m4_defun([_LT_PROG_CXX], --[ --pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) --AC_PROG_CXX -+# _LT_LANG_CXX_CONFIG([TAG]) -+# -------------------------- -+# Ensure that the configuration variables for a C++ compiler are suitably -+# defined. These variables are subsequently used by _LT_CONFIG to write -+# the compiler configuration to `libtool'. -+m4_defun([_LT_LANG_CXX_CONFIG], -+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -+m4_require([_LT_DECL_EGREP])dnl -+m4_require([_LT_PATH_MANIFEST_TOOL])dnl - if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP - else - _lt_caught_CXX_error=yes - fi --popdef([AC_MSG_ERROR]) --])# _LT_PROG_CXX -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([_LT_PROG_CXX], []) -- -- --# _LT_LANG_CXX_CONFIG([TAG]) --# -------------------------- --# Ensure that the configuration variables for a C++ compiler are suitably --# defined. These variables are subsequently used by _LT_CONFIG to write --# the compiler configuration to `libtool'. --m4_defun([_LT_LANG_CXX_CONFIG], --[AC_REQUIRE([_LT_PROG_CXX])dnl --m4_require([_LT_FILEUTILS_DEFAULTS])dnl --m4_require([_LT_DECL_EGREP])dnl - - AC_LANG_PUSH(C++) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= --_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -+_LT_TAGVAR(reload_flag, $1)=$reload_flag -+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - _LT_TAGVAR(no_undefined_flag, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - - # Source file extension for C++ test sources. - ac_ext=cpp - - # Object file extension for compiled C++ test sources. -@@ -5397,16 +5884,17 @@ if test "$_lt_caught_CXX_error" != yes; - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC -+ lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else -@@ -5414,16 +5902,17 @@ if test "$_lt_caught_CXX_error" != yes; - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} -+ CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then -@@ -5435,18 +5924,18 @@ if test "$_lt_caught_CXX_error" != yes; - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' -@@ -5468,17 +5957,17 @@ if test "$_lt_caught_CXX_error" != yes; - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. -- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' -+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics -@@ -5577,36 +6066,41 @@ if test "$_lt_caught_CXX_error" != yes; - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. -- _LT_SYS_MODULE_PATH_AIX -+ _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - -- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. -- _LT_SYS_MODULE_PATH_AIX -+ _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' -- # Exported symbols can be pulled into shared objects from archives -- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' -+ if test "$with_gnu_ld" = yes; then -+ # We only use this code for GNU lds that support --whole-archive. -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -+ else -+ # Exported symbols can be pulled into shared objects from archives -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' -+ fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - -@@ -5626,38 +6120,85 @@ if test "$_lt_caught_CXX_error" != yes; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) -- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, -- # as there is no search path for DLLs. -- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -- _LT_TAGVAR(always_export_symbols, $1)=no -- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -- -- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -- # If the export-symbols file already is a .def file (1st line -- # is EXPORTS), use it as is; otherwise, prepend... -- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -- cp $export_symbols $output_objdir/$soname.def; -- else -- echo EXPORTS > $output_objdir/$soname.def; -- cat $export_symbols >> $output_objdir/$soname.def; -- fi~ -- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -- else -- _LT_TAGVAR(ld_shlibs, $1)=no -- fi -- ;; -+ case $GXX,$cc_basename in -+ ,cl* | no,cl*) -+ # Native MSVC -+ # hardcode_libdir_flag_spec is actually meaningless, as there is -+ # no search path for DLLs. -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_TAGVAR(always_export_symbols, $1)=yes -+ _LT_TAGVAR(file_list_spec, $1)='@' -+ # Tell ltmain to make .lib files, not .a files. -+ libext=lib -+ # Tell ltmain to make .dll files, not .so files. -+ shrext_cmds=".dll" -+ # FIXME: Setting linknames here is a bad hack. -+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -+ $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; -+ else -+ $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; -+ fi~ -+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ -+ linknames=' -+ # The linker will not automatically build a static lib if we build a DLL. -+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' -+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ # Don't use ranlib -+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' -+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ -+ lt_tool_outputfile="@TOOL_OUTPUT@"~ -+ case $lt_outputfile in -+ *.exe|*.EXE) ;; -+ *) -+ lt_outputfile="$lt_outputfile.exe" -+ lt_tool_outputfile="$lt_tool_outputfile.exe" -+ ;; -+ esac~ -+ func_to_tool_file "$lt_outputfile"~ -+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then -+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; -+ $RM "$lt_outputfile.manifest"; -+ fi' -+ ;; -+ *) -+ # g++ -+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, -+ # as there is no search path for DLLs. -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_TAGVAR(always_export_symbols, $1)=no -+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ -+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -+ # If the export-symbols file already is a .def file (1st line -+ # is EXPORTS), use it as is; otherwise, prepend... -+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -+ cp $export_symbols $output_objdir/$soname.def; -+ else -+ echo EXPORTS > $output_objdir/$soname.def; -+ cat $export_symbols >> $output_objdir/$soname.def; -+ fi~ -+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -+ else -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support -@@ -5670,17 +6211,17 @@ if test "$_lt_caught_CXX_error" != yes; - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - -- freebsd[[12]]*) -+ freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; -@@ -5689,16 +6230,21 @@ if test "$_lt_caught_CXX_error" != yes; - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - -+ haiku*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ ;; -+ - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. -@@ -5713,21 +6259,21 @@ if test "$_lt_caught_CXX_error" != yes; - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. -- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' -+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then -- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - -@@ -5778,30 +6324,30 @@ if test "$_lt_caught_CXX_error" != yes; - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. -- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' -+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; -@@ -5821,41 +6367,41 @@ if test "$_lt_caught_CXX_error" != yes; - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - -- linux* | k*bsd*-gnu) -+ linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' -@@ -5863,17 +6409,17 @@ if test "$_lt_caught_CXX_error" != yes; - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. -- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' -+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; -@@ -5900,44 +6446,44 @@ if test "$_lt_caught_CXX_error" != yes; - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in -- *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) -+ *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ -- compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' -+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ -- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ -+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ -- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' -+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ -- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' -+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; -- *) # Version 6 will use weak symbols -+ *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -@@ -5946,19 +6492,19 @@ if test "$_lt_caught_CXX_error" != yes; - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. -- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' -+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; -- xl*) -+ xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ -@@ -5968,23 +6514,23 @@ if test "$_lt_caught_CXX_error" != yes; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. -- output_verbose_link_cmd='echo' -+ output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac -@@ -6043,17 +6589,17 @@ if test "$_lt_caught_CXX_error" != yes; - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi -- output_verbose_link_cmd=echo -+ output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) -@@ -6078,61 +6624,61 @@ if test "$_lt_caught_CXX_error" != yes; - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ -- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ -+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. -- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' -+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. -- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' -+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; -@@ -6158,17 +6704,17 @@ if test "$_lt_caught_CXX_error" != yes; - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in -- CC*) -+ CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -@@ -6179,17 +6725,17 @@ if test "$_lt_caught_CXX_error" != yes; - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - -- output_verbose_link_cmd='echo' -+ output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) -@@ -6199,35 +6745,35 @@ if test "$_lt_caught_CXX_error" != yes; - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then -- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' -+ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. -- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' -+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. -- output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' -+ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; -@@ -6271,16 +6817,20 @@ if test "$_lt_caught_CXX_error" != yes; - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ -+ '"$_LT_TAGVAR(old_archive_cmds, $1)" -+ _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ -+ '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - -@@ -6326,38 +6876,63 @@ if test "$_lt_caught_CXX_error" != yes; - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC -+ CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld - fi # test "$_lt_caught_CXX_error" != yes - - AC_LANG_POP - ])# _LT_LANG_CXX_CONFIG - - -+# _LT_FUNC_STRIPNAME_CNF -+# ---------------------- -+# func_stripname_cnf prefix suffix name -+# strip PREFIX and SUFFIX off of NAME. -+# PREFIX and SUFFIX must not contain globbing or regex special -+# characters, hashes, percent signs, but SUFFIX may contain a leading -+# dot (in which case that matches only a dot). -+# -+# This function is identical to the (non-XSI) version of func_stripname, -+# except this one can be used by m4 code that may be executed by configure, -+# rather than the libtool script. -+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -+AC_REQUIRE([_LT_DECL_SED]) -+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -+func_stripname_cnf () -+{ -+ case ${2} in -+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; -+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; -+ esac -+} # func_stripname_cnf -+])# _LT_FUNC_STRIPNAME_CNF -+ - # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) - # --------------------------------- - # Figure out "hidden" library dependencies from verbose - # compiler output when linking a shared library. - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - m4_defun([_LT_SYS_HIDDEN_LIBDEPS], - [m4_require([_LT_FILEUTILS_DEFAULTS])dnl -+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl - # Dependencies to place before and after the object being linked: - _LT_TAGVAR(predep_objects, $1)= - _LT_TAGVAR(postdep_objects, $1)= - _LT_TAGVAR(predeps, $1)= - _LT_TAGVAR(postdeps, $1)= - _LT_TAGVAR(compiler_lib_search_path, $1)= - - dnl we can't use the lt_simple_compile_test_code here, -@@ -6397,44 +6972,66 @@ private: - ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF - public class foo { - private int a; - public void bar (void) { - a = 0; - } - }; - _LT_EOF -+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF -+package foo -+func foo() { -+} -+_LT_EOF - ]) -+ -+_lt_libdeps_save_CFLAGS=$CFLAGS -+case "$CC $CFLAGS " in #( -+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -+esac -+ - dnl Parse the compiler output and extract the necessary - dnl objects, libraries and library flags. - if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do -- case $p in -+ case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue -- else -- prev= - fi - -+ # Expand the sysroot to ease extracting the directories later. -+ if test -z "$prev"; then -+ case $p in -+ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -+ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -+ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; -+ esac -+ fi -+ case $p in -+ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; -+ esac - if test "$pre_test_object_deps_done" = no; then -- case $p in -- -L* | -R*) -+ case ${prev} in -+ -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi -@@ -6444,18 +7041,20 @@ if AC_TRY_EVAL(ac_compile); then - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi -+ prev= - ;; - -+ *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - -@@ -6481,16 +7080,17 @@ if AC_TRY_EVAL(ac_compile); then - - # Clean up. - rm -f a.out a.exe - else - echo "libtool.m4: error: problem compiling $1 test program" - fi - - $RM -f confest.$objext -+CFLAGS=$_lt_libdeps_save_CFLAGS - - # PORTME: override above test on systems where it is broken - m4_if([$1], [CXX], - [case $host_os in - interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= -@@ -6517,17 +7117,17 @@ linux*) - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - - solaris*) - case $cc_basename in -- CC*) -+ CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; -@@ -6561,60 +7161,45 @@ fi - _LT_TAGDECL([], [predeps], [1]) - _LT_TAGDECL([], [postdeps], [1]) - _LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) - ])# _LT_SYS_HIDDEN_LIBDEPS - - --# _LT_PROG_F77 --# ------------ --# Since AC_PROG_F77 is broken, in that it returns the empty string --# if there is no fortran compiler, we have our own version here. --m4_defun([_LT_PROG_F77], --[ --pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) --AC_PROG_F77 --if test -z "$F77" || test "X$F77" = "Xno"; then -- _lt_disable_F77=yes --fi --popdef([AC_MSG_ERROR]) --])# _LT_PROG_F77 -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([_LT_PROG_F77], []) -- -- - # _LT_LANG_F77_CONFIG([TAG]) - # -------------------------- - # Ensure that the configuration variables for a Fortran 77 compiler are - # suitably defined. These variables are subsequently used by _LT_CONFIG - # to write the compiler configuration to `libtool'. - m4_defun([_LT_LANG_F77_CONFIG], --[AC_REQUIRE([_LT_PROG_F77])dnl --AC_LANG_PUSH(Fortran 77) -+[AC_LANG_PUSH(Fortran 77) -+if test -z "$F77" || test "X$F77" = "Xno"; then -+ _lt_disable_F77=yes -+fi - - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= --_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -+_LT_TAGVAR(reload_flag, $1)=$reload_flag -+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - _LT_TAGVAR(no_undefined_flag, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - - # Source file extension for f77 test sources. - ac_ext=f - - # Object file extension for compiled f77 test sources. -@@ -6644,17 +7229,19 @@ if test "$_lt_disable_F77" != yes; then - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC -+ lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} -+ CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - -@@ -6698,66 +7285,53 @@ if test "$_lt_disable_F77" != yes; then - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" -+ CFLAGS="$lt_save_CFLAGS" - fi # test "$_lt_disable_F77" != yes - - AC_LANG_POP - ])# _LT_LANG_F77_CONFIG - - --# _LT_PROG_FC --# ----------- --# Since AC_PROG_FC is broken, in that it returns the empty string --# if there is no fortran compiler, we have our own version here. --m4_defun([_LT_PROG_FC], --[ --pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) --AC_PROG_FC --if test -z "$FC" || test "X$FC" = "Xno"; then -- _lt_disable_FC=yes --fi --popdef([AC_MSG_ERROR]) --])# _LT_PROG_FC -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([_LT_PROG_FC], []) -- -- - # _LT_LANG_FC_CONFIG([TAG]) - # ------------------------- - # Ensure that the configuration variables for a Fortran compiler are - # suitably defined. These variables are subsequently used by _LT_CONFIG - # to write the compiler configuration to `libtool'. - m4_defun([_LT_LANG_FC_CONFIG], --[AC_REQUIRE([_LT_PROG_FC])dnl --AC_LANG_PUSH(Fortran) -+[AC_LANG_PUSH(Fortran) -+ -+if test -z "$FC" || test "X$FC" = "Xno"; then -+ _lt_disable_FC=yes -+fi - - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= --_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -+_LT_TAGVAR(reload_flag, $1)=$reload_flag -+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - _LT_TAGVAR(no_undefined_flag, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - - # Source file extension for fc test sources. - ac_ext=${ac_fc_srcext-f} - - # Object file extension for compiled fc test sources. -@@ -6787,17 +7361,19 @@ if test "$_lt_disable_FC" != yes; then - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC -+ lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} -+ CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) -@@ -6843,17 +7419,18 @@ if test "$_lt_disable_FC" != yes; then - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC -- CC="$lt_save_CC" -+ CC=$lt_save_CC -+ CFLAGS=$lt_save_CFLAGS - fi # test "$_lt_disable_FC" != yes - - AC_LANG_POP - ])# _LT_LANG_FC_CONFIG - - - # _LT_LANG_GCJ_CONFIG([TAG]) - # -------------------------- -@@ -6880,29 +7457,33 @@ lt_simple_link_test_code='public class c - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. --lt_save_CC="$CC" -+lt_save_CC=$CC -+lt_save_CFLAGS=$CFLAGS - lt_save_GCC=$GCC - GCC=yes - CC=${GCJ-"gcj"} -+CFLAGS=$GCJFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_TAGVAR(LD, $1)="$LD" - _LT_CC_BASENAME([$compiler]) - - # GCJ did not exist at the time GCC didn't implicitly link libc in. - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - - _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -+_LT_TAGVAR(reload_flag, $1)=$reload_flag -+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) -@@ -6912,20 +7493,92 @@ if test -n "$compiler"; then - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi - - AC_LANG_RESTORE - - GCC=$lt_save_GCC --CC="$lt_save_CC" -+CC=$lt_save_CC -+CFLAGS=$lt_save_CFLAGS - ])# _LT_LANG_GCJ_CONFIG - - -+# _LT_LANG_GO_CONFIG([TAG]) -+# -------------------------- -+# Ensure that the configuration variables for the GNU Go compiler -+# are suitably defined. These variables are subsequently used by _LT_CONFIG -+# to write the compiler configuration to `libtool'. -+m4_defun([_LT_LANG_GO_CONFIG], -+[AC_REQUIRE([LT_PROG_GO])dnl -+AC_LANG_SAVE -+ -+# Source file extension for Go test sources. -+ac_ext=go -+ -+# Object file extension for compiled Go test sources. -+objext=o -+_LT_TAGVAR(objext, $1)=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code="package main; func main() { }" -+ -+# Code to be used in simple link tests -+lt_simple_link_test_code='package main; func main() { }' -+ -+# ltmain only uses $CC for tagged configurations so make sure $CC is set. -+_LT_TAG_COMPILER -+ -+# save warnings/boilerplate of simple test code -+_LT_COMPILER_BOILERPLATE -+_LT_LINKER_BOILERPLATE -+ -+# Allow CC to be a program name with arguments. -+lt_save_CC=$CC -+lt_save_CFLAGS=$CFLAGS -+lt_save_GCC=$GCC -+GCC=yes -+CC=${GOC-"gccgo"} -+CFLAGS=$GOFLAGS -+compiler=$CC -+_LT_TAGVAR(compiler, $1)=$CC -+_LT_TAGVAR(LD, $1)="$LD" -+_LT_CC_BASENAME([$compiler]) -+ -+# Go did not exist at the time GCC didn't implicitly link libc in. -+_LT_TAGVAR(archive_cmds_need_lc, $1)=no -+ -+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -+_LT_TAGVAR(reload_flag, $1)=$reload_flag -+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -+ -+## CAVEAT EMPTOR: -+## There is no encapsulation within the following macros, do not change -+## the running order or otherwise move them around unless you know exactly -+## what you are doing... -+if test -n "$compiler"; then -+ _LT_COMPILER_NO_RTTI($1) -+ _LT_COMPILER_PIC($1) -+ _LT_COMPILER_C_O($1) -+ _LT_COMPILER_FILE_LOCKS($1) -+ _LT_LINKER_SHLIBS($1) -+ _LT_LINKER_HARDCODE_LIBPATH($1) -+ -+ _LT_CONFIG($1) -+fi -+ -+AC_LANG_RESTORE -+ -+GCC=$lt_save_GCC -+CC=$lt_save_CC -+CFLAGS=$lt_save_CFLAGS -+])# _LT_LANG_GO_CONFIG -+ -+ - # _LT_LANG_RC_CONFIG([TAG]) - # ------------------------- - # Ensure that the configuration variables for the Windows resource compiler - # are suitably defined. These variables are subsequently used by _LT_CONFIG - # to write the compiler configuration to `libtool'. - m4_defun([_LT_LANG_RC_CONFIG], - [AC_REQUIRE([LT_PROG_RC])dnl - AC_LANG_SAVE -@@ -6947,32 +7600,35 @@ lt_simple_link_test_code="$lt_simple_com - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" -+lt_save_CFLAGS=$CFLAGS - lt_save_GCC=$GCC - GCC= - CC=${RC-"windres"} -+CFLAGS= - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - - if test -n "$compiler"; then - : - _LT_CONFIG($1) - fi - - GCC=$lt_save_GCC - AC_LANG_RESTORE --CC="$lt_save_CC" -+CC=$lt_save_CC -+CFLAGS=$lt_save_CFLAGS - ])# _LT_LANG_RC_CONFIG - - - # LT_PROG_GCJ - # ----------- - AC_DEFUN([LT_PROG_GCJ], - [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], -@@ -6982,16 +7638,23 @@ AC_DEFUN([LT_PROG_GCJ], - ]) - - # Old name: - AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) - dnl aclocal-1.4 backwards compatibility: - dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -+# LT_PROG_GO -+# ---------- -+AC_DEFUN([LT_PROG_GO], -+[AC_CHECK_TOOL(GOC, gccgo,) -+]) -+ -+ - # LT_PROG_RC - # ---------- - AC_DEFUN([LT_PROG_RC], - [AC_CHECK_TOOL(RC, windres,) - ]) - - # Old name: - AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -@@ -7021,16 +7684,25 @@ AC_SUBST([GREP]) - # available, choose the one first in the user's PATH. - m4_defun([_LT_DECL_OBJDUMP], - [AC_CHECK_TOOL(OBJDUMP, objdump, false) - test -z "$OBJDUMP" && OBJDUMP=objdump - _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) - AC_SUBST([OBJDUMP]) - ]) - -+# _LT_DECL_DLLTOOL -+# ---------------- -+# Ensure DLLTOOL variable is set. -+m4_defun([_LT_DECL_DLLTOOL], -+[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -+test -z "$DLLTOOL" && DLLTOOL=dlltool -+_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -+AC_SUBST([DLLTOOL]) -+]) - - # _LT_DECL_SED - # ------------ - # Check for a fully-functional sed program, that truncates - # as few characters as possible. Prefer GNU sed if found. - m4_defun([_LT_DECL_SED], - [AC_PROG_SED - test -z "$SED" && SED=sed -@@ -7114,18 +7786,18 @@ dnl AC_DEFUN([LT_AC_PROG_SED], []) - # ------------------------ - # Find out whether the shell is Bourne or XSI compatible, - # or has some other useful features. - m4_defun([_LT_CHECK_SHELL_FEATURES], - [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) - # Try some XSI features - xsi_shell=no - ( _lt_dummy="a/b/c" -- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ -- = c,a/b,, \ -+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ -+ = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes - AC_MSG_RESULT([$xsi_shell]) - _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - - AC_MSG_CHECKING([whether the shell understands "+="]) - lt_shell_append=no -@@ -7154,213 +7826,167 @@ case `echo X|tr X '\101'` in - lt_NL2SP='tr \r\n \100\100' - ;; - esac - _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl - _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl - ])# _LT_CHECK_SHELL_FEATURES - - --# _LT_PROG_XSI_SHELLFNS --# --------------------- --# Bourne and XSI compatible variants of some useful shell functions. --m4_defun([_LT_PROG_XSI_SHELLFNS], --[case $xsi_shell in -- yes) -- cat << \_LT_EOF >> "$cfgfile" -- --# func_dirname file append nondir_replacement --# Compute the dirname of FILE. If nonempty, add APPEND to the result, --# otherwise set result to NONDIR_REPLACEMENT. --func_dirname () --{ -- case ${1} in -- */*) func_dirname_result="${1%/*}${2}" ;; -- * ) func_dirname_result="${3}" ;; -- esac --} -- --# func_basename file --func_basename () --{ -- func_basename_result="${1##*/}" --} -- --# func_dirname_and_basename file append nondir_replacement --# perform func_basename and func_dirname in a single function --# call: --# dirname: Compute the dirname of FILE. If nonempty, --# add APPEND to the result, otherwise set result --# to NONDIR_REPLACEMENT. --# value returned in "$func_dirname_result" --# basename: Compute filename of FILE. --# value retuned in "$func_basename_result" --# Implementation must be kept synchronized with func_dirname --# and func_basename. For efficiency, we do not delegate to --# those functions but instead duplicate the functionality here. --func_dirname_and_basename () --{ -- case ${1} in -- */*) func_dirname_result="${1%/*}${2}" ;; -- * ) func_dirname_result="${3}" ;; -- esac -- func_basename_result="${1##*/}" --} -- --# func_stripname prefix suffix name --# strip PREFIX and SUFFIX off of NAME. --# PREFIX and SUFFIX must not contain globbing or regex special --# characters, hashes, percent signs, but SUFFIX may contain a leading --# dot (in which case that matches only a dot). --func_stripname () --{ -- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are -- # positional parameters, so assign one to ordinary parameter first. -- func_stripname_result=${3} -- func_stripname_result=${func_stripname_result#"${1}"} -- func_stripname_result=${func_stripname_result%"${2}"} --} -- --# func_opt_split --func_opt_split () --{ -- func_opt_split_opt=${1%%=*} -- func_opt_split_arg=${1#*=} --} -- --# func_lo2o object --func_lo2o () --{ -- case ${1} in -- *.lo) func_lo2o_result=${1%.lo}.${objext} ;; -- *) func_lo2o_result=${1} ;; -- esac --} -- --# func_xform libobj-or-source --func_xform () --{ -- func_xform_result=${1%.*}.lo --} -- --# func_arith arithmetic-term... --func_arith () --{ -- func_arith_result=$(( $[*] )) --} -- --# func_len string --# STRING may not start with a hyphen. --func_len () --{ -- func_len_result=${#1} --} -- --_LT_EOF -+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -+# ------------------------------------------------------ -+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -+m4_defun([_LT_PROG_FUNCTION_REPLACE], -+[dnl { -+sed -e '/^$1 ()$/,/^} # $1 /c\ -+$1 ()\ -+{\ -+m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+]) -+ -+ -+# _LT_PROG_REPLACE_SHELLFNS -+# ------------------------- -+# Replace existing portable implementations of several shell functions with -+# equivalent extended shell implementations where those features are available.. -+m4_defun([_LT_PROG_REPLACE_SHELLFNS], -+[if test x"$xsi_shell" = xyes; then -+ _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl -+ case ${1} in -+ */*) func_dirname_result="${1%/*}${2}" ;; -+ * ) func_dirname_result="${3}" ;; -+ esac]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl -+ func_basename_result="${1##*/}"]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl -+ case ${1} in -+ */*) func_dirname_result="${1%/*}${2}" ;; -+ * ) func_dirname_result="${3}" ;; -+ esac -+ func_basename_result="${1##*/}"]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl -+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are -+ # positional parameters, so assign one to ordinary parameter first. -+ func_stripname_result=${3} -+ func_stripname_result=${func_stripname_result#"${1}"} -+ func_stripname_result=${func_stripname_result%"${2}"}]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl -+ func_split_long_opt_name=${1%%=*} -+ func_split_long_opt_arg=${1#*=}]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl -+ func_split_short_opt_arg=${1#??} -+ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl -+ case ${1} in -+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; -+ *) func_lo2o_result=${1} ;; -+ esac]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -+fi -+ -+if test x"$lt_shell_append" = xyes; then -+ _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl -+ func_quote_for_eval "${2}" -+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ -+ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) -+ -+ # Save a `func_append' function call where possible by direct use of '+=' -+ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+ test 0 -eq $? || _lt_function_replace_fail=: -+else -+ # Save a `func_append' function call even when '+=' is not available -+ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+ test 0 -eq $? || _lt_function_replace_fail=: -+fi -+ -+if test x"$_lt_function_replace_fail" = x":"; then -+ AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -+fi -+]) -+ -+# _LT_PATH_CONVERSION_FUNCTIONS -+# ----------------------------- -+# Determine which file name conversion functions should be used by -+# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -+# for certain cross-compile configurations and native mingw. -+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -+[AC_REQUIRE([AC_CANONICAL_HOST])dnl -+AC_REQUIRE([AC_CANONICAL_BUILD])dnl -+AC_MSG_CHECKING([how to convert $build file names to $host format]) -+AC_CACHE_VAL(lt_cv_to_host_file_cmd, -+[case $host in -+ *-*-mingw* ) -+ case $build in -+ *-*-mingw* ) # actually msys -+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 -+ ;; -+ *-*-cygwin* ) -+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 -+ ;; -+ * ) # otherwise, assume *nix -+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 -+ ;; -+ esac - ;; -- *) # Bourne compatible functions. -- cat << \_LT_EOF >> "$cfgfile" -- --# func_dirname file append nondir_replacement --# Compute the dirname of FILE. If nonempty, add APPEND to the result, --# otherwise set result to NONDIR_REPLACEMENT. --func_dirname () --{ -- # Extract subdirectory from the argument. -- func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` -- if test "X$func_dirname_result" = "X${1}"; then -- func_dirname_result="${3}" -- else -- func_dirname_result="$func_dirname_result${2}" -- fi --} -- --# func_basename file --func_basename () --{ -- func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` --} -- --dnl func_dirname_and_basename --dnl A portable version of this function is already defined in general.m4sh --dnl so there is no need for it here. -- --# func_stripname prefix suffix name --# strip PREFIX and SUFFIX off of NAME. --# PREFIX and SUFFIX must not contain globbing or regex special --# characters, hashes, percent signs, but SUFFIX may contain a leading --# dot (in which case that matches only a dot). --# func_strip_suffix prefix name --func_stripname () --{ -- case ${2} in -- .*) func_stripname_result=`$ECHO "X${3}" \ -- | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; -- *) func_stripname_result=`$ECHO "X${3}" \ -- | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; -- esac --} -- --# sed scripts: --my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' --my_sed_long_arg='1s/^-[[^=]]*=//' -- --# func_opt_split --func_opt_split () --{ -- func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` -- func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` --} -- --# func_lo2o object --func_lo2o () --{ -- func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` --} -- --# func_xform libobj-or-source --func_xform () --{ -- func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` --} -- --# func_arith arithmetic-term... --func_arith () --{ -- func_arith_result=`expr "$[@]"` --} -- --# func_len string --# STRING may not start with a hyphen. --func_len () --{ -- func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` --} -- --_LT_EOF -+ *-*-cygwin* ) -+ case $build in -+ *-*-mingw* ) # actually msys -+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin -+ ;; -+ *-*-cygwin* ) -+ lt_cv_to_host_file_cmd=func_convert_file_noop -+ ;; -+ * ) # otherwise, assume *nix -+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin -+ ;; -+ esac -+ ;; -+ * ) # unhandled hosts (and "normal" native builds) -+ lt_cv_to_host_file_cmd=func_convert_file_noop -+ ;; - esac -- --case $lt_shell_append in -- yes) -- cat << \_LT_EOF >> "$cfgfile" -- --# func_append var value --# Append VALUE to the end of shell variable VAR. --func_append () --{ -- eval "$[1]+=\$[2]" --} --_LT_EOF -+]) -+to_host_file_cmd=$lt_cv_to_host_file_cmd -+AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], -+ [0], [convert $build file names to $host format])dnl -+ -+AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -+AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -+[#assume ordinary cross tools, or native build. -+lt_cv_to_tool_file_cmd=func_convert_file_noop -+case $host in -+ *-*-mingw* ) -+ case $build in -+ *-*-mingw* ) # actually msys -+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 -+ ;; -+ esac - ;; -- *) -- cat << \_LT_EOF >> "$cfgfile" -- --# func_append var value --# Append VALUE to the end of shell variable VAR. --func_append () --{ -- eval "$[1]=\$$[1]\$[2]" --} -- --_LT_EOF -- ;; -- esac -+esac - ]) -+to_tool_file_cmd=$lt_cv_to_tool_file_cmd -+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], -+ [0], [convert $build files to toolchain format])dnl -+])# _LT_PATH_CONVERSION_FUNCTIONS -diff --git a/js/src/ctypes/libffi/m4/ltoptions.m4 b/js/src/ctypes/libffi/m4/ltoptions.m4 ---- a/js/src/ctypes/libffi/m4/ltoptions.m4 -+++ b/js/src/ctypes/libffi/m4/ltoptions.m4 -@@ -1,18 +1,19 @@ - # Helper functions for option handling. -*- Autoconf -*- - # --# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -+# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -+# Inc. - # Written by Gary V. Vaughan, 2004 - # - # This file is free software; the Free Software Foundation gives - # unlimited permission to copy and/or distribute it, with or without - # modifications, as long as this notice is preserved. - --# serial 6 ltoptions.m4 -+# serial 7 ltoptions.m4 - - # This is to help aclocal find these macros, as it can't see m4_define. - AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - - # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) - # ------------------------------------------ - m4_define([_LT_MANGLE_OPTION], -@@ -120,31 +121,31 @@ dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - # win32-dll - # --------- - # Declare package support for building win32 dll's. - LT_OPTION_DEFINE([LT_INIT], [win32-dll], - [enable_win32_dll=yes - - case $host in --*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) -+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; - esac - - test -z "$AS" && AS=as --_LT_DECL([], [AS], [0], [Assembler program])dnl -+_LT_DECL([], [AS], [1], [Assembler program])dnl - - test -z "$DLLTOOL" && DLLTOOL=dlltool --_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl -+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - - test -z "$OBJDUMP" && OBJDUMP=objdump --_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl -+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl - ])# win32-dll - - AU_DEFUN([AC_LIBTOOL_WIN32_DLL], - [AC_REQUIRE([AC_CANONICAL_HOST])dnl - _LT_SET_OPTION([LT_INIT], [win32-dll]) - AC_DIAGNOSE([obsolete], - [$0: Remove this warning and the call to _LT_SET_OPTION when you - put the `win32-dll' option into LT_INIT's first parameter.]) -@@ -320,19 +321,34 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], - - # _LT_WITH_PIC([MODE]) - # -------------------- - # implement the --with-pic flag, and support the `pic-only' and `no-pic' - # LT_INIT options. - # MODE is either `yes' or `no'. If omitted, it defaults to `both'. - m4_define([_LT_WITH_PIC], - [AC_ARG_WITH([pic], -- [AS_HELP_STRING([--with-pic], -+ [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], -- [pic_mode="$withval"], -+ [lt_p=${PACKAGE-default} -+ case $withval in -+ yes|no) pic_mode=$withval ;; -+ *) -+ pic_mode=default -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for lt_pkg in $withval; do -+ IFS="$lt_save_ifs" -+ if test "X$lt_pkg" = "X$lt_p"; then -+ pic_mode=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac], - [pic_mode=default]) - - test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - - _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl - ])# _LT_WITH_PIC - - LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -diff --git a/js/src/ctypes/libffi/m4/ltversion.m4 b/js/src/ctypes/libffi/m4/ltversion.m4 ---- a/js/src/ctypes/libffi/m4/ltversion.m4 -+++ b/js/src/ctypes/libffi/m4/ltversion.m4 -@@ -2,22 +2,22 @@ - # - # Copyright (C) 2004 Free Software Foundation, Inc. - # Written by Scott James Remnant, 2004 - # - # This file is free software; the Free Software Foundation gives - # unlimited permission to copy and/or distribute it, with or without - # modifications, as long as this notice is preserved. - --# Generated from ltversion.in. -+# @configure_input@ - --# serial 3017 ltversion.m4 -+# serial 3337 ltversion.m4 - # This file is part of GNU Libtool - --m4_define([LT_PACKAGE_VERSION], [2.2.6b]) --m4_define([LT_PACKAGE_REVISION], [1.3017]) -+m4_define([LT_PACKAGE_VERSION], [2.4.2]) -+m4_define([LT_PACKAGE_REVISION], [1.3337]) - - AC_DEFUN([LTVERSION_VERSION], --[macro_version='2.2.6b' --macro_revision='1.3017' -+[macro_version='2.4.2' -+macro_revision='1.3337' - _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) - _LT_DECL(, macro_revision, 0) - ]) -diff --git a/js/src/ctypes/libffi/m4/lt~obsolete.m4 b/js/src/ctypes/libffi/m4/lt~obsolete.m4 ---- a/js/src/ctypes/libffi/m4/lt~obsolete.m4 -+++ b/js/src/ctypes/libffi/m4/lt~obsolete.m4 -@@ -1,18 +1,18 @@ - # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- - # --# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. -+# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. - # Written by Scott James Remnant, 2004. - # - # This file is free software; the Free Software Foundation gives - # unlimited permission to copy and/or distribute it, with or without - # modifications, as long as this notice is preserved. - --# serial 4 lt~obsolete.m4 -+# serial 5 lt~obsolete.m4 - - # These exist entirely to fool aclocal when bootstrapping libtool. - # - # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) - # which have later been changed to m4_define as they aren't part of the - # exported API, or moved to Autoconf or Automake where they belong. - # - # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -@@ -72,21 +72,27 @@ m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN - m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) - m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) - m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) - m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) - m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) - m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) - m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) - m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) --m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) - m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) - m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) - m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) - m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) - m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) - m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) - m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) - m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) - m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) - m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) - m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) - m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -+m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -+m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -+m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -+m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -+m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) -diff --git a/js/src/ctypes/libffi/man/Makefile.am b/js/src/ctypes/libffi/man/Makefile.am ---- a/js/src/ctypes/libffi/man/Makefile.am -+++ b/js/src/ctypes/libffi/man/Makefile.am -@@ -1,8 +1,8 @@ - ## Process this with automake to create Makefile.in - - AUTOMAKE_OPTIONS=foreign - --EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 -+EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3 - --man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 -+man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3 - -diff --git a/js/src/ctypes/libffi/man/Makefile.in b/js/src/ctypes/libffi/man/Makefile.in ---- a/js/src/ctypes/libffi/man/Makefile.in -+++ b/js/src/ctypes/libffi/man/Makefile.in -@@ -1,25 +1,69 @@ --# Makefile.in generated by automake 1.11.1 from Makefile.am. -+# Makefile.in generated by automake 1.13.4 from Makefile.am. - # @configure_input@ - --# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, --# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, --# Inc. -+# Copyright (C) 1994-2013 Free Software Foundation, Inc. -+ - # This Makefile.in is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - - # This program is distributed in the hope that it will be useful, - # but WITHOUT ANY WARRANTY, to the extent permitted by law; without - # even the implied warranty of MERCHANTABILITY or FITNESS FOR A - # PARTICULAR PURPOSE. - - @SET_MAKE@ - VPATH = @srcdir@ -+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -+am__make_running_with_option = \ -+ case $${target_option-} in \ -+ ?) ;; \ -+ *) echo "am__make_running_with_option: internal error: invalid" \ -+ "target option '$${target_option-}' specified" >&2; \ -+ exit 1;; \ -+ esac; \ -+ has_opt=no; \ -+ sane_makeflags=$$MAKEFLAGS; \ -+ if $(am__is_gnu_make); then \ -+ sane_makeflags=$$MFLAGS; \ -+ else \ -+ case $$MAKEFLAGS in \ -+ *\\[\ \ ]*) \ -+ bs=\\; \ -+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ -+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ -+ esac; \ -+ fi; \ -+ skip_next=no; \ -+ strip_trailopt () \ -+ { \ -+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ -+ }; \ -+ for flg in $$sane_makeflags; do \ -+ test $$skip_next = yes && { skip_next=no; continue; }; \ -+ case $$flg in \ -+ *=*|--*) continue;; \ -+ -*I) strip_trailopt 'I'; skip_next=yes;; \ -+ -*I?*) strip_trailopt 'I';; \ -+ -*O) strip_trailopt 'O'; skip_next=yes;; \ -+ -*O?*) strip_trailopt 'O';; \ -+ -*l) strip_trailopt 'l'; skip_next=yes;; \ -+ -*l?*) strip_trailopt 'l';; \ -+ -[dEDm]) skip_next=yes;; \ -+ -[JT]) skip_next=yes;; \ -+ esac; \ -+ case $$flg in \ -+ *$$target_option*) has_opt=yes; break;; \ -+ esac; \ -+ done; \ -+ test $$has_opt = yes -+am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -+am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) - pkgdatadir = $(datadir)/@PACKAGE@ - pkgincludedir = $(includedir)/@PACKAGE@ - pkglibdir = $(libdir)/@PACKAGE@ - pkglibexecdir = $(libexecdir)/@PACKAGE@ - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd - install_sh_DATA = $(install_sh) -c -m 644 - install_sh_PROGRAM = $(install_sh) -c - install_sh_SCRIPT = $(install_sh) -c -@@ -30,28 +74,57 @@ PRE_INSTALL = : - POST_INSTALL = : - NORMAL_UNINSTALL = : - PRE_UNINSTALL = : - POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ - target_triplet = @target@ - subdir = man --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 --am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ -+am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ -+ $(top_srcdir)/m4/ax_append_flag.m4 \ -+ $(top_srcdir)/m4/ax_cc_maxopt.m4 \ -+ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ -+ $(top_srcdir)/m4/ax_check_compile_flag.m4 \ -+ $(top_srcdir)/m4/ax_compiler_vendor.m4 \ -+ $(top_srcdir)/m4/ax_configure_args.m4 \ -+ $(top_srcdir)/m4/ax_enable_builddir.m4 \ -+ $(top_srcdir)/m4/ax_gcc_archflag.m4 \ -+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ -+ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ -+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ -+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac - am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) - mkinstalldirs = $(install_sh) -d - CONFIG_HEADER = $(top_builddir)/fficonfig.h - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = -+AM_V_P = $(am__v_P_@AM_V@) -+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -+am__v_P_0 = false -+am__v_P_1 = : -+AM_V_GEN = $(am__v_GEN_@AM_V@) -+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -+am__v_GEN_0 = @echo " GEN " $@; -+am__v_GEN_1 = -+AM_V_at = $(am__v_at_@AM_V@) -+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -+am__v_at_0 = @ -+am__v_at_1 = - SOURCES = - DIST_SOURCES = -+am__can_run_installinfo = \ -+ case $$AM_UPDATE_INFO_DIR in \ -+ n|no|NO) false;; \ -+ *) (install-info --version) >/dev/null 2>&1;; \ -+ esac - am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; - am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; - am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; - am__install_max = 40 - am__nobase_strip_setup = \ -@@ -63,24 +136,32 @@ am__nobase_list = $(am__nobase_strip_set - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' - am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -+am__uninstall_files_from_dir = { \ -+ test -z "$$files" \ -+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ -+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ -+ $(am__cd) "$$dir" && rm -f $$files; }; \ -+ } - man3dir = $(mandir)/man3 - am__installdirs = "$(DESTDIR)$(man3dir)" - NROFF = nroff - MANS = $(man_MANS) -+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - ALLOCA = @ALLOCA@ - AMTAR = @AMTAR@ -+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ - AM_LTLDFLAGS = @AM_LTLDFLAGS@ - AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@ - AR = @AR@ - AUTOCONF = @AUTOCONF@ - AUTOHEADER = @AUTOHEADER@ - AUTOMAKE = @AUTOMAKE@ - AWK = @AWK@ - CC = @CC@ -@@ -89,75 +170,82 @@ CCASDEPMODE = @CCASDEPMODE@ - CCASFLAGS = @CCASFLAGS@ - CCDEPMODE = @CCDEPMODE@ - CFLAGS = @CFLAGS@ - CPP = @CPP@ - CPPFLAGS = @CPPFLAGS@ - CYGPATH_W = @CYGPATH_W@ - DEFS = @DEFS@ - DEPDIR = @DEPDIR@ -+DLLTOOL = @DLLTOOL@ - DSYMUTIL = @DSYMUTIL@ - DUMPBIN = @DUMPBIN@ - ECHO_C = @ECHO_C@ - ECHO_N = @ECHO_N@ - ECHO_T = @ECHO_T@ - EGREP = @EGREP@ - EXEEXT = @EXEEXT@ -+FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ - FGREP = @FGREP@ - GREP = @GREP@ - HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ -+HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ - INSTALL = @INSTALL@ - INSTALL_DATA = @INSTALL_DATA@ - INSTALL_PROGRAM = @INSTALL_PROGRAM@ - INSTALL_SCRIPT = @INSTALL_SCRIPT@ - INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ - LD = @LD@ - LDFLAGS = @LDFLAGS@ - LIBOBJS = @LIBOBJS@ - LIBS = @LIBS@ - LIBTOOL = @LIBTOOL@ - LIPO = @LIPO@ - LN_S = @LN_S@ - LTLIBOBJS = @LTLIBOBJS@ - MAINT = @MAINT@ - MAKEINFO = @MAKEINFO@ -+MANIFEST_TOOL = @MANIFEST_TOOL@ - MKDIR_P = @MKDIR_P@ - NM = @NM@ - NMEDIT = @NMEDIT@ - OBJDUMP = @OBJDUMP@ - OBJEXT = @OBJEXT@ - OTOOL = @OTOOL@ - OTOOL64 = @OTOOL64@ - PACKAGE = @PACKAGE@ - PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ - PACKAGE_NAME = @PACKAGE_NAME@ - PACKAGE_STRING = @PACKAGE_STRING@ - PACKAGE_TARNAME = @PACKAGE_TARNAME@ - PACKAGE_URL = @PACKAGE_URL@ - PACKAGE_VERSION = @PACKAGE_VERSION@ - PATH_SEPARATOR = @PATH_SEPARATOR@ -+PRTDIAG = @PRTDIAG@ - RANLIB = @RANLIB@ - SED = @SED@ - SET_MAKE = @SET_MAKE@ - SHELL = @SHELL@ - STRIP = @STRIP@ - TARGET = @TARGET@ - TARGETDIR = @TARGETDIR@ - VERSION = @VERSION@ - abs_builddir = @abs_builddir@ - abs_srcdir = @abs_srcdir@ - abs_top_builddir = @abs_top_builddir@ - abs_top_srcdir = @abs_top_srcdir@ -+ac_ct_AR = @ac_ct_AR@ - ac_ct_CC = @ac_ct_CC@ - ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ - am__include = @am__include@ - am__leading_dot = @am__leading_dot@ - am__quote = @am__quote@ - am__tar = @am__tar@ - am__untar = @am__untar@ -+ax_enable_builddir_sed = @ax_enable_builddir_sed@ - bindir = @bindir@ - build = @build@ - build_alias = @build_alias@ - build_cpu = @build_cpu@ - build_os = @build_os@ - build_vendor = @build_vendor@ - builddir = @builddir@ - datadir = @datadir@ -@@ -173,41 +261,41 @@ host_vendor = @host_vendor@ - htmldir = @htmldir@ - includedir = @includedir@ - infodir = @infodir@ - install_sh = @install_sh@ - libdir = @libdir@ - libexecdir = @libexecdir@ - localedir = @localedir@ - localstatedir = @localstatedir@ --lt_ECHO = @lt_ECHO@ - mandir = @mandir@ - mkdir_p = @mkdir_p@ - oldincludedir = @oldincludedir@ - pdfdir = @pdfdir@ - prefix = @prefix@ - program_transform_name = @program_transform_name@ - psdir = @psdir@ - sbindir = @sbindir@ - sharedstatedir = @sharedstatedir@ - srcdir = @srcdir@ -+sys_symbol_underscore = @sys_symbol_underscore@ - sysconfdir = @sysconfdir@ - target = @target@ - target_alias = @target_alias@ - target_cpu = @target_cpu@ - target_os = @target_os@ - target_vendor = @target_vendor@ - toolexecdir = @toolexecdir@ - toolexeclibdir = @toolexeclibdir@ - top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ - AUTOMAKE_OPTIONS = foreign --EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 --man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 -+EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3 -+man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3 - all: all-am - - .SUFFIXES: - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ -@@ -239,21 +327,28 @@ Makefile: $(srcdir)/Makefile.in $(top_bu - - mostlyclean-libtool: - -rm -f *.lo - - clean-libtool: - -rm -rf .libs _libs - install-man3: $(man_MANS) - @$(NORMAL_INSTALL) -- test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)" -- @list=''; test -n "$(man3dir)" || exit 0; \ -- { for i in $$list; do echo "$$i"; done; \ -- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ -- sed -n '/\.3[a-z]*$$/p'; \ -+ @list1=''; \ -+ list2='$(man_MANS)'; \ -+ test -n "$(man3dir)" \ -+ && test -n "`echo $$list1$$list2`" \ -+ || exit 0; \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ -+ { for i in $$list1; do echo "$$i"; done; \ -+ if test -n "$$list2"; then \ -+ for i in $$list2; do echo "$$i"; done \ -+ | sed -n '/\.3[a-z]*$$/p'; \ -+ fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ -@@ -272,40 +367,25 @@ install-man3: $(man_MANS) - uninstall-man3: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man3dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.3[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ -- test -z "$$files" || { \ -- echo " ( cd '$(DESTDIR)$(man3dir)' && rm -f" $$files ")"; \ -- cd "$(DESTDIR)$(man3dir)" && rm -f $$files; } --tags: TAGS --TAGS: -+ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) -+tags TAGS: - --ctags: CTAGS --CTAGS: -+ctags CTAGS: -+ -+cscope cscopelist: - - - distdir: $(DISTFILES) -- @list='$(MANS)'; if test -n "$$list"; then \ -- list=`for p in $$list; do \ -- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ -- if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ -- if test -n "$$list" && \ -- grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ -- echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ -- grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ -- echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ -- echo " typically \`make maintainer-clean' will remove them" >&2; \ -- exit 1; \ -- else :; fi; \ -- else :; fi - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ -@@ -342,20 +422,25 @@ install-exec: install-exec-am - install-data: install-data-am - uninstall: uninstall-am - - install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - - installcheck: installcheck-am - install-strip: -- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -- `test -z '$(STRIP)' || \ -- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+ if test -z '$(STRIP)'; then \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ install; \ -+ else \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ -+ fi - mostlyclean-generic: - - clean-generic: - - distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -@@ -428,23 +513,24 @@ ps-am: - - uninstall-am: uninstall-man - - uninstall-man: uninstall-man3 - - .MAKE: install-am install-strip - - .PHONY: all all-am check check-am clean clean-generic clean-libtool \ -- distclean distclean-generic distclean-libtool distdir dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-dvi install-dvi-am \ -- install-exec install-exec-am install-html install-html-am \ -- install-info install-info-am install-man install-man3 \ -- install-pdf install-pdf-am install-ps install-ps-am \ -- install-strip installcheck installcheck-am installdirs \ -- maintainer-clean maintainer-clean-generic mostlyclean \ -- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ -- uninstall uninstall-am uninstall-man uninstall-man3 -+ cscopelist-am ctags-am distclean distclean-generic \ -+ distclean-libtool distdir dvi dvi-am html html-am info info-am \ -+ install install-am install-data install-data-am install-dvi \ -+ install-dvi-am install-exec install-exec-am install-html \ -+ install-html-am install-info install-info-am install-man \ -+ install-man3 install-pdf install-pdf-am install-ps \ -+ install-ps-am install-strip installcheck installcheck-am \ -+ installdirs maintainer-clean maintainer-clean-generic \ -+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ -+ ps ps-am tags-am uninstall uninstall-am uninstall-man \ -+ uninstall-man3 - - - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. - .NOEXPORT: -diff --git a/js/src/ctypes/libffi/man/ffi.3 b/js/src/ctypes/libffi/man/ffi.3 ---- a/js/src/ctypes/libffi/man/ffi.3 -+++ b/js/src/ctypes/libffi/man/ffi.3 -@@ -11,21 +11,31 @@ libffi, -lffi - .Fo ffi_prep_cif - .Fa "ffi_cif *cif" - .Fa "ffi_abi abi" - .Fa "unsigned int nargs" - .Fa "ffi_type *rtype" - .Fa "ffi_type **atypes" - .Fc - .Ft void -+.Fo ffi_prep_cif_var -+.Fa "ffi_cif *cif" -+.Fa "ffi_abi abi" -+.Fa "unsigned int nfixedargs" -+.Fa "unsigned int ntotalargs" -+.Fa "ffi_type *rtype" -+.Fa "ffi_type **atypes" -+.Fc -+.Ft void - .Fo ffi_call - .Fa "ffi_cif *cif" - .Fa "void (*fn)(void)" - .Fa "void *rvalue" - .Fa "void **avalue" - .Fc - .Sh DESCRIPTION - The foreign function interface provides a mechanism by which a function can - generate a call to another function at runtime without requiring knowledge of - the called function's interface at compile time. - .Sh SEE ALSO - .Xr ffi_prep_cif 3 , -+.Xr ffi_prep_cif_var 3 , - .Xr ffi_call 3 -diff --git a/js/src/ctypes/libffi/man/ffi_prep_cif.3 b/js/src/ctypes/libffi/man/ffi_prep_cif.3 ---- a/js/src/ctypes/libffi/man/ffi_prep_cif.3 -+++ b/js/src/ctypes/libffi/man/ffi_prep_cif.3 -@@ -32,17 +32,19 @@ is an array of - .Fa nargs - pointers to - .Nm ffi_type - structs that describe the data type, size and alignment of each argument. - .Fa rtype - points to an - .Nm ffi_type - that describes the data type, size and alignment of the --return value. -+return value. Note that to call a variadic function -+.Nm ffi_prep_cif_var -+must be used instead. - .Sh RETURN VALUES - Upon successful completion, - .Nm ffi_prep_cif - returns - .Nm FFI_OK . - It will return - .Nm FFI_BAD_TYPEDEF - if -@@ -54,13 +56,13 @@ or - or - .Fa rtype - is malformed. If - .Fa abi - does not refer to a valid ABI, - .Nm FFI_BAD_ABI - will be returned. Available ABIs are - defined in --.Nm --. -+.Nm . - .Sh SEE ALSO - .Xr ffi 3 , --.Xr ffi_call 3 -+.Xr ffi_call 3 , -+.Xr ffi_prep_cif_var 3 -diff --git a/js/src/ctypes/libffi/man/ffi_prep_cif_var.3 b/js/src/ctypes/libffi/man/ffi_prep_cif_var.3 -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/man/ffi_prep_cif_var.3 -@@ -0,0 +1,73 @@ -+.Dd January 25, 2011 -+.Dt ffi_prep_cif_var 3 -+.Sh NAME -+.Nm ffi_prep_cif_var -+.Nd Prepare a -+.Nm ffi_cif -+structure for use with -+.Nm ffi_call -+for variadic functions. -+.Sh SYNOPSIS -+.In ffi.h -+.Ft ffi_status -+.Fo ffi_prep_cif_var -+.Fa "ffi_cif *cif" -+.Fa "ffi_abi abi" -+.Fa "unsigned int nfixedargs" -+.Fa "unsigned int ntotalargs" -+.Fa "ffi_type *rtype" -+.Fa "ffi_type **atypes" -+.Fc -+.Sh DESCRIPTION -+The -+.Nm ffi_prep_cif_var -+function prepares a -+.Nm ffi_cif -+structure for use with -+.Nm ffi_call -+for variadic functions. -+.Fa abi -+specifies a set of calling conventions to use. -+.Fa atypes -+is an array of -+.Fa ntotalargs -+pointers to -+.Nm ffi_type -+structs that describe the data type, size and alignment of each argument. -+.Fa rtype -+points to an -+.Nm ffi_type -+that describes the data type, size and alignment of the -+return value. -+.Fa nfixedargs -+must contain the number of fixed (non-variadic) arguments. -+Note that to call a non-variadic function -+.Nm ffi_prep_cif -+must be used. -+.Sh RETURN VALUES -+Upon successful completion, -+.Nm ffi_prep_cif_var -+returns -+.Nm FFI_OK . -+It will return -+.Nm FFI_BAD_TYPEDEF -+if -+.Fa cif -+is -+.Nm NULL -+or -+.Fa atypes -+or -+.Fa rtype -+is malformed. If -+.Fa abi -+does not refer to a valid ABI, -+.Nm FFI_BAD_ABI -+will be returned. Available ABIs are -+defined in -+.Nm -+. -+.Sh SEE ALSO -+.Xr ffi 3 , -+.Xr ffi_call 3 , -+.Xr ffi_prep_cif 3 -diff --git a/js/src/ctypes/libffi/mdate-sh b/js/src/ctypes/libffi/mdate-sh ---- a/js/src/ctypes/libffi/mdate-sh -+++ b/js/src/ctypes/libffi/mdate-sh -@@ -1,106 +1,126 @@ - #!/bin/sh - # Get modification time of a file or directory and pretty-print it. - --scriptversion=2005-06-29.22 -+scriptversion=2010-08-21.06; # UTC - --# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005 Free Software --# Foundation, Inc. -+# Copyright (C) 1995-2013 Free Software Foundation, Inc. - # written by Ulrich Drepper , June 1995 - # - # This program is free software; you can redistribute it and/or modify - # it under the terms of the GNU General Public License as published by - # the Free Software Foundation; either version 2, or (at your option) - # any later version. - # - # This program is distributed in the hope that it will be useful, - # but WITHOUT ANY WARRANTY; without even the implied warranty of - # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - # GNU General Public License for more details. - # - # You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software Foundation, --# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+# along with this program. If not, see . - - # As a special exception to the GNU General Public License, if you - # distribute this file as part of a program that contains a - # configuration script generated by Autoconf, you may include it under - # the same distribution terms that you use for the rest of that program. - - # This file is maintained in Automake, please report - # bugs to or send patches to - # . - -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+fi -+ - case $1 in - '') -- echo "$0: No file. Try \`$0 --help' for more information." 1>&2 -+ echo "$0: No file. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF - Usage: mdate-sh [--help] [--version] FILE - --Pretty-print the modification time of FILE. -+Pretty-print the modification day of FILE, in the format: -+1 January 1970 - - Report bugs to . - EOF - exit $? - ;; - -v | --v*) - echo "mdate-sh $scriptversion" - exit $? - ;; - esac - -+error () -+{ -+ echo "$0: $1" >&2 -+ exit 1 -+} -+ -+ - # Prevent date giving response in another language. - LANG=C - export LANG - LC_ALL=C - export LC_ALL - LC_TIME=C - export LC_TIME - - # GNU ls changes its time format in response to the TIME_STYLE --# variable. Since we cannot assume `unset' works, revert this -+# variable. Since we cannot assume 'unset' works, revert this - # variable to its documented default. - if test "${TIME_STYLE+set}" = set; then - TIME_STYLE=posix-long-iso - export TIME_STYLE - fi - - save_arg1=$1 - - # Find out how to get the extended ls output of a file or directory. - if ls -L /dev/null 1>/dev/null 2>&1; then - ls_command='ls -L -l -d' - else - ls_command='ls -l -d' - fi -+# Avoid user/group names that might have spaces, when possible. -+if ls -n /dev/null 1>/dev/null 2>&1; then -+ ls_command="$ls_command -n" -+fi - --# A `ls -l' line looks as follows on OS/2. -+# A 'ls -l' line looks as follows on OS/2. - # drwxrwx--- 0 Aug 11 2001 foo - # This differs from Unix, which adds ownership information. - # drwxrwx--- 2 root root 4096 Aug 11 2001 foo - # - # To find the date, we split the line on spaces and iterate on words - # until we find a month. This cannot work with files whose owner is a --# user named `Jan', or `Feb', etc. However, it's unlikely that `/' -+# user named "Jan", or "Feb", etc. However, it's unlikely that '/' - # will be owned by a user whose name is a month. So we first look at - # the extended ls output of the root directory to decide how many - # words should be skipped to get the date. - - # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. --set x`ls -l -d /` -+set x`$ls_command /` - - # Find which argument is the month. - month= - command= - until test $month - do -+ test $# -gt 0 || error "failed parsing '$ls_command /' output" - shift - # Add another shift to the command. - command="$command shift;" - case $1 in - Jan) month=January; nummonth=1;; - Feb) month=February; nummonth=2;; - Mar) month=March; nummonth=3;; - Apr) month=April; nummonth=4;; -@@ -110,18 +130,20 @@ do - Aug) month=August; nummonth=8;; - Sep) month=September; nummonth=9;; - Oct) month=October; nummonth=10;; - Nov) month=November; nummonth=11;; - Dec) month=December; nummonth=12;; - esac - done - -+test -n "$month" || error "failed parsing '$ls_command /' output" -+ - # Get the extended ls output of the file or directory. --set dummy x`eval "$ls_command \"\$save_arg1\""` -+set dummy x`eval "$ls_command \"\\\$save_arg1\""` - - # Remove all preceding arguments - eval $command - - # Because of the dummy argument above, month is in $2. - # - # On a POSIX system, we should have - # -@@ -192,10 +214,11 @@ esac - echo $day $month $year - - # Local Variables: - # mode: shell-script - # sh-indentation: 2 - # eval: (add-hook 'write-file-hooks 'time-stamp) - # time-stamp-start: "scriptversion=" - # time-stamp-format: "%:y-%02m-%02d.%02H" --# time-stamp-end: "$" -+# time-stamp-time-zone: "UTC" -+# time-stamp-end: "; # UTC" - # End: -diff --git a/js/src/ctypes/libffi/missing b/js/src/ctypes/libffi/missing ---- a/js/src/ctypes/libffi/missing -+++ b/js/src/ctypes/libffi/missing -@@ -1,360 +1,215 @@ - #! /bin/sh --# Common stub for a few missing GNU programs while installing. -+# Common wrapper for a few potentially missing GNU programs. - --scriptversion=2005-06-08.21 -+scriptversion=2012-06-26.16; # UTC - --# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 --# Free Software Foundation, Inc. --# Originally by Fran,cois Pinard , 1996. -+# Copyright (C) 1996-2013 Free Software Foundation, Inc. -+# Originally written by Fran,cois Pinard , 1996. - - # This program is free software; you can redistribute it and/or modify - # it under the terms of the GNU General Public License as published by - # the Free Software Foundation; either version 2, or (at your option) - # any later version. - - # This program is distributed in the hope that it will be useful, - # but WITHOUT ANY WARRANTY; without even the implied warranty of - # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - # GNU General Public License for more details. - - # You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA --# 02110-1301, USA. -+# along with this program. If not, see . - - # As a special exception to the GNU General Public License, if you - # distribute this file as part of a program that contains a - # configuration script generated by Autoconf, you may include it under - # the same distribution terms that you use for the rest of that program. - - if test $# -eq 0; then -- echo 1>&2 "Try \`$0 --help' for more information" -+ echo 1>&2 "Try '$0 --help' for more information" - exit 1 - fi - --run=: -+case $1 in - --# In the cases where this matters, `missing' is being run in the --# srcdir already. --if test -f configure.ac; then -- configure_ac=configure.ac --else -- configure_ac=configure.in --fi -+ --is-lightweight) -+ # Used by our autoconf macros to check whether the available missing -+ # script is modern enough. -+ exit 0 -+ ;; - --msg="missing on your system" -- --case "$1" in ----run) -- # Try to run requested program, and just exit if it succeeds. -- run= -- shift -- "$@" && exit 0 -- # Exit code 63 means version mismatch. This often happens -- # when the user try to use an ancient version of a tool on -- # a file that requires a minimum version. In this case we -- # we should proceed has if the program had been absent, or -- # if --run hadn't been passed. -- if test $? = 63; then -- run=: -- msg="probably too old" -- fi -- ;; -+ --run) -+ # Back-compat with the calling convention used by older automake. -+ shift -+ ;; - - -h|--h|--he|--hel|--help) - echo "\ - $0 [OPTION]... PROGRAM [ARGUMENT]... - --Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an --error status if there is no known handling for PROGRAM. -+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due -+to PROGRAM being missing or too old. - - Options: - -h, --help display this help and exit - -v, --version output version information and exit -- --run try to run the given command, and emulate it if it fails - - Supported PROGRAM values: -- aclocal touch file \`aclocal.m4' -- autoconf touch file \`configure' -- autoheader touch file \`config.h.in' -- automake touch all \`Makefile.in' files -- bison create \`y.tab.[ch]', if possible, from existing .[ch] -- flex create \`lex.yy.c', if possible, from existing .c -- help2man touch the output file -- lex create \`lex.yy.c', if possible, from existing .c -- makeinfo touch the output file -- tar try tar, gnutar, gtar, then tar without non-portable flags -- yacc create \`y.tab.[ch]', if possible, from existing .[ch] -+ aclocal autoconf autoheader autom4te automake makeinfo -+ bison yacc flex lex help2man -+ -+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and -+'g' are ignored when checking the name. - - Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) -- echo 1>&2 "$0: Unknown \`$1' option" -- echo 1>&2 "Try \`$0 --help' for more information" -+ echo 1>&2 "$0: unknown '$1' option" -+ echo 1>&2 "Try '$0 --help' for more information" - exit 1 - ;; - - esac - --# Now exit if we have it, but it failed. Also exit now if we --# don't have it and --version was passed (most likely to detect --# the program). --case "$1" in -- lex|yacc) -- # Not GNU programs, they don't have --version. -+# Run the given program, remember its exit status. -+"$@"; st=$? -+ -+# If it succeeded, we are done. -+test $st -eq 0 && exit 0 -+ -+# Also exit now if we it failed (or wasn't found), and '--version' was -+# passed; such an option is passed most likely to detect whether the -+# program is present and works. -+case $2 in --version|--help) exit $st;; esac -+ -+# Exit code 63 means version mismatch. This often happens when the user -+# tries to use an ancient version of a tool on a file that requires a -+# minimum version. -+if test $st -eq 63; then -+ msg="probably too old" -+elif test $st -eq 127; then -+ # Program was missing. -+ msg="missing on your system" -+else -+ # Program was found and executed, but failed. Give up. -+ exit $st -+fi -+ -+perl_URL=http://www.perl.org/ -+flex_URL=http://flex.sourceforge.net/ -+gnu_software_URL=http://www.gnu.org/software -+ -+program_details () -+{ -+ case $1 in -+ aclocal|automake) -+ echo "The '$1' program is part of the GNU Automake package:" -+ echo "<$gnu_software_URL/automake>" -+ echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" -+ echo "<$gnu_software_URL/autoconf>" -+ echo "<$gnu_software_URL/m4/>" -+ echo "<$perl_URL>" -+ ;; -+ autoconf|autom4te|autoheader) -+ echo "The '$1' program is part of the GNU Autoconf package:" -+ echo "<$gnu_software_URL/autoconf/>" -+ echo "It also requires GNU m4 and Perl in order to run:" -+ echo "<$gnu_software_URL/m4/>" -+ echo "<$perl_URL>" -+ ;; -+ esac -+} -+ -+give_advice () -+{ -+ # Normalize program name to check for. -+ normalized_program=`echo "$1" | sed ' -+ s/^gnu-//; t -+ s/^gnu//; t -+ s/^g//; t'` -+ -+ printf '%s\n' "'$1' is $msg." -+ -+ configure_deps="'configure.ac' or m4 files included by 'configure.ac'" -+ case $normalized_program in -+ autoconf*) -+ echo "You should only need it if you modified 'configure.ac'," -+ echo "or m4 files included by it." -+ program_details 'autoconf' -+ ;; -+ autoheader*) -+ echo "You should only need it if you modified 'acconfig.h' or" -+ echo "$configure_deps." -+ program_details 'autoheader' -+ ;; -+ automake*) -+ echo "You should only need it if you modified 'Makefile.am' or" -+ echo "$configure_deps." -+ program_details 'automake' -+ ;; -+ aclocal*) -+ echo "You should only need it if you modified 'acinclude.m4' or" -+ echo "$configure_deps." -+ program_details 'aclocal' -+ ;; -+ autom4te*) -+ echo "You might have modified some maintainer files that require" -+ echo "the 'automa4te' program to be rebuilt." -+ program_details 'autom4te' -+ ;; -+ bison*|yacc*) -+ echo "You should only need it if you modified a '.y' file." -+ echo "You may want to install the GNU Bison package:" -+ echo "<$gnu_software_URL/bison/>" -+ ;; -+ lex*|flex*) -+ echo "You should only need it if you modified a '.l' file." -+ echo "You may want to install the Fast Lexical Analyzer package:" -+ echo "<$flex_URL>" -+ ;; -+ help2man*) -+ echo "You should only need it if you modified a dependency" \ -+ "of a man page." -+ echo "You may want to install the GNU Help2man package:" -+ echo "<$gnu_software_URL/help2man/>" - ;; -+ makeinfo*) -+ echo "You should only need it if you modified a '.texi' file, or" -+ echo "any other file indirectly affecting the aspect of the manual." -+ echo "You might want to install the Texinfo package:" -+ echo "<$gnu_software_URL/texinfo/>" -+ echo "The spurious makeinfo call might also be the consequence of" -+ echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" -+ echo "want to install GNU make:" -+ echo "<$gnu_software_URL/make/>" -+ ;; -+ *) -+ echo "You might have modified some files without having the proper" -+ echo "tools for further handling them. Check the 'README' file, it" -+ echo "often tells you about the needed prerequisites for installing" -+ echo "this package. You may also peek at any GNU archive site, in" -+ echo "case some other package contains this missing '$1' program." -+ ;; -+ esac -+} - -- tar) -- if test -n "$run"; then -- echo 1>&2 "ERROR: \`tar' requires --run" -- exit 1 -- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then -- exit 1 -- fi -- ;; -+give_advice "$1" | sed -e '1s/^/WARNING: /' \ -+ -e '2,$s/^/ /' >&2 - -- *) -- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then -- # We have it, but it failed. -- exit 1 -- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then -- # Could not run --version or --help. This is probably someone -- # running `$TOOL --version' or `$TOOL --help' to check whether -- # $TOOL exists and not knowing $TOOL uses missing. -- exit 1 -- fi -- ;; --esac -- --# If it does not exist, or fails to run (possibly an outdated version), --# try to emulate it. --case "$1" in -- aclocal*) -- echo 1>&2 "\ --WARNING: \`$1' is $msg. You should only need it if -- you modified \`acinclude.m4' or \`${configure_ac}'. You might want -- to install the \`Automake' and \`Perl' packages. Grab them from -- any GNU archive site." -- touch aclocal.m4 -- ;; -- -- autoconf) -- echo 1>&2 "\ --WARNING: \`$1' is $msg. You should only need it if -- you modified \`${configure_ac}'. You might want to install the -- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU -- archive site." -- touch configure -- ;; -- -- autoheader) -- echo 1>&2 "\ --WARNING: \`$1' is $msg. You should only need it if -- you modified \`acconfig.h' or \`${configure_ac}'. You might want -- to install the \`Autoconf' and \`GNU m4' packages. Grab them -- from any GNU archive site." -- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` -- test -z "$files" && files="config.h" -- touch_files= -- for f in $files; do -- case "$f" in -- *:*) touch_files="$touch_files "`echo "$f" | -- sed -e 's/^[^:]*://' -e 's/:.*//'`;; -- *) touch_files="$touch_files $f.in";; -- esac -- done -- touch $touch_files -- ;; -- -- automake*) -- echo 1>&2 "\ --WARNING: \`$1' is $msg. You should only need it if -- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. -- You might want to install the \`Automake' and \`Perl' packages. -- Grab them from any GNU archive site." -- find . -type f -name Makefile.am -print | -- sed 's/\.am$/.in/' | -- while read f; do touch "$f"; done -- ;; -- -- autom4te) -- echo 1>&2 "\ --WARNING: \`$1' is needed, but is $msg. -- You might have modified some files without having the -- proper tools for further handling them. -- You can get \`$1' as part of \`Autoconf' from any GNU -- archive site." -- -- file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` -- test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` -- if test -f "$file"; then -- touch $file -- else -- test -z "$file" || exec >$file -- echo "#! /bin/sh" -- echo "# Created by GNU Automake missing as a replacement of" -- echo "# $ $@" -- echo "exit 0" -- chmod +x $file -- exit 1 -- fi -- ;; -- -- bison|yacc) -- echo 1>&2 "\ --WARNING: \`$1' $msg. You should only need it if -- you modified a \`.y' file. You may need the \`Bison' package -- in order for those modifications to take effect. You can get -- \`Bison' from any GNU archive site." -- rm -f y.tab.c y.tab.h -- if [ $# -ne 1 ]; then -- eval LASTARG="\${$#}" -- case "$LASTARG" in -- *.y) -- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` -- if [ -f "$SRCFILE" ]; then -- cp "$SRCFILE" y.tab.c -- fi -- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` -- if [ -f "$SRCFILE" ]; then -- cp "$SRCFILE" y.tab.h -- fi -- ;; -- esac -- fi -- if [ ! -f y.tab.h ]; then -- echo >y.tab.h -- fi -- if [ ! -f y.tab.c ]; then -- echo 'main() { return 0; }' >y.tab.c -- fi -- ;; -- -- lex|flex) -- echo 1>&2 "\ --WARNING: \`$1' is $msg. You should only need it if -- you modified a \`.l' file. You may need the \`Flex' package -- in order for those modifications to take effect. You can get -- \`Flex' from any GNU archive site." -- rm -f lex.yy.c -- if [ $# -ne 1 ]; then -- eval LASTARG="\${$#}" -- case "$LASTARG" in -- *.l) -- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` -- if [ -f "$SRCFILE" ]; then -- cp "$SRCFILE" lex.yy.c -- fi -- ;; -- esac -- fi -- if [ ! -f lex.yy.c ]; then -- echo 'main() { return 0; }' >lex.yy.c -- fi -- ;; -- -- help2man) -- echo 1>&2 "\ --WARNING: \`$1' is $msg. You should only need it if -- you modified a dependency of a manual page. You may need the -- \`Help2man' package in order for those modifications to take -- effect. You can get \`Help2man' from any GNU archive site." -- -- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` -- if test -z "$file"; then -- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` -- fi -- if [ -f "$file" ]; then -- touch $file -- else -- test -z "$file" || exec >$file -- echo ".ab help2man is required to generate this page" -- exit 1 -- fi -- ;; -- -- makeinfo) -- echo 1>&2 "\ --WARNING: \`$1' is $msg. You should only need it if -- you modified a \`.texi' or \`.texinfo' file, or any other file -- indirectly affecting the aspect of the manual. The spurious -- call might also be the consequence of using a buggy \`make' (AIX, -- DU, IRIX). You might want to install the \`Texinfo' package or -- the \`GNU make' package. Grab either from any GNU archive site." -- # The file to touch is that specified with -o ... -- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` -- if test -z "$file"; then -- # ... or it is the one specified with @setfilename ... -- infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` -- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` -- # ... or it is derived from the source name (dir/f.texi becomes f.info) -- test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info -- fi -- # If the file does not exist, the user really needs makeinfo; -- # let's fail without touching anything. -- test -f $file || exit 1 -- touch $file -- ;; -- -- tar) -- shift -- -- # We have already tried tar in the generic part. -- # Look for gnutar/gtar before invocation to avoid ugly error -- # messages. -- if (gnutar --version > /dev/null 2>&1); then -- gnutar "$@" && exit 0 -- fi -- if (gtar --version > /dev/null 2>&1); then -- gtar "$@" && exit 0 -- fi -- firstarg="$1" -- if shift; then -- case "$firstarg" in -- *o*) -- firstarg=`echo "$firstarg" | sed s/o//` -- tar "$firstarg" "$@" && exit 0 -- ;; -- esac -- case "$firstarg" in -- *h*) -- firstarg=`echo "$firstarg" | sed s/h//` -- tar "$firstarg" "$@" && exit 0 -- ;; -- esac -- fi -- -- echo 1>&2 "\ --WARNING: I can't seem to be able to run \`tar' with the given arguments. -- You may want to install GNU tar or Free paxutils, or check the -- command line arguments." -- exit 1 -- ;; -- -- *) -- echo 1>&2 "\ --WARNING: \`$1' is needed, and is $msg. -- You might have modified some files without having the -- proper tools for further handling them. Check the \`README' file, -- it often tells you about the needed prerequisites for installing -- this package. You may also peek at any GNU archive site, in case -- some other package would contain this missing \`$1' program." -- exit 1 -- ;; --esac -- --exit 0 -+# Propagate the correct exit status (expected to be 127 for a program -+# not found, 63 for a program that failed due to version mismatch). -+exit $st - - # Local variables: - # eval: (add-hook 'write-file-hooks 'time-stamp) - # time-stamp-start: "scriptversion=" - # time-stamp-format: "%:y-%02m-%02d.%02H" --# time-stamp-end: "$" -+# time-stamp-time-zone: "UTC" -+# time-stamp-end: "; # UTC" - # End: -diff --git a/js/src/ctypes/libffi/msvcc.sh b/js/src/ctypes/libffi/msvcc.sh ---- a/js/src/ctypes/libffi/msvcc.sh -+++ b/js/src/ctypes/libffi/msvcc.sh -@@ -1,19 +1,53 @@ - #!/bin/sh - --# This Source Code Form is subject to the terms of the Mozilla Public --# License, v. 2.0. If a copy of the MPL was not distributed with this --# file, You can obtain one at http://mozilla.org/MPL/2.0/. -+# ***** BEGIN LICENSE BLOCK ***** -+# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -+# -+# The contents of this file are subject to the Mozilla Public License Version -+# 1.1 (the "License"); you may not use this file except in compliance with -+# the License. You may obtain a copy of the License at -+# http://www.mozilla.org/MPL/ -+# -+# Software distributed under the License is distributed on an "AS IS" basis, -+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -+# for the specific language governing rights and limitations under the -+# License. -+# -+# The Original Code is the MSVC wrappificator. -+# -+# The Initial Developer of the Original Code is -+# Timothy Wall . -+# Portions created by the Initial Developer are Copyright (C) 2009 -+# the Initial Developer. All Rights Reserved. -+# -+# Contributor(s): -+# Daniel Witte -+# -+# Alternatively, the contents of this file may be used under the terms of -+# either the GNU General Public License Version 2 or later (the "GPL"), or -+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -+# in which case the provisions of the GPL or the LGPL are applicable instead -+# of those above. If you wish to allow use of your version of this file only -+# under the terms of either the GPL or the LGPL, and not to allow others to -+# use your version of this file under the terms of the MPL, indicate your -+# decision by deleting the provisions above and replace them with the notice -+# and other provisions required by the GPL or the LGPL. If you do not delete -+# the provisions above, a recipient may use your version of this file under -+# the terms of any one of the MPL, the GPL or the LGPL. -+# -+# ***** END LICENSE BLOCK ***** - - # - # GCC-compatible wrapper for cl.exe and ml.exe. Arguments are given in GCC - # format and translated into something sensible for cl or ml. - # - -+args_orig=$@ - args="-nologo -W3" - md=-MD - cl="cl" - ml="ml" - safeseh="-safeseh" - output= - - while [ $# -gt 0 ] -@@ -34,24 +68,45 @@ do - safeseh= - shift 1 - ;; - -O0) - args="$args -Od" - shift 1 - ;; - -O*) -- # If we're optimizing, make sure we explicitly turn on some optimizations -- # that are implicitly disabled by debug symbols (-Zi). -- args="$args $1 -OPT:REF -OPT:ICF -INCREMENTAL:NO" -+ # Runtime error checks (enabled by setting -RTC1 in the -DFFI_DEBUG -+ # case below) are not compatible with optimization flags and will -+ # cause the build to fail. Therefore, drop the optimization flag if -+ # -DFFI_DEBUG is also set. -+ case $args_orig in -+ *-DFFI_DEBUG*) -+ args="$args" -+ ;; -+ *) -+ # The ax_cc_maxopt.m4 macro from the upstream autoconf-archive -+ # project doesn't support MSVC and therefore ends up trying to -+ # use -O3. Use the equivalent "max optimization" flag for MSVC -+ # instead of erroring out. -+ case $1 in -+ -O3) -+ args="$args -O2" -+ ;; -+ *) -+ args="$args $1" -+ ;; -+ esac -+ opt="true" -+ ;; -+ esac - shift 1 - ;; - -g) - # Enable debug symbol generation. -- args="$args -Zi -DEBUG" -+ args="$args -Zi" - shift 1 - ;; - -DFFI_DEBUG) - # Link against debug CRT and enable runtime error checks. - args="$args -RTC1" - defines="$defines $1" - md=-MDd - shift 1 -@@ -88,16 +143,20 @@ do - # TODO map extra warnings - shift 1 - ;; - -Wall) - # -Wall on MSVC is overzealous, and we already build with -W3. Nothing - # to do here. - shift 1 - ;; -+ -pedantic) -+ # libffi tests -pedantic with -Wall, so drop it also. -+ shift 1 -+ ;; - -Werror) - args="$args -WX" - shift 1 - ;; - -W*) - # TODO map specific warnings - shift 1 - ;; -@@ -132,16 +191,23 @@ do - *) - # Assume it's an MSVC argument, and pass it through. - args="$args $1" - shift 1 - ;; - esac - done - -+# If -Zi is specified, certain optimizations are implicitly disabled -+# by MSVC. Add back those optimizations if this is an optimized build. -+# NOTE: These arguments must come after all others. -+if [ -n "$opt" ]; then -+ args="$args -link -OPT:REF -OPT:ICF -INCREMENTAL:NO" -+fi -+ - if [ -n "$assembly" ]; then - if [ -z "$outdir" ]; then - outdir="." - fi - ppsrc="$outdir/$(basename $src|sed 's/.S$/.asm/g')" - echo "$cl -nologo -EP $includes $defines $src > $ppsrc" - "$cl" -nologo -EP $includes $defines $src > $ppsrc || exit $? - output="$(echo $output | sed 's%/F[dpa][^ ]*%%g')" -@@ -151,14 +217,17 @@ if [ -n "$assembly" ]; then - eval "\"$ml\" $args" - result=$? - - # required to fix ml64 broken output? - #mv *.obj $outdir - else - args="$md $args" - echo "$cl $args" -- eval "\"$cl\" $args" -+ # Return an error code of 1 if an invalid command line parameter is passed -+ # instead of just ignoring it. -+ eval "(\"$cl\" $args 2>&1 1>&3 | \ -+ awk '{print \$0} /D9002/ {error=1} END{exit error}' >&2) 3>&1" - result=$? - fi - - exit $result - -diff --git a/js/src/ctypes/libffi/src/aarch64/ffi.c b/js/src/ctypes/libffi/src/aarch64/ffi.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/aarch64/ffi.c -@@ -0,0 +1,1133 @@ -+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+``Software''), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#include -+ -+#include -+#include -+ -+#include -+ -+/* Stack alignment requirement in bytes */ -+#if defined (__APPLE__) -+#define AARCH64_STACK_ALIGN 1 -+#else -+#define AARCH64_STACK_ALIGN 16 -+#endif -+ -+#define N_X_ARG_REG 8 -+#define N_V_ARG_REG 8 -+ -+#define AARCH64_FFI_WITH_V (1 << AARCH64_FFI_WITH_V_BIT) -+ -+union _d -+{ -+ UINT64 d; -+ UINT32 s[2]; -+}; -+ -+struct call_context -+{ -+ UINT64 x [AARCH64_N_XREG]; -+ struct -+ { -+ union _d d[2]; -+ } v [AARCH64_N_VREG]; -+}; -+ -+#if defined (__clang__) && defined (__APPLE__) -+extern void -+sys_icache_invalidate (void *start, size_t len); -+#endif -+ -+static inline void -+ffi_clear_cache (void *start, void *end) -+{ -+#if defined (__clang__) && defined (__APPLE__) -+ sys_icache_invalidate (start, (char *)end - (char *)start); -+#elif defined (__GNUC__) -+ __builtin___clear_cache (start, end); -+#else -+#error "Missing builtin to flush instruction cache" -+#endif -+} -+ -+static void * -+get_x_addr (struct call_context *context, unsigned n) -+{ -+ return &context->x[n]; -+} -+ -+static void * -+get_s_addr (struct call_context *context, unsigned n) -+{ -+#if defined __AARCH64EB__ -+ return &context->v[n].d[1].s[1]; -+#else -+ return &context->v[n].d[0].s[0]; -+#endif -+} -+ -+static void * -+get_d_addr (struct call_context *context, unsigned n) -+{ -+#if defined __AARCH64EB__ -+ return &context->v[n].d[1]; -+#else -+ return &context->v[n].d[0]; -+#endif -+} -+ -+static void * -+get_v_addr (struct call_context *context, unsigned n) -+{ -+ return &context->v[n]; -+} -+ -+/* Return the memory location at which a basic type would reside -+ were it to have been stored in register n. */ -+ -+static void * -+get_basic_type_addr (unsigned short type, struct call_context *context, -+ unsigned n) -+{ -+ switch (type) -+ { -+ case FFI_TYPE_FLOAT: -+ return get_s_addr (context, n); -+ case FFI_TYPE_DOUBLE: -+ return get_d_addr (context, n); -+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ return get_v_addr (context, n); -+#endif -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ return get_x_addr (context, n); -+ case FFI_TYPE_VOID: -+ return NULL; -+ default: -+ FFI_ASSERT (0); -+ return NULL; -+ } -+} -+ -+/* Return the alignment width for each of the basic types. */ -+ -+static size_t -+get_basic_type_alignment (unsigned short type) -+{ -+ switch (type) -+ { -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_DOUBLE: -+ return sizeof (UINT64); -+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ return sizeof (long double); -+#endif -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT8: -+#if defined (__APPLE__) -+ return sizeof (UINT8); -+#endif -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT16: -+#if defined (__APPLE__) -+ return sizeof (UINT16); -+#endif -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_SINT32: -+#if defined (__APPLE__) -+ return sizeof (UINT32); -+#endif -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ return sizeof (UINT64); -+ -+ default: -+ FFI_ASSERT (0); -+ return 0; -+ } -+} -+ -+/* Return the size in bytes for each of the basic types. */ -+ -+static size_t -+get_basic_type_size (unsigned short type) -+{ -+ switch (type) -+ { -+ case FFI_TYPE_FLOAT: -+ return sizeof (UINT32); -+ case FFI_TYPE_DOUBLE: -+ return sizeof (UINT64); -+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ return sizeof (long double); -+#endif -+ case FFI_TYPE_UINT8: -+ return sizeof (UINT8); -+ case FFI_TYPE_SINT8: -+ return sizeof (SINT8); -+ case FFI_TYPE_UINT16: -+ return sizeof (UINT16); -+ case FFI_TYPE_SINT16: -+ return sizeof (SINT16); -+ case FFI_TYPE_UINT32: -+ return sizeof (UINT32); -+ case FFI_TYPE_INT: -+ case FFI_TYPE_SINT32: -+ return sizeof (SINT32); -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_UINT64: -+ return sizeof (UINT64); -+ case FFI_TYPE_SINT64: -+ return sizeof (SINT64); -+ -+ default: -+ FFI_ASSERT (0); -+ return 0; -+ } -+} -+ -+extern void -+ffi_call_SYSV (unsigned (*)(struct call_context *context, unsigned char *, -+ extended_cif *), -+ struct call_context *context, -+ extended_cif *, -+ size_t, -+ void (*fn)(void)); -+ -+extern void -+ffi_closure_SYSV (ffi_closure *); -+ -+/* Test for an FFI floating point representation. */ -+ -+static unsigned -+is_floating_type (unsigned short type) -+{ -+ return (type == FFI_TYPE_FLOAT || type == FFI_TYPE_DOUBLE -+ || type == FFI_TYPE_LONGDOUBLE); -+} -+ -+/* Test for a homogeneous structure. */ -+ -+static unsigned short -+get_homogeneous_type (ffi_type *ty) -+{ -+ if (ty->type == FFI_TYPE_STRUCT && ty->elements) -+ { -+ unsigned i; -+ unsigned short candidate_type -+ = get_homogeneous_type (ty->elements[0]); -+ for (i =1; ty->elements[i]; i++) -+ { -+ unsigned short iteration_type = 0; -+ /* If we have a nested struct, we must find its homogeneous type. -+ If that fits with our candidate type, we are still -+ homogeneous. */ -+ if (ty->elements[i]->type == FFI_TYPE_STRUCT -+ && ty->elements[i]->elements) -+ { -+ iteration_type = get_homogeneous_type (ty->elements[i]); -+ } -+ else -+ { -+ iteration_type = ty->elements[i]->type; -+ } -+ -+ /* If we are not homogeneous, return FFI_TYPE_STRUCT. */ -+ if (candidate_type != iteration_type) -+ return FFI_TYPE_STRUCT; -+ } -+ return candidate_type; -+ } -+ -+ /* Base case, we have no more levels of nesting, so we -+ are a basic type, and so, trivially homogeneous in that type. */ -+ return ty->type; -+} -+ -+/* Determine the number of elements within a STRUCT. -+ -+ Note, we must handle nested structs. -+ -+ If ty is not a STRUCT this function will return 0. */ -+ -+static unsigned -+element_count (ffi_type *ty) -+{ -+ if (ty->type == FFI_TYPE_STRUCT && ty->elements) -+ { -+ unsigned n; -+ unsigned elems = 0; -+ for (n = 0; ty->elements[n]; n++) -+ { -+ if (ty->elements[n]->type == FFI_TYPE_STRUCT -+ && ty->elements[n]->elements) -+ elems += element_count (ty->elements[n]); -+ else -+ elems++; -+ } -+ return elems; -+ } -+ return 0; -+} -+ -+/* Test for a homogeneous floating point aggregate. -+ -+ A homogeneous floating point aggregate is a homogeneous aggregate of -+ a half- single- or double- precision floating point type with one -+ to four elements. Note that this includes nested structs of the -+ basic type. */ -+ -+static int -+is_hfa (ffi_type *ty) -+{ -+ if (ty->type == FFI_TYPE_STRUCT -+ && ty->elements[0] -+ && is_floating_type (get_homogeneous_type (ty))) -+ { -+ unsigned n = element_count (ty); -+ return n >= 1 && n <= 4; -+ } -+ return 0; -+} -+ -+/* Test if an ffi_type is a candidate for passing in a register. -+ -+ This test does not check that sufficient registers of the -+ appropriate class are actually available, merely that IFF -+ sufficient registers are available then the argument will be passed -+ in register(s). -+ -+ Note that an ffi_type that is deemed to be a register candidate -+ will always be returned in registers. -+ -+ Returns 1 if a register candidate else 0. */ -+ -+static int -+is_register_candidate (ffi_type *ty) -+{ -+ switch (ty->type) -+ { -+ case FFI_TYPE_VOID: -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_DOUBLE: -+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+#endif -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_SINT64: -+ return 1; -+ -+ case FFI_TYPE_STRUCT: -+ if (is_hfa (ty)) -+ { -+ return 1; -+ } -+ else if (ty->size > 16) -+ { -+ /* Too large. Will be replaced with a pointer to memory. The -+ pointer MAY be passed in a register, but the value will -+ not. This test specifically fails since the argument will -+ never be passed by value in registers. */ -+ return 0; -+ } -+ else -+ { -+ /* Might be passed in registers depending on the number of -+ registers required. */ -+ return (ty->size + 7) / 8 < N_X_ARG_REG; -+ } -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+ -+ return 0; -+} -+ -+/* Test if an ffi_type argument or result is a candidate for a vector -+ register. */ -+ -+static int -+is_v_register_candidate (ffi_type *ty) -+{ -+ return is_floating_type (ty->type) -+ || (ty->type == FFI_TYPE_STRUCT && is_hfa (ty)); -+} -+ -+/* Representation of the procedure call argument marshalling -+ state. -+ -+ The terse state variable names match the names used in the AARCH64 -+ PCS. */ -+ -+struct arg_state -+{ -+ unsigned ngrn; /* Next general-purpose register number. */ -+ unsigned nsrn; /* Next vector register number. */ -+ size_t nsaa; /* Next stack offset. */ -+}; -+ -+/* Initialize a procedure call argument marshalling state. */ -+static void -+arg_init (struct arg_state *state, size_t call_frame_size) -+{ -+ state->ngrn = 0; -+ state->nsrn = 0; -+ state->nsaa = 0; -+} -+ -+/* Return the number of available consecutive core argument -+ registers. */ -+ -+static unsigned -+available_x (struct arg_state *state) -+{ -+ return N_X_ARG_REG - state->ngrn; -+} -+ -+/* Return the number of available consecutive vector argument -+ registers. */ -+ -+static unsigned -+available_v (struct arg_state *state) -+{ -+ return N_V_ARG_REG - state->nsrn; -+} -+ -+static void * -+allocate_to_x (struct call_context *context, struct arg_state *state) -+{ -+ FFI_ASSERT (state->ngrn < N_X_ARG_REG); -+ return get_x_addr (context, (state->ngrn)++); -+} -+ -+static void * -+allocate_to_s (struct call_context *context, struct arg_state *state) -+{ -+ FFI_ASSERT (state->nsrn < N_V_ARG_REG); -+ return get_s_addr (context, (state->nsrn)++); -+} -+ -+static void * -+allocate_to_d (struct call_context *context, struct arg_state *state) -+{ -+ FFI_ASSERT (state->nsrn < N_V_ARG_REG); -+ return get_d_addr (context, (state->nsrn)++); -+} -+ -+static void * -+allocate_to_v (struct call_context *context, struct arg_state *state) -+{ -+ FFI_ASSERT (state->nsrn < N_V_ARG_REG); -+ return get_v_addr (context, (state->nsrn)++); -+} -+ -+/* Allocate an aligned slot on the stack and return a pointer to it. */ -+static void * -+allocate_to_stack (struct arg_state *state, void *stack, size_t alignment, -+ size_t size) -+{ -+ void *allocation; -+ -+ /* Round up the NSAA to the larger of 8 or the natural -+ alignment of the argument's type. */ -+ state->nsaa = ALIGN (state->nsaa, alignment); -+ state->nsaa = ALIGN (state->nsaa, alignment); -+#if !defined (__APPLE__) -+ state->nsaa = ALIGN (state->nsaa, 8); -+#endif -+ -+ allocation = stack + state->nsaa; -+ -+ state->nsaa += size; -+ return allocation; -+} -+ -+static void -+copy_basic_type (void *dest, void *source, unsigned short type) -+{ -+ /* This is necessary to ensure that basic types are copied -+ sign extended to 64-bits as libffi expects. */ -+ switch (type) -+ { -+ case FFI_TYPE_FLOAT: -+ *(float *) dest = *(float *) source; -+ break; -+ case FFI_TYPE_DOUBLE: -+ *(double *) dest = *(double *) source; -+ break; -+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ *(long double *) dest = *(long double *) source; -+ break; -+#endif -+ case FFI_TYPE_UINT8: -+ *(ffi_arg *) dest = *(UINT8 *) source; -+ break; -+ case FFI_TYPE_SINT8: -+ *(ffi_sarg *) dest = *(SINT8 *) source; -+ break; -+ case FFI_TYPE_UINT16: -+ *(ffi_arg *) dest = *(UINT16 *) source; -+ break; -+ case FFI_TYPE_SINT16: -+ *(ffi_sarg *) dest = *(SINT16 *) source; -+ break; -+ case FFI_TYPE_UINT32: -+ *(ffi_arg *) dest = *(UINT32 *) source; -+ break; -+ case FFI_TYPE_INT: -+ case FFI_TYPE_SINT32: -+ *(ffi_sarg *) dest = *(SINT32 *) source; -+ break; -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_UINT64: -+ *(ffi_arg *) dest = *(UINT64 *) source; -+ break; -+ case FFI_TYPE_SINT64: -+ *(ffi_sarg *) dest = *(SINT64 *) source; -+ break; -+ case FFI_TYPE_VOID: -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ } -+} -+ -+static void -+copy_hfa_to_reg_or_stack (void *memory, -+ ffi_type *ty, -+ struct call_context *context, -+ unsigned char *stack, -+ struct arg_state *state) -+{ -+ unsigned elems = element_count (ty); -+ if (available_v (state) < elems) -+ { -+ /* There are insufficient V registers. Further V register allocations -+ are prevented, the NSAA is adjusted (by allocate_to_stack ()) -+ and the argument is copied to memory at the adjusted NSAA. */ -+ state->nsrn = N_V_ARG_REG; -+ memcpy (allocate_to_stack (state, stack, ty->alignment, ty->size), -+ memory, -+ ty->size); -+ } -+ else -+ { -+ int i; -+ unsigned short type = get_homogeneous_type (ty); -+ for (i = 0; i < elems; i++) -+ { -+ void *reg = allocate_to_v (context, state); -+ copy_basic_type (reg, memory, type); -+ memory += get_basic_type_size (type); -+ } -+ } -+} -+ -+/* Either allocate an appropriate register for the argument type, or if -+ none are available, allocate a stack slot and return a pointer -+ to the allocated space. */ -+ -+static void * -+allocate_to_register_or_stack (struct call_context *context, -+ unsigned char *stack, -+ struct arg_state *state, -+ unsigned short type) -+{ -+ size_t alignment = get_basic_type_alignment (type); -+ size_t size = alignment; -+ switch (type) -+ { -+ case FFI_TYPE_FLOAT: -+ /* This is the only case for which the allocated stack size -+ should not match the alignment of the type. */ -+ size = sizeof (UINT32); -+ /* Fall through. */ -+ case FFI_TYPE_DOUBLE: -+ if (state->nsrn < N_V_ARG_REG) -+ return allocate_to_d (context, state); -+ state->nsrn = N_V_ARG_REG; -+ break; -+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ if (state->nsrn < N_V_ARG_REG) -+ return allocate_to_v (context, state); -+ state->nsrn = N_V_ARG_REG; -+ break; -+#endif -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ if (state->ngrn < N_X_ARG_REG) -+ return allocate_to_x (context, state); -+ state->ngrn = N_X_ARG_REG; -+ break; -+ default: -+ FFI_ASSERT (0); -+ } -+ -+ return allocate_to_stack (state, stack, alignment, size); -+} -+ -+/* Copy a value to an appropriate register, or if none are -+ available, to the stack. */ -+ -+static void -+copy_to_register_or_stack (struct call_context *context, -+ unsigned char *stack, -+ struct arg_state *state, -+ void *value, -+ unsigned short type) -+{ -+ copy_basic_type ( -+ allocate_to_register_or_stack (context, stack, state, type), -+ value, -+ type); -+} -+ -+/* Marshall the arguments from FFI representation to procedure call -+ context and stack. */ -+ -+static unsigned -+aarch64_prep_args (struct call_context *context, unsigned char *stack, -+ extended_cif *ecif) -+{ -+ int i; -+ struct arg_state state; -+ -+ arg_init (&state, ALIGN(ecif->cif->bytes, 16)); -+ -+ for (i = 0; i < ecif->cif->nargs; i++) -+ { -+ ffi_type *ty = ecif->cif->arg_types[i]; -+ switch (ty->type) -+ { -+ case FFI_TYPE_VOID: -+ FFI_ASSERT (0); -+ break; -+ -+ /* If the argument is a basic type the argument is allocated to an -+ appropriate register, or if none are available, to the stack. */ -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_DOUBLE: -+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+#endif -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ copy_to_register_or_stack (context, stack, &state, -+ ecif->avalue[i], ty->type); -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ if (is_hfa (ty)) -+ { -+ copy_hfa_to_reg_or_stack (ecif->avalue[i], ty, context, -+ stack, &state); -+ } -+ else if (ty->size > 16) -+ { -+ /* If the argument is a composite type that is larger than 16 -+ bytes, then the argument has been copied to memory, and -+ the argument is replaced by a pointer to the copy. */ -+ -+ copy_to_register_or_stack (context, stack, &state, -+ &(ecif->avalue[i]), FFI_TYPE_POINTER); -+ } -+ else if (available_x (&state) >= (ty->size + 7) / 8) -+ { -+ /* If the argument is a composite type and the size in -+ double-words is not more than the number of available -+ X registers, then the argument is copied into consecutive -+ X registers. */ -+ int j; -+ for (j = 0; j < (ty->size + 7) / 8; j++) -+ { -+ memcpy (allocate_to_x (context, &state), -+ &(((UINT64 *) ecif->avalue[i])[j]), -+ sizeof (UINT64)); -+ } -+ } -+ else -+ { -+ /* Otherwise, there are insufficient X registers. Further X -+ register allocations are prevented, the NSAA is adjusted -+ (by allocate_to_stack ()) and the argument is copied to -+ memory at the adjusted NSAA. */ -+ state.ngrn = N_X_ARG_REG; -+ -+ memcpy (allocate_to_stack (&state, stack, ty->alignment, -+ ty->size), ecif->avalue + i, ty->size); -+ } -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+ } -+ -+ return ecif->cif->aarch64_flags; -+} -+ -+ffi_status -+ffi_prep_cif_machdep (ffi_cif *cif) -+{ -+ /* Round the stack up to a multiple of the stack alignment requirement. */ -+ cif->bytes = -+ (cif->bytes + (AARCH64_STACK_ALIGN - 1)) & ~ (AARCH64_STACK_ALIGN - 1); -+ -+ /* Initialize our flags. We are interested if this CIF will touch a -+ vector register, if so we will enable context save and load to -+ those registers, otherwise not. This is intended to be friendly -+ to lazy float context switching in the kernel. */ -+ cif->aarch64_flags = 0; -+ -+ if (is_v_register_candidate (cif->rtype)) -+ { -+ cif->aarch64_flags |= AARCH64_FFI_WITH_V; -+ } -+ else -+ { -+ int i; -+ for (i = 0; i < cif->nargs; i++) -+ if (is_v_register_candidate (cif->arg_types[i])) -+ { -+ cif->aarch64_flags |= AARCH64_FFI_WITH_V; -+ break; -+ } -+ } -+ -+ return FFI_OK; -+} -+ -+/* Call a function with the provided arguments and capture the return -+ value. */ -+void -+ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) -+{ -+ extended_cif ecif; -+ -+ ecif.cif = cif; -+ ecif.avalue = avalue; -+ ecif.rvalue = rvalue; -+ -+ switch (cif->abi) -+ { -+ case FFI_SYSV: -+ { -+ struct call_context context; -+ size_t stack_bytes; -+ -+ /* Figure out the total amount of stack space we need, the -+ above call frame space needs to be 16 bytes aligned to -+ ensure correct alignment of the first object inserted in -+ that space hence the ALIGN applied to cif->bytes.*/ -+ stack_bytes = ALIGN(cif->bytes, 16); -+ -+ memset (&context, 0, sizeof (context)); -+ if (is_register_candidate (cif->rtype)) -+ { -+ ffi_call_SYSV (aarch64_prep_args, &context, &ecif, stack_bytes, fn); -+ switch (cif->rtype->type) -+ { -+ case FFI_TYPE_VOID: -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_DOUBLE: -+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+#endif -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_SINT64: -+ { -+ void *addr = get_basic_type_addr (cif->rtype->type, -+ &context, 0); -+ copy_basic_type (rvalue, addr, cif->rtype->type); -+ break; -+ } -+ -+ case FFI_TYPE_STRUCT: -+ if (is_hfa (cif->rtype)) -+ { -+ int j; -+ unsigned short type = get_homogeneous_type (cif->rtype); -+ unsigned elems = element_count (cif->rtype); -+ for (j = 0; j < elems; j++) -+ { -+ void *reg = get_basic_type_addr (type, &context, j); -+ copy_basic_type (rvalue, reg, type); -+ rvalue += get_basic_type_size (type); -+ } -+ } -+ else if ((cif->rtype->size + 7) / 8 < N_X_ARG_REG) -+ { -+ size_t size = ALIGN (cif->rtype->size, sizeof (UINT64)); -+ memcpy (rvalue, get_x_addr (&context, 0), size); -+ } -+ else -+ { -+ FFI_ASSERT (0); -+ } -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+ } -+ else -+ { -+ memcpy (get_x_addr (&context, 8), &rvalue, sizeof (UINT64)); -+ ffi_call_SYSV (aarch64_prep_args, &context, &ecif, -+ stack_bytes, fn); -+ } -+ break; -+ } -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+} -+ -+static unsigned char trampoline [] = -+{ 0x70, 0x00, 0x00, 0x58, /* ldr x16, 1f */ -+ 0x91, 0x00, 0x00, 0x10, /* adr x17, 2f */ -+ 0x00, 0x02, 0x1f, 0xd6 /* br x16 */ -+}; -+ -+/* Build a trampoline. */ -+ -+#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX,FLAGS) \ -+ ({unsigned char *__tramp = (unsigned char*)(TRAMP); \ -+ UINT64 __fun = (UINT64)(FUN); \ -+ UINT64 __ctx = (UINT64)(CTX); \ -+ UINT64 __flags = (UINT64)(FLAGS); \ -+ memcpy (__tramp, trampoline, sizeof (trampoline)); \ -+ memcpy (__tramp + 12, &__fun, sizeof (__fun)); \ -+ memcpy (__tramp + 20, &__ctx, sizeof (__ctx)); \ -+ memcpy (__tramp + 28, &__flags, sizeof (__flags)); \ -+ ffi_clear_cache(__tramp, __tramp + FFI_TRAMPOLINE_SIZE); \ -+ }) -+ -+ffi_status -+ffi_prep_closure_loc (ffi_closure* closure, -+ ffi_cif* cif, -+ void (*fun)(ffi_cif*,void*,void**,void*), -+ void *user_data, -+ void *codeloc) -+{ -+ if (cif->abi != FFI_SYSV) -+ return FFI_BAD_ABI; -+ -+ FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_SYSV, codeloc, -+ cif->aarch64_flags); -+ -+ closure->cif = cif; -+ closure->user_data = user_data; -+ closure->fun = fun; -+ -+ return FFI_OK; -+} -+ -+/* Primary handler to setup and invoke a function within a closure. -+ -+ A closure when invoked enters via the assembler wrapper -+ ffi_closure_SYSV(). The wrapper allocates a call context on the -+ stack, saves the interesting registers (from the perspective of -+ the calling convention) into the context then passes control to -+ ffi_closure_SYSV_inner() passing the saved context and a pointer to -+ the stack at the point ffi_closure_SYSV() was invoked. -+ -+ On the return path the assembler wrapper will reload call context -+ registers. -+ -+ ffi_closure_SYSV_inner() marshalls the call context into ffi value -+ descriptors, invokes the wrapped function, then marshalls the return -+ value back into the call context. */ -+ -+void FFI_HIDDEN -+ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context, -+ void *stack) -+{ -+ ffi_cif *cif = closure->cif; -+ void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); -+ void *rvalue = NULL; -+ int i; -+ struct arg_state state; -+ -+ arg_init (&state, ALIGN(cif->bytes, 16)); -+ -+ for (i = 0; i < cif->nargs; i++) -+ { -+ ffi_type *ty = cif->arg_types[i]; -+ -+ switch (ty->type) -+ { -+ case FFI_TYPE_VOID: -+ FFI_ASSERT (0); -+ break; -+ -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_DOUBLE: -+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ avalue[i] = allocate_to_register_or_stack (context, stack, -+ &state, ty->type); -+ break; -+#endif -+ -+ case FFI_TYPE_STRUCT: -+ if (is_hfa (ty)) -+ { -+ unsigned n = element_count (ty); -+ if (available_v (&state) < n) -+ { -+ state.nsrn = N_V_ARG_REG; -+ avalue[i] = allocate_to_stack (&state, stack, ty->alignment, -+ ty->size); -+ } -+ else -+ { -+ switch (get_homogeneous_type (ty)) -+ { -+ case FFI_TYPE_FLOAT: -+ { -+ /* Eeek! We need a pointer to the structure, -+ however the homogeneous float elements are -+ being passed in individual S registers, -+ therefore the structure is not represented as -+ a contiguous sequence of bytes in our saved -+ register context. We need to fake up a copy -+ of the structure laid out in memory -+ correctly. The fake can be tossed once the -+ closure function has returned hence alloca() -+ is sufficient. */ -+ int j; -+ UINT32 *p = avalue[i] = alloca (ty->size); -+ for (j = 0; j < element_count (ty); j++) -+ memcpy (&p[j], -+ allocate_to_s (context, &state), -+ sizeof (*p)); -+ break; -+ } -+ -+ case FFI_TYPE_DOUBLE: -+ { -+ /* Eeek! We need a pointer to the structure, -+ however the homogeneous float elements are -+ being passed in individual S registers, -+ therefore the structure is not represented as -+ a contiguous sequence of bytes in our saved -+ register context. We need to fake up a copy -+ of the structure laid out in memory -+ correctly. The fake can be tossed once the -+ closure function has returned hence alloca() -+ is sufficient. */ -+ int j; -+ UINT64 *p = avalue[i] = alloca (ty->size); -+ for (j = 0; j < element_count (ty); j++) -+ memcpy (&p[j], -+ allocate_to_d (context, &state), -+ sizeof (*p)); -+ break; -+ } -+ -+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ memcpy (&avalue[i], -+ allocate_to_v (context, &state), -+ sizeof (*avalue)); -+ break; -+#endif -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+ } -+ } -+ else if (ty->size > 16) -+ { -+ /* Replace Composite type of size greater than 16 with a -+ pointer. */ -+ memcpy (&avalue[i], -+ allocate_to_register_or_stack (context, stack, -+ &state, FFI_TYPE_POINTER), -+ sizeof (avalue[i])); -+ } -+ else if (available_x (&state) >= (ty->size + 7) / 8) -+ { -+ avalue[i] = get_x_addr (context, state.ngrn); -+ state.ngrn += (ty->size + 7) / 8; -+ } -+ else -+ { -+ state.ngrn = N_X_ARG_REG; -+ -+ avalue[i] = allocate_to_stack (&state, stack, ty->alignment, -+ ty->size); -+ } -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+ } -+ -+ /* Figure out where the return value will be passed, either in -+ registers or in a memory block allocated by the caller and passed -+ in x8. */ -+ -+ if (is_register_candidate (cif->rtype)) -+ { -+ /* Register candidates are *always* returned in registers. */ -+ -+ /* Allocate a scratchpad for the return value, we will let the -+ callee scrible the result into the scratch pad then move the -+ contents into the appropriate return value location for the -+ call convention. */ -+ rvalue = alloca (cif->rtype->size); -+ (closure->fun) (cif, rvalue, avalue, closure->user_data); -+ -+ /* Copy the return value into the call context so that it is returned -+ as expected to our caller. */ -+ switch (cif->rtype->type) -+ { -+ case FFI_TYPE_VOID: -+ break; -+ -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_DOUBLE: -+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+#endif -+ { -+ void *addr = get_basic_type_addr (cif->rtype->type, context, 0); -+ copy_basic_type (addr, rvalue, cif->rtype->type); -+ break; -+ } -+ case FFI_TYPE_STRUCT: -+ if (is_hfa (cif->rtype)) -+ { -+ int j; -+ unsigned short type = get_homogeneous_type (cif->rtype); -+ unsigned elems = element_count (cif->rtype); -+ for (j = 0; j < elems; j++) -+ { -+ void *reg = get_basic_type_addr (type, context, j); -+ copy_basic_type (reg, rvalue, type); -+ rvalue += get_basic_type_size (type); -+ } -+ } -+ else if ((cif->rtype->size + 7) / 8 < N_X_ARG_REG) -+ { -+ size_t size = ALIGN (cif->rtype->size, sizeof (UINT64)) ; -+ memcpy (get_x_addr (context, 0), rvalue, size); -+ } -+ else -+ { -+ FFI_ASSERT (0); -+ } -+ break; -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+ } -+ else -+ { -+ memcpy (&rvalue, get_x_addr (context, 8), sizeof (UINT64)); -+ (closure->fun) (cif, rvalue, avalue, closure->user_data); -+ } -+} -+ -diff --git a/js/src/ctypes/libffi/src/aarch64/ffitarget.h b/js/src/ctypes/libffi/src/aarch64/ffitarget.h -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/aarch64/ffitarget.h -@@ -0,0 +1,59 @@ -+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+``Software''), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#ifndef LIBFFI_TARGET_H -+#define LIBFFI_TARGET_H -+ -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ -+#ifndef LIBFFI_ASM -+typedef unsigned long ffi_arg; -+typedef signed long ffi_sarg; -+ -+typedef enum ffi_abi -+ { -+ FFI_FIRST_ABI = 0, -+ FFI_SYSV, -+ FFI_LAST_ABI, -+ FFI_DEFAULT_ABI = FFI_SYSV -+ } ffi_abi; -+#endif -+ -+/* ---- Definitions for closures ----------------------------------------- */ -+ -+#define FFI_CLOSURES 1 -+#define FFI_TRAMPOLINE_SIZE 36 -+#define FFI_NATIVE_RAW_API 0 -+ -+/* ---- Internal ---- */ -+ -+ -+#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_flags -+ -+#define AARCH64_FFI_WITH_V_BIT 0 -+ -+#define AARCH64_N_XREG 32 -+#define AARCH64_N_VREG 32 -+#define AARCH64_CALL_CONTEXT_SIZE (AARCH64_N_XREG * 8 + AARCH64_N_VREG * 16) -+ -+#endif -diff --git a/js/src/ctypes/libffi/src/aarch64/sysv.S b/js/src/ctypes/libffi/src/aarch64/sysv.S -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/aarch64/sysv.S -@@ -0,0 +1,327 @@ -+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. -+ -+Permission is hereby granted, free of charge, to any person obtaining -+a copy of this software and associated documentation files (the -+``Software''), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to -+permit persons to whom the Software is furnished to do so, subject to -+the following conditions: -+ -+The above copyright notice and this permission notice shall be -+included in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+#define LIBFFI_ASM -+#include -+#include -+ -+#ifdef HAVE_MACHINE_ASM_H -+#include -+#else -+#ifdef __USER_LABEL_PREFIX__ -+#define CONCAT1(a, b) CONCAT2(a, b) -+#define CONCAT2(a, b) a ## b -+ -+/* Use the right prefix for global labels. */ -+#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x) -+#else -+#define CNAME(x) x -+#endif -+#endif -+ -+#define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off -+#define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off -+#define cfi_restore(reg) .cfi_restore reg -+#define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg -+ -+ .text -+ .globl CNAME(ffi_call_SYSV) -+#ifdef __ELF__ -+ .type CNAME(ffi_call_SYSV), #function -+#endif -+ -+/* ffi_call_SYSV() -+ -+ Create a stack frame, setup an argument context, call the callee -+ and extract the result. -+ -+ The maximum required argument stack size is provided, -+ ffi_call_SYSV() allocates that stack space then calls the -+ prepare_fn to populate register context and stack. The -+ argument passing registers are loaded from the register -+ context and the callee called, on return the register passing -+ register are saved back to the context. Our caller will -+ extract the return value from the final state of the saved -+ register context. -+ -+ Prototype: -+ -+ extern unsigned -+ ffi_call_SYSV (void (*)(struct call_context *context, unsigned char *, -+ extended_cif *), -+ struct call_context *context, -+ extended_cif *, -+ size_t required_stack_size, -+ void (*fn)(void)); -+ -+ Therefore on entry we have: -+ -+ x0 prepare_fn -+ x1 &context -+ x2 &ecif -+ x3 bytes -+ x4 fn -+ -+ This function uses the following stack frame layout: -+ -+ == -+ saved x30(lr) -+ x29(fp)-> saved x29(fp) -+ saved x24 -+ saved x23 -+ saved x22 -+ sp' -> saved x21 -+ ... -+ sp -> (constructed callee stack arguments) -+ == -+ -+ Voila! */ -+ -+#define ffi_call_SYSV_FS (8 * 4) -+ -+ .cfi_startproc -+CNAME(ffi_call_SYSV): -+ stp x29, x30, [sp, #-16]! -+ cfi_adjust_cfa_offset (16) -+ cfi_rel_offset (x29, 0) -+ cfi_rel_offset (x30, 8) -+ -+ mov x29, sp -+ cfi_def_cfa_register (x29) -+ sub sp, sp, #ffi_call_SYSV_FS -+ -+ stp x21, x22, [sp, #0] -+ cfi_rel_offset (x21, 0 - ffi_call_SYSV_FS) -+ cfi_rel_offset (x22, 8 - ffi_call_SYSV_FS) -+ -+ stp x23, x24, [sp, #16] -+ cfi_rel_offset (x23, 16 - ffi_call_SYSV_FS) -+ cfi_rel_offset (x24, 24 - ffi_call_SYSV_FS) -+ -+ mov x21, x1 -+ mov x22, x2 -+ mov x24, x4 -+ -+ /* Allocate the stack space for the actual arguments, many -+ arguments will be passed in registers, but we assume -+ worst case and allocate sufficient stack for ALL of -+ the arguments. */ -+ sub sp, sp, x3 -+ -+ /* unsigned (*prepare_fn) (struct call_context *context, -+ unsigned char *stack, extended_cif *ecif); -+ */ -+ mov x23, x0 -+ mov x0, x1 -+ mov x1, sp -+ /* x2 already in place */ -+ blr x23 -+ -+ /* Preserve the flags returned. */ -+ mov x23, x0 -+ -+ /* Figure out if we should touch the vector registers. */ -+ tbz x23, #AARCH64_FFI_WITH_V_BIT, 1f -+ -+ /* Load the vector argument passing registers. */ -+ ldp q0, q1, [x21, #8*32 + 0] -+ ldp q2, q3, [x21, #8*32 + 32] -+ ldp q4, q5, [x21, #8*32 + 64] -+ ldp q6, q7, [x21, #8*32 + 96] -+1: -+ /* Load the core argument passing registers. */ -+ ldp x0, x1, [x21, #0] -+ ldp x2, x3, [x21, #16] -+ ldp x4, x5, [x21, #32] -+ ldp x6, x7, [x21, #48] -+ -+ /* Don't forget x8 which may be holding the address of a return buffer. -+ */ -+ ldr x8, [x21, #8*8] -+ -+ blr x24 -+ -+ /* Save the core argument passing registers. */ -+ stp x0, x1, [x21, #0] -+ stp x2, x3, [x21, #16] -+ stp x4, x5, [x21, #32] -+ stp x6, x7, [x21, #48] -+ -+ /* Note nothing useful ever comes back in x8! */ -+ -+ /* Figure out if we should touch the vector registers. */ -+ tbz x23, #AARCH64_FFI_WITH_V_BIT, 1f -+ -+ /* Save the vector argument passing registers. */ -+ stp q0, q1, [x21, #8*32 + 0] -+ stp q2, q3, [x21, #8*32 + 32] -+ stp q4, q5, [x21, #8*32 + 64] -+ stp q6, q7, [x21, #8*32 + 96] -+1: -+ /* All done, unwind our stack frame. */ -+ ldp x21, x22, [x29, # - ffi_call_SYSV_FS] -+ cfi_restore (x21) -+ cfi_restore (x22) -+ -+ ldp x23, x24, [x29, # - ffi_call_SYSV_FS + 16] -+ cfi_restore (x23) -+ cfi_restore (x24) -+ -+ mov sp, x29 -+ cfi_def_cfa_register (sp) -+ -+ ldp x29, x30, [sp], #16 -+ cfi_adjust_cfa_offset (-16) -+ cfi_restore (x29) -+ cfi_restore (x30) -+ -+ ret -+ -+ .cfi_endproc -+#ifdef __ELF__ -+ .size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV) -+#endif -+ -+#define ffi_closure_SYSV_FS (8 * 2 + AARCH64_CALL_CONTEXT_SIZE) -+ -+/* ffi_closure_SYSV -+ -+ Closure invocation glue. This is the low level code invoked directly by -+ the closure trampoline to setup and call a closure. -+ -+ On entry x17 points to a struct trampoline_data, x16 has been clobbered -+ all other registers are preserved. -+ -+ We allocate a call context and save the argument passing registers, -+ then invoked the generic C ffi_closure_SYSV_inner() function to do all -+ the real work, on return we load the result passing registers back from -+ the call context. -+ -+ On entry -+ -+ extern void -+ ffi_closure_SYSV (struct trampoline_data *); -+ -+ struct trampoline_data -+ { -+ UINT64 *ffi_closure; -+ UINT64 flags; -+ }; -+ -+ This function uses the following stack frame layout: -+ -+ == -+ saved x30(lr) -+ x29(fp)-> saved x29(fp) -+ saved x22 -+ saved x21 -+ ... -+ sp -> call_context -+ == -+ -+ Voila! */ -+ -+ .text -+ .globl CNAME(ffi_closure_SYSV) -+ .cfi_startproc -+CNAME(ffi_closure_SYSV): -+ stp x29, x30, [sp, #-16]! -+ cfi_adjust_cfa_offset (16) -+ cfi_rel_offset (x29, 0) -+ cfi_rel_offset (x30, 8) -+ -+ mov x29, sp -+ cfi_def_cfa_register (x29) -+ -+ sub sp, sp, #ffi_closure_SYSV_FS -+ -+ stp x21, x22, [x29, #-16] -+ cfi_rel_offset (x21, -16) -+ cfi_rel_offset (x22, -8) -+ -+ /* Load x21 with &call_context. */ -+ mov x21, sp -+ /* Preserve our struct trampoline_data * */ -+ mov x22, x17 -+ -+ /* Save the rest of the argument passing registers. */ -+ stp x0, x1, [x21, #0] -+ stp x2, x3, [x21, #16] -+ stp x4, x5, [x21, #32] -+ stp x6, x7, [x21, #48] -+ /* Don't forget we may have been given a result scratch pad address. -+ */ -+ str x8, [x21, #64] -+ -+ /* Figure out if we should touch the vector registers. */ -+ ldr x0, [x22, #8] -+ tbz x0, #AARCH64_FFI_WITH_V_BIT, 1f -+ -+ /* Save the argument passing vector registers. */ -+ stp q0, q1, [x21, #8*32 + 0] -+ stp q2, q3, [x21, #8*32 + 32] -+ stp q4, q5, [x21, #8*32 + 64] -+ stp q6, q7, [x21, #8*32 + 96] -+1: -+ /* Load &ffi_closure.. */ -+ ldr x0, [x22, #0] -+ mov x1, x21 -+ /* Compute the location of the stack at the point that the -+ trampoline was called. */ -+ add x2, x29, #16 -+ -+ bl CNAME(ffi_closure_SYSV_inner) -+ -+ /* Figure out if we should touch the vector registers. */ -+ ldr x0, [x22, #8] -+ tbz x0, #AARCH64_FFI_WITH_V_BIT, 1f -+ -+ /* Load the result passing vector registers. */ -+ ldp q0, q1, [x21, #8*32 + 0] -+ ldp q2, q3, [x21, #8*32 + 32] -+ ldp q4, q5, [x21, #8*32 + 64] -+ ldp q6, q7, [x21, #8*32 + 96] -+1: -+ /* Load the result passing core registers. */ -+ ldp x0, x1, [x21, #0] -+ ldp x2, x3, [x21, #16] -+ ldp x4, x5, [x21, #32] -+ ldp x6, x7, [x21, #48] -+ /* Note nothing useful is returned in x8. */ -+ -+ /* We are done, unwind our frame. */ -+ ldp x21, x22, [x29, #-16] -+ cfi_restore (x21) -+ cfi_restore (x22) -+ -+ mov sp, x29 -+ cfi_def_cfa_register (sp) -+ -+ ldp x29, x30, [sp], #16 -+ cfi_adjust_cfa_offset (-16) -+ cfi_restore (x29) -+ cfi_restore (x30) -+ -+ ret -+ .cfi_endproc -+#ifdef __ELF__ -+ .size CNAME(ffi_closure_SYSV), .-CNAME(ffi_closure_SYSV) -+#endif -diff --git a/js/src/ctypes/libffi/src/alpha/ffi.c b/js/src/ctypes/libffi/src/alpha/ffi.c ---- a/js/src/ctypes/libffi/src/alpha/ffi.c -+++ b/js/src/ctypes/libffi/src/alpha/ffi.c -@@ -1,10 +1,11 @@ - /* ----------------------------------------------------------------------- -- ffi.c - Copyright (c) 1998, 2001, 2007, 2008 Red Hat, Inc. -+ ffi.c - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1998, 2001, 2007, 2008 Red Hat, Inc. - - Alpha Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -173,16 +174,19 @@ ffi_status - ffi_prep_closure_loc (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*, void*, void**, void*), - void *user_data, - void *codeloc) - { - unsigned int *tramp; - -+ if (cif->abi != FFI_OSF) -+ return FFI_BAD_ABI; -+ - tramp = (unsigned int *) &closure->tramp[0]; - tramp[0] = 0x47fb0401; /* mov $27,$1 */ - tramp[1] = 0xa77b0010; /* ldq $27,16($27) */ - tramp[2] = 0x6bfb0000; /* jmp $31,($27),0 */ - tramp[3] = 0x47ff041f; /* nop */ - *(void **) &tramp[4] = ffi_closure_osf; - - closure->cif = cif; -diff --git a/js/src/ctypes/libffi/src/alpha/ffitarget.h b/js/src/ctypes/libffi/src/alpha/ffitarget.h ---- a/js/src/ctypes/libffi/src/alpha/ffitarget.h -+++ b/js/src/ctypes/libffi/src/alpha/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1996-2003 Red Hat, Inc. - Target configuration macros for Alpha. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,16 +23,20 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - #ifndef LIBFFI_ASM - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, - FFI_OSF, - FFI_LAST_ABI, -diff --git a/js/src/ctypes/libffi/src/alpha/osf.S b/js/src/ctypes/libffi/src/alpha/osf.S ---- a/js/src/ctypes/libffi/src/alpha/osf.S -+++ b/js/src/ctypes/libffi/src/alpha/osf.S -@@ -1,10 +1,10 @@ - /* ----------------------------------------------------------------------- -- osf.S - Copyright (c) 1998, 2001, 2007, 2008 Red Hat -+ osf.S - Copyright (c) 1998, 2001, 2007, 2008, 2011 Red Hat - - Alpha/OSF Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -294,73 +294,94 @@ ffi_closure_osf: - || FFI_TYPE_SINT64 != 12 \ - || FFI_TYPE_STRUCT != 13 \ - || FFI_TYPE_POINTER != 14 \ - || FFI_TYPE_LAST != 14 - #error "osf.S out of sync with ffi.h" - #endif - - #ifdef __ELF__ -+# define UA_SI .4byte -+# define FDE_ENCODING 0x1b /* pcrel sdata4 */ -+# define FDE_ENCODE(X) .4byte X-. -+# define FDE_ARANGE(X) .4byte X -+#elif defined __osf__ -+# define UA_SI .align 0; .long -+# define FDE_ENCODING 0x50 /* aligned absolute */ -+# define FDE_ENCODE(X) .align 3; .quad X -+# define FDE_ARANGE(X) .align 0; .quad X -+#endif -+ -+#ifdef __ELF__ - .section .eh_frame,EH_FRAME_FLAGS,@progbits -+#elif defined __osf__ -+ .data -+ .align 3 -+ .globl _GLOBAL__F_ffi_call_osf -+_GLOBAL__F_ffi_call_osf: -+#endif - __FRAME_BEGIN__: -- .4byte $LECIE1-$LSCIE1 # Length of Common Information Entry -+ UA_SI $LECIE1-$LSCIE1 # Length of Common Information Entry - $LSCIE1: -- .4byte 0x0 # CIE Identifier Tag -+ UA_SI 0x0 # CIE Identifier Tag - .byte 0x1 # CIE Version - .ascii "zR\0" # CIE Augmentation - .byte 0x1 # uleb128 0x1; CIE Code Alignment Factor - .byte 0x78 # sleb128 -8; CIE Data Alignment Factor - .byte 26 # CIE RA Column - .byte 0x1 # uleb128 0x1; Augmentation size -- .byte 0x1b # FDE Encoding (pcrel sdata4) -+ .byte FDE_ENCODING # FDE Encoding - .byte 0xc # DW_CFA_def_cfa - .byte 30 # uleb128 column 30 - .byte 0 # uleb128 offset 0 - .align 3 - $LECIE1: - $LSFDE1: -- .4byte $LEFDE1-$LASFDE1 # FDE Length -+ UA_SI $LEFDE1-$LASFDE1 # FDE Length - $LASFDE1: -- .4byte $LASFDE1-__FRAME_BEGIN__ # FDE CIE offset -- .4byte $LFB1-. # FDE initial location -- .4byte $LFE1-$LFB1 # FDE address range -+ UA_SI $LASFDE1-__FRAME_BEGIN__ # FDE CIE offset -+ FDE_ENCODE($LFB1) # FDE initial location -+ FDE_ARANGE($LFE1-$LFB1) # FDE address range - .byte 0x0 # uleb128 0x0; Augmentation size - - .byte 0x4 # DW_CFA_advance_loc4 -- .4byte $LCFI1-$LFB1 -+ UA_SI $LCFI1-$LFB1 - .byte 0x9a # DW_CFA_offset, column 26 - .byte 4 # uleb128 4*-8 - .byte 0x8f # DW_CFA_offset, column 15 - .byte 0x3 # uleb128 3*-8 - .byte 0xc # DW_CFA_def_cfa - .byte 15 # uleb128 column 15 - .byte 32 # uleb128 offset 32 - - .byte 0x4 # DW_CFA_advance_loc4 -- .4byte $LCFI2-$LCFI1 -+ UA_SI $LCFI2-$LCFI1 - .byte 0xda # DW_CFA_restore, column 26 - .align 3 - $LEFDE1: - - $LSFDE3: -- .4byte $LEFDE3-$LASFDE3 # FDE Length -+ UA_SI $LEFDE3-$LASFDE3 # FDE Length - $LASFDE3: -- .4byte $LASFDE3-__FRAME_BEGIN__ # FDE CIE offset -- .4byte $LFB2-. # FDE initial location -- .4byte $LFE2-$LFB2 # FDE address range -+ UA_SI $LASFDE3-__FRAME_BEGIN__ # FDE CIE offset -+ FDE_ENCODE($LFB2) # FDE initial location -+ FDE_ARANGE($LFE2-$LFB2) # FDE address range - .byte 0x0 # uleb128 0x0; Augmentation size - - .byte 0x4 # DW_CFA_advance_loc4 -- .4byte $LCFI5-$LFB2 -+ UA_SI $LCFI5-$LFB2 - .byte 0xe # DW_CFA_def_cfa_offset - .byte 0x80,0x1 # uleb128 128 - - .byte 0x4 # DW_CFA_advance_loc4 -- .4byte $LCFI6-$LCFI5 -+ UA_SI $LCFI6-$LCFI5 - .byte 0x9a # DW_CFA_offset, column 26 - .byte 16 # uleb128 offset 16*-8 - .align 3 - $LEFDE3: -+#if defined __osf__ -+ .align 0 -+ .long 0 # End of Table -+#endif - --#ifdef __linux__ -+#if defined __ELF__ && defined __linux__ - .section .note.GNU-stack,"",@progbits - #endif --#endif -diff --git a/js/src/ctypes/libffi/src/arc/arcompact.S b/js/src/ctypes/libffi/src/arc/arcompact.S -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/arc/arcompact.S -@@ -0,0 +1,135 @@ -+/* ----------------------------------------------------------------------- -+ arcompact.S - Copyright (c) 2013 Synposys, Inc. (www.synopsys.com) -+ -+ ARCompact Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#define LIBFFI_ASM -+#include -+#include -+#ifdef HAVE_MACHINE_ASM_H -+#include -+#else -+#define CNAME(x) x -+#define ENTRY(x) .globl CNAME(x)` .type CNAME(x),%function` CNAME(x): -+#endif -+ -+.text -+ -+ /* R0: ffi_prep_args */ -+ /* R1: &ecif */ -+ /* R2: cif->bytes */ -+ /* R3: fig->flags */ -+ /* R4: ecif.rvalue */ -+ /* R5: fn */ -+ENTRY(ffi_call_ARCompact) -+ /* Save registers. */ -+ st.a fp, [sp, -4] /* fp + 20, fp */ -+ push_s blink /* fp + 16, blink */ -+ st.a r4, [sp, -4] /* fp + 12, ecif.rvalue */ -+ push_s r3 /* fp + 8, fig->flags */ -+ st.a r5, [sp, -4] /* fp + 4, fn */ -+ push_s r2 /* fp + 0, cif->bytes */ -+ mov fp, sp -+ -+ /* Make room for all of the new args. */ -+ sub sp, sp, r2 -+ -+ /* Place all of the ffi_prep_args in position. */ -+ /* ffi_prep_args(char *stack, extended_cif *ecif) */ -+ /* R1 already set. */ -+ -+ /* And call. */ -+ jl_s.d [r0] -+ mov_s r0, sp -+ -+ ld.ab r12, [fp, 4] /* cif->bytes */ -+ ld.ab r11, [fp, 4] /* fn */ -+ -+ /* Move first 8 parameters in registers... */ -+ ld_s r0, [sp] -+ ld_s r1, [sp, 4] -+ ld_s r2, [sp, 8] -+ ld_s r3, [sp, 12] -+ ld r4, [sp, 16] -+ ld r5, [sp, 20] -+ ld r6, [sp, 24] -+ ld r7, [sp, 28] -+ -+ /* ...and adjust the stack. */ -+ min r12, r12, 32 -+ -+ /* Call the function. */ -+ jl.d [r11] -+ add sp, sp, r12 -+ -+ mov sp, fp -+ pop_s r3 /* fig->flags, return type */ -+ pop_s r2 /* ecif.rvalue, pointer for return value */ -+ -+ /* If the return value pointer is NULL, assume no return value. */ -+ breq.d r2, 0, epilogue -+ pop_s blink -+ -+ /* Return INT. */ -+ brne r3, FFI_TYPE_INT, return_double -+ b.d epilogue -+ st_s r0, [r2] -+ -+return_double: -+ brne r3, FFI_TYPE_DOUBLE, epilogue -+ st_s r0, [r2] -+ st_s r1, [r2,4] -+ -+epilogue: -+ j_s.d [blink] -+ ld.ab fp, [sp, 4] -+ -+ENTRY(ffi_closure_ARCompact) -+ st.a r0, [sp, -32] -+ st_s r1, [sp, 4] -+ st_s r2, [sp, 8] -+ st_s r3, [sp, 12] -+ st r4, [sp, 16] -+ st r5, [sp, 20] -+ st r6, [sp, 24] -+ st r7, [sp, 28] -+ -+ /* pointer to arguments */ -+ mov_s r2, sp -+ -+ /* return value goes here */ -+ sub sp, sp, 8 -+ mov_s r1, sp -+ -+ push_s blink -+ -+ bl.d ffi_closure_inner_ARCompact -+ mov_s r0, r8 /* codeloc, set by trampoline */ -+ -+ pop_s blink -+ -+ /* set return value to r1:r0 */ -+ pop_s r0 -+ pop_s r1 -+ j_s.d [blink] -+ add_s sp, sp, 32 -diff --git a/js/src/ctypes/libffi/src/arc/ffi.c b/js/src/ctypes/libffi/src/arc/ffi.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/arc/ffi.c -@@ -0,0 +1,268 @@ -+/* ----------------------------------------------------------------------- -+ ffi.c - Copyright (c) 2013 Synopsys, Inc. (www.synopsys.com) -+ -+ ARC Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#include -+#include -+ -+#include -+#include -+ -+#include -+ -+/* for little endian ARC, the code is in fact stored as mixed endian for -+ performance reasons */ -+#if __BIG_ENDIAN__ -+#define CODE_ENDIAN(x) (x) -+#else -+#define CODE_ENDIAN(x) ( (((uint32_t) (x)) << 16) | (((uint32_t) (x)) >> 16)) -+#endif -+ -+/* ffi_prep_args is called by the assembly routine once stack -+ space has been allocated for the function's arguments. */ -+ -+void -+ffi_prep_args (char *stack, extended_cif * ecif) -+{ -+ unsigned int i; -+ int tmp; -+ void **p_argv; -+ char *argp; -+ ffi_type **p_arg; -+ -+ tmp = 0; -+ argp = stack; -+ -+ if (ecif->cif->rtype->type == FFI_TYPE_STRUCT) -+ { -+ *(void **) argp = ecif->rvalue; -+ argp += 4; -+ } -+ -+ p_argv = ecif->avalue; -+ -+ for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; -+ (i != 0); i--, p_arg++) -+ { -+ size_t z; -+ int alignment; -+ -+ /* align alignment to 4 */ -+ alignment = (((*p_arg)->alignment - 1) | 3) + 1; -+ -+ /* Align if necessary. */ -+ if ((alignment - 1) & (unsigned) argp) -+ argp = (char *) ALIGN (argp, alignment); -+ -+ z = (*p_arg)->size; -+ if (z < sizeof (int)) -+ { -+ z = sizeof (int); -+ -+ switch ((*p_arg)->type) -+ { -+ case FFI_TYPE_SINT8: -+ *(signed int *) argp = (signed int) *(SINT8 *) (*p_argv); -+ break; -+ -+ case FFI_TYPE_UINT8: -+ *(unsigned int *) argp = (unsigned int) *(UINT8 *) (*p_argv); -+ break; -+ -+ case FFI_TYPE_SINT16: -+ *(signed int *) argp = (signed int) *(SINT16 *) (*p_argv); -+ break; -+ -+ case FFI_TYPE_UINT16: -+ *(unsigned int *) argp = (unsigned int) *(UINT16 *) (*p_argv); -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ memcpy (argp, *p_argv, (*p_arg)->size); -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ } -+ } -+ else if (z == sizeof (int)) -+ { -+ *(unsigned int *) argp = (unsigned int) *(UINT32 *) (*p_argv); -+ } -+ else -+ { -+ if ((*p_arg)->type == FFI_TYPE_STRUCT) -+ { -+ memcpy (argp, *p_argv, z); -+ } -+ else -+ { -+ /* Double or long long 64bit. */ -+ memcpy (argp, *p_argv, z); -+ } -+ } -+ p_argv++; -+ argp += z; -+ } -+ -+ return; -+} -+ -+/* Perform machine dependent cif processing. */ -+ffi_status -+ffi_prep_cif_machdep (ffi_cif * cif) -+{ -+ /* Set the return type flag. */ -+ switch (cif->rtype->type) -+ { -+ case FFI_TYPE_VOID: -+ cif->flags = (unsigned) cif->rtype->type; -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ cif->flags = (unsigned) cif->rtype->type; -+ break; -+ -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_DOUBLE: -+ cif->flags = FFI_TYPE_DOUBLE; -+ break; -+ -+ case FFI_TYPE_FLOAT: -+ default: -+ cif->flags = FFI_TYPE_INT; -+ break; -+ } -+ -+ return FFI_OK; -+} -+ -+extern void ffi_call_ARCompact (void (*)(char *, extended_cif *), -+ extended_cif *, unsigned, unsigned, -+ unsigned *, void (*fn) (void)); -+ -+void -+ffi_call (ffi_cif * cif, void (*fn) (void), void *rvalue, void **avalue) -+{ -+ extended_cif ecif; -+ -+ ecif.cif = cif; -+ ecif.avalue = avalue; -+ -+ /* If the return value is a struct and we don't have -+ a return value address then we need to make one. */ -+ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) -+ { -+ ecif.rvalue = alloca (cif->rtype->size); -+ } -+ else -+ ecif.rvalue = rvalue; -+ -+ switch (cif->abi) -+ { -+ case FFI_ARCOMPACT: -+ ffi_call_ARCompact (ffi_prep_args, &ecif, cif->bytes, -+ cif->flags, ecif.rvalue, fn); -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+} -+ -+int -+ffi_closure_inner_ARCompact (ffi_closure * closure, void *rvalue, -+ ffi_arg * args) -+{ -+ void **arg_area, **p_argv; -+ ffi_cif *cif = closure->cif; -+ char *argp = (char *) args; -+ ffi_type **p_argt; -+ int i; -+ -+ arg_area = (void **) alloca (cif->nargs * sizeof (void *)); -+ -+ /* handle hidden argument */ -+ if (cif->flags == FFI_TYPE_STRUCT) -+ { -+ rvalue = *(void **) argp; -+ argp += 4; -+ } -+ -+ p_argv = arg_area; -+ -+ for (i = 0, p_argt = cif->arg_types; i < cif->nargs; -+ i++, p_argt++, p_argv++) -+ { -+ size_t z; -+ int alignment; -+ -+ /* align alignment to 4 */ -+ alignment = (((*p_argt)->alignment - 1) | 3) + 1; -+ -+ /* Align if necessary. */ -+ if ((alignment - 1) & (unsigned) argp) -+ argp = (char *) ALIGN (argp, alignment); -+ -+ z = (*p_argt)->size; -+ *p_argv = (void *) argp; -+ argp += z; -+ } -+ -+ (closure->fun) (cif, rvalue, arg_area, closure->user_data); -+ -+ return cif->flags; -+} -+ -+extern void ffi_closure_ARCompact (void); -+ -+ffi_status -+ffi_prep_closure_loc (ffi_closure * closure, ffi_cif * cif, -+ void (*fun) (ffi_cif *, void *, void **, void *), -+ void *user_data, void *codeloc) -+{ -+ uint32_t *tramp = (uint32_t *) & (closure->tramp[0]); -+ -+ switch (cif->abi) -+ { -+ case FFI_ARCOMPACT: -+ FFI_ASSERT (tramp == codeloc); -+ tramp[0] = CODE_ENDIAN (0x200a1fc0); /* mov r8, pcl */ -+ tramp[1] = CODE_ENDIAN (0x20200f80); /* j [long imm] */ -+ tramp[2] = CODE_ENDIAN (ffi_closure_ARCompact); -+ break; -+ -+ default: -+ return FFI_BAD_ABI; -+ } -+ -+ closure->cif = cif; -+ closure->fun = fun; -+ closure->user_data = user_data; -+ cacheflush (codeloc, FFI_TRAMPOLINE_SIZE, BCACHE); -+ -+ return FFI_OK; -+} -diff --git a/js/src/ctypes/libffi/src/arc/ffitarget.h b/js/src/ctypes/libffi/src/arc/ffitarget.h -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/arc/ffitarget.h -@@ -0,0 +1,53 @@ -+/* ----------------------------------------------------------------------- -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 2013 Synopsys, Inc. (www.synopsys.com) -+ Target configuration macros for ARC. -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+ -+ ----------------------------------------------------------------------- */ -+ -+#ifndef LIBFFI_TARGET_H -+#define LIBFFI_TARGET_H -+ -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ -+/* ---- Generic type definitions ----------------------------------------- */ -+ -+#ifndef LIBFFI_ASM -+typedef unsigned long ffi_arg; -+typedef signed long ffi_sarg; -+ -+typedef enum ffi_abi -+{ -+ FFI_FIRST_ABI = 0, -+ FFI_ARCOMPACT, -+ FFI_LAST_ABI, -+ FFI_DEFAULT_ABI = FFI_ARCOMPACT -+} ffi_abi; -+#endif -+ -+#define FFI_CLOSURES 1 -+#define FFI_TRAMPOLINE_SIZE 12 -+#define FFI_NATIVE_RAW_API 0 -+ -+#endif -diff --git a/js/src/ctypes/libffi/src/arm/ffi.c b/js/src/ctypes/libffi/src/arm/ffi.c ---- a/js/src/ctypes/libffi/src/arm/ffi.c -+++ b/js/src/ctypes/libffi/src/arm/ffi.c -@@ -1,12 +1,16 @@ - /* ----------------------------------------------------------------------- -- ffi.c - Copyright (c) 1998, 2008 Red Hat, Inc. -- -- ARM Foreign Function Interface -+ ffi.c - Copyright (c) 2011 Timothy Wall -+ Copyright (c) 2011 Plausible Labs Cooperative, Inc. -+ Copyright (c) 2011 Anthony Green -+ Copyright (c) 2011 Free Software Foundation -+ Copyright (c) 1998, 2008, 2011 Red Hat, Inc. -+ -+ ARM Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: -@@ -28,110 +32,205 @@ - #include - - #include - - /* Forward declares. */ - static int vfp_type_p (ffi_type *); - static void layout_vfp_args (ffi_cif *); - -+int ffi_prep_args_SYSV(char *stack, extended_cif *ecif, float *vfp_space); -+int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space); -+ -+static char* ffi_align(ffi_type **p_arg, char *argp) -+{ -+ /* Align if necessary */ -+ register size_t alignment = (*p_arg)->alignment; -+ if (alignment < 4) -+ { -+ alignment = 4; -+ } -+#ifdef _WIN32_WCE -+ if (alignment > 4) -+ { -+ alignment = 4; -+ } -+#endif -+ if ((alignment - 1) & (unsigned) argp) -+ { -+ argp = (char *) ALIGN(argp, alignment); -+ } -+ -+ if ((*p_arg)->type == FFI_TYPE_STRUCT) -+ { -+ argp = (char *) ALIGN(argp, 4); -+ } -+ return argp; -+} -+ -+static size_t ffi_put_arg(ffi_type **arg_type, void **arg, char *stack) -+{ -+ register char* argp = stack; -+ register ffi_type **p_arg = arg_type; -+ register void **p_argv = arg; -+ register size_t z = (*p_arg)->size; -+ if (z < sizeof(int)) -+ { -+ z = sizeof(int); -+ switch ((*p_arg)->type) -+ { -+ case FFI_TYPE_SINT8: -+ *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); -+ break; -+ -+ case FFI_TYPE_UINT8: -+ *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); -+ break; -+ -+ case FFI_TYPE_SINT16: -+ *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); -+ break; -+ -+ case FFI_TYPE_UINT16: -+ *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ memcpy(argp, *p_argv, (*p_arg)->size); -+ break; -+ -+ default: -+ FFI_ASSERT(0); -+ } -+ } -+ else if (z == sizeof(int)) -+ { -+ if ((*p_arg)->type == FFI_TYPE_FLOAT) -+ *(float *) argp = *(float *)(* p_argv); -+ else -+ *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); -+ } -+ else if (z == sizeof(double) && (*p_arg)->type == FFI_TYPE_DOUBLE) -+ { -+ *(double *) argp = *(double *)(* p_argv); -+ } -+ else -+ { -+ memcpy(argp, *p_argv, z); -+ } -+ return z; -+} - /* ffi_prep_args is called by the assembly routine once stack space - has been allocated for the function's arguments - - The vfp_space parameter is the load area for VFP regs, the return - value is cif->vfp_used (word bitset of VFP regs used for passing - arguments). These are only used for the VFP hard-float ABI. - */ --int ffi_prep_args(char *stack, extended_cif *ecif, float *vfp_space) -+int ffi_prep_args_SYSV(char *stack, extended_cif *ecif, float *vfp_space) - { -- register unsigned int i, vi = 0; -+ register unsigned int i; - register void **p_argv; - register char *argp; - register ffi_type **p_arg; -- - argp = stack; -+ - - if ( ecif->cif->flags == FFI_TYPE_STRUCT ) { - *(void **) argp = ecif->rvalue; - argp += 4; - } - - p_argv = ecif->avalue; - - for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; - (i != 0); -- i--, p_arg++) -+ i--, p_arg++, p_argv++) - { -- size_t z; -+ argp = ffi_align(p_arg, argp); -+ argp += ffi_put_arg(p_arg, p_argv, argp); -+ } -+ -+ return 0; -+} -+ -+int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space) -+{ -+ // make sure we are using FFI_VFP -+ FFI_ASSERT(ecif->cif->abi == FFI_VFP); -+ -+ register unsigned int i, vi = 0; -+ register void **p_argv; -+ register char *argp, *regp, *eo_regp; -+ register ffi_type **p_arg; -+ char stack_used = 0; -+ char done_with_regs = 0; -+ char is_vfp_type; -+ -+ /* the first 4 words on the stack are used for values passed in core -+ * registers. */ -+ regp = stack; -+ eo_regp = argp = regp + 16; -+ -+ -+ /* if the function returns an FFI_TYPE_STRUCT in memory, that address is -+ * passed in r0 to the function */ -+ if ( ecif->cif->flags == FFI_TYPE_STRUCT ) { -+ *(void **) regp = ecif->rvalue; -+ regp += 4; -+ } -+ -+ p_argv = ecif->avalue; -+ -+ for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; -+ (i != 0); -+ i--, p_arg++, p_argv++) -+ { -+ is_vfp_type = vfp_type_p (*p_arg); - - /* Allocated in VFP registers. */ -- if (ecif->cif->abi == FFI_VFP -- && vi < ecif->cif->vfp_nargs && vfp_type_p (*p_arg)) -- { -- float* vfp_slot = vfp_space + ecif->cif->vfp_args[vi++]; -- if ((*p_arg)->type == FFI_TYPE_FLOAT) -- *((float*)vfp_slot) = *((float*)*p_argv); -- else if ((*p_arg)->type == FFI_TYPE_DOUBLE) -- *((double*)vfp_slot) = *((double*)*p_argv); -- else -- memcpy(vfp_slot, *p_argv, (*p_arg)->size); -- p_argv++; -- continue; -- } -- -- /* Align if necessary */ -- if (((*p_arg)->alignment - 1) & (unsigned) argp) { -- argp = (char *) ALIGN(argp, (*p_arg)->alignment); -- } -- -- if ((*p_arg)->type == FFI_TYPE_STRUCT) -- argp = (char *) ALIGN(argp, 4); -- -- z = (*p_arg)->size; -- if (z < sizeof(int)) -- { -- z = sizeof(int); -- switch ((*p_arg)->type) -- { -- case FFI_TYPE_SINT8: -- *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); -- break; -- -- case FFI_TYPE_UINT8: -- *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); -- break; -- -- case FFI_TYPE_SINT16: -- *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); -- break; -- -- case FFI_TYPE_UINT16: -- *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); -- break; -- -- case FFI_TYPE_STRUCT: -- memcpy(argp, *p_argv, (*p_arg)->size); -- break; -- -- default: -- FFI_ASSERT(0); -- } -- } -- else if (z == sizeof(int)) -- { -- *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); -- } -- else -- { -- memcpy(argp, *p_argv, z); -- } -- p_argv++; -- argp += z; -+ if(vi < ecif->cif->vfp_nargs && is_vfp_type) -+ { -+ char *vfp_slot = (char *)(vfp_space + ecif->cif->vfp_args[vi++]); -+ ffi_put_arg(p_arg, p_argv, vfp_slot); -+ continue; -+ } -+ /* Try allocating in core registers. */ -+ else if (!done_with_regs && !is_vfp_type) -+ { -+ char *tregp = ffi_align(p_arg, regp); -+ size_t size = (*p_arg)->size; -+ size = (size < 4)? 4 : size; // pad -+ /* Check if there is space left in the aligned register area to place -+ * the argument */ -+ if(tregp + size <= eo_regp) -+ { -+ regp = tregp + ffi_put_arg(p_arg, p_argv, tregp); -+ done_with_regs = (regp == argp); -+ // ensure we did not write into the stack area -+ FFI_ASSERT(regp <= argp); -+ continue; -+ } -+ /* In case there are no arguments in the stack area yet, -+ the argument is passed in the remaining core registers and on the -+ stack. */ -+ else if (!stack_used) -+ { -+ stack_used = 1; -+ done_with_regs = 1; -+ argp = tregp + ffi_put_arg(p_arg, p_argv, tregp); -+ FFI_ASSERT(eo_regp < argp); -+ continue; -+ } -+ } -+ /* Base case, arguments are passed on the stack */ -+ stack_used = 1; -+ argp = ffi_align(p_arg, argp); -+ argp += ffi_put_arg(p_arg, p_argv, argp); - } -- - /* Indicate the VFP registers used. */ - return ecif->cif->vfp_used; - } - - /* Perform machine dependent cif processing */ - ffi_status ffi_prep_cif_machdep(ffi_cif *cif) - { - int type_code; -@@ -181,36 +280,48 @@ ffi_status ffi_prep_cif_machdep(ffi_cif - The VFP hard-float calling conventions are slightly more sophisticated than - the base calling conventions, so we do it here instead of in ffi_prep_args(). */ - if (cif->abi == FFI_VFP) - layout_vfp_args (cif); - - return FFI_OK; - } - -+/* Perform machine dependent cif processing for variadic calls */ -+ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, -+ unsigned int nfixedargs, -+ unsigned int ntotalargs) -+{ -+ /* VFP variadic calls actually use the SYSV ABI */ -+ if (cif->abi == FFI_VFP) -+ cif->abi = FFI_SYSV; -+ -+ return ffi_prep_cif_machdep(cif); -+} -+ - /* Prototypes for assembly functions, in sysv.S */ - extern void ffi_call_SYSV (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *); - extern void ffi_call_VFP (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *); - - void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) - { - extended_cif ecif; - - int small_struct = (cif->flags == FFI_TYPE_INT - && cif->rtype->type == FFI_TYPE_STRUCT); - int vfp_struct = (cif->flags == FFI_TYPE_STRUCT_VFP_FLOAT - || cif->flags == FFI_TYPE_STRUCT_VFP_DOUBLE); - -+ unsigned int temp; -+ - ecif.cif = cif; - ecif.avalue = avalue; - -- unsigned int temp; -- - /* If the return value is a struct and we don't have a return */ -- /* value address then we need to make one */ -+ /* value address then we need to make one */ - - if ((rvalue == NULL) && - (cif->flags == FFI_TYPE_STRUCT)) - { - ecif.rvalue = alloca(cif->rtype->size); - } - else if (small_struct) - ecif.rvalue = &temp; -@@ -224,159 +335,473 @@ void ffi_call(ffi_cif *cif, void (*fn)(v - - switch (cif->abi) - { - case FFI_SYSV: - ffi_call_SYSV (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue); - break; - - case FFI_VFP: -+#ifdef __ARM_EABI__ - ffi_call_VFP (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue); - break; -+#endif - - default: - FFI_ASSERT(0); - break; - } - if (small_struct) -- memcpy (rvalue, &temp, cif->rtype->size); -+ { -+ FFI_ASSERT(rvalue != NULL); -+ memcpy (rvalue, &temp, cif->rtype->size); -+ } -+ - else if (vfp_struct) -- memcpy (rvalue, ecif.rvalue, cif->rtype->size); -+ { -+ FFI_ASSERT(rvalue != NULL); -+ memcpy (rvalue, ecif.rvalue, cif->rtype->size); -+ } -+ - } - - /** private members **/ - - static void ffi_prep_incoming_args_SYSV (char *stack, void **ret, - void** args, ffi_cif* cif, float *vfp_stack); - -+static void ffi_prep_incoming_args_VFP (char *stack, void **ret, -+ void** args, ffi_cif* cif, float *vfp_stack); -+ - void ffi_closure_SYSV (ffi_closure *); - - void ffi_closure_VFP (ffi_closure *); - - /* This function is jumped to by the trampoline */ - --unsigned int --ffi_closure_SYSV_inner (closure, respp, args, vfp_args) -- ffi_closure *closure; -- void **respp; -- void *args; -- void *vfp_args; -+unsigned int FFI_HIDDEN -+ffi_closure_inner (ffi_closure *closure, -+ void **respp, void *args, void *vfp_args) - { - // our various things... - ffi_cif *cif; - void **arg_area; - - cif = closure->cif; - arg_area = (void**) alloca (cif->nargs * sizeof (void*)); - - /* this call will initialize ARG_AREA, such that each - * element in that array points to the corresponding - * value on the stack; and if the function returns - * a structure, it will re-set RESP to point to the - * structure return address. */ -- -- ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args); -+ if (cif->abi == FFI_VFP) -+ ffi_prep_incoming_args_VFP(args, respp, arg_area, cif, vfp_args); -+ else -+ ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args); - - (closure->fun) (cif, *respp, arg_area, closure->user_data); - - return cif->flags; - } - - /*@-exportheader@*/ - static void - ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, - void **avalue, ffi_cif *cif, - /* Used only under VFP hard-float ABI. */ - float *vfp_stack) - /*@=exportheader@*/ - { -- register unsigned int i, vi = 0; -+ register unsigned int i; - register void **p_argv; - register char *argp; - register ffi_type **p_arg; - - argp = stack; - - if ( cif->flags == FFI_TYPE_STRUCT ) { - *rvalue = *(void **) argp; - argp += 4; - } - - p_argv = avalue; - - for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) - { - size_t z; -- size_t alignment; -- -- if (cif->abi == FFI_VFP -- && vi < cif->vfp_nargs && vfp_type_p (*p_arg)) -- { -- *p_argv++ = (void*)(vfp_stack + cif->vfp_args[vi++]); -- continue; -- } - -- alignment = (*p_arg)->alignment; -- if (alignment < 4) -- alignment = 4; -- /* Align if necessary */ -- if ((alignment - 1) & (unsigned) argp) { -- argp = (char *) ALIGN(argp, alignment); -- } -+ argp = ffi_align(p_arg, argp); - - z = (*p_arg)->size; - - /* because we're little endian, this is what it turns into. */ - - *p_argv = (void*) argp; - - p_argv++; - argp += z; - } - - return; - } - -+/*@-exportheader@*/ -+static void -+ffi_prep_incoming_args_VFP(char *stack, void **rvalue, -+ void **avalue, ffi_cif *cif, -+ /* Used only under VFP hard-float ABI. */ -+ float *vfp_stack) -+/*@=exportheader@*/ -+{ -+ register unsigned int i, vi = 0; -+ register void **p_argv; -+ register char *argp, *regp, *eo_regp; -+ register ffi_type **p_arg; -+ char done_with_regs = 0; -+ char stack_used = 0; -+ char is_vfp_type; -+ -+ FFI_ASSERT(cif->abi == FFI_VFP); -+ regp = stack; -+ eo_regp = argp = regp + 16; -+ -+ if ( cif->flags == FFI_TYPE_STRUCT ) { -+ *rvalue = *(void **) regp; -+ regp += 4; -+ } -+ -+ p_argv = avalue; -+ -+ for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) -+ { -+ size_t z; -+ is_vfp_type = vfp_type_p (*p_arg); -+ -+ if(vi < cif->vfp_nargs && is_vfp_type) -+ { -+ *p_argv++ = (void*)(vfp_stack + cif->vfp_args[vi++]); -+ continue; -+ } -+ else if (!done_with_regs && !is_vfp_type) -+ { -+ char* tregp = ffi_align(p_arg, regp); -+ -+ z = (*p_arg)->size; -+ z = (z < 4)? 4 : z; // pad -+ -+ /* if the arguments either fits into the registers or uses registers -+ * and stack, while we haven't read other things from the stack */ -+ if(tregp + z <= eo_regp || !stack_used) -+ { -+ /* because we're little endian, this is what it turns into. */ -+ *p_argv = (void*) tregp; -+ -+ p_argv++; -+ regp = tregp + z; -+ // if we read past the last core register, make sure we have not read -+ // from the stack before and continue reading after regp -+ if(regp > eo_regp) -+ { -+ if(stack_used) -+ { -+ abort(); // we should never read past the end of the register -+ // are if the stack is already in use -+ } -+ argp = regp; -+ } -+ if(regp >= eo_regp) -+ { -+ done_with_regs = 1; -+ stack_used = 1; -+ } -+ continue; -+ } -+ } -+ stack_used = 1; -+ -+ argp = ffi_align(p_arg, argp); -+ -+ z = (*p_arg)->size; -+ -+ /* because we're little endian, this is what it turns into. */ -+ -+ *p_argv = (void*) argp; -+ -+ p_argv++; -+ argp += z; -+ } -+ -+ return; -+} -+ - /* How to make a trampoline. */ - -+extern unsigned int ffi_arm_trampoline[3]; -+ -+#if FFI_EXEC_TRAMPOLINE_TABLE -+ -+#include -+#include -+#include -+#include -+ -+extern void *ffi_closure_trampoline_table_page; -+ -+typedef struct ffi_trampoline_table ffi_trampoline_table; -+typedef struct ffi_trampoline_table_entry ffi_trampoline_table_entry; -+ -+struct ffi_trampoline_table { -+ /* contiguous writable and executable pages */ -+ vm_address_t config_page; -+ vm_address_t trampoline_page; -+ -+ /* free list tracking */ -+ uint16_t free_count; -+ ffi_trampoline_table_entry *free_list; -+ ffi_trampoline_table_entry *free_list_pool; -+ -+ ffi_trampoline_table *prev; -+ ffi_trampoline_table *next; -+}; -+ -+struct ffi_trampoline_table_entry { -+ void *(*trampoline)(); -+ ffi_trampoline_table_entry *next; -+}; -+ -+/* Override the standard architecture trampoline size */ -+// XXX TODO - Fix -+#undef FFI_TRAMPOLINE_SIZE -+#define FFI_TRAMPOLINE_SIZE 12 -+ -+/* The trampoline configuration is placed at 4080 bytes prior to the trampoline's entry point */ -+#define FFI_TRAMPOLINE_CODELOC_CONFIG(codeloc) ((void **) (((uint8_t *) codeloc) - 4080)); -+ -+/* The first 16 bytes of the config page are unused, as they are unaddressable from the trampoline page. */ -+#define FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET 16 -+ -+/* Total number of trampolines that fit in one trampoline table */ -+#define FFI_TRAMPOLINE_COUNT ((PAGE_SIZE - FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET) / FFI_TRAMPOLINE_SIZE) -+ -+static pthread_mutex_t ffi_trampoline_lock = PTHREAD_MUTEX_INITIALIZER; -+static ffi_trampoline_table *ffi_trampoline_tables = NULL; -+ -+static ffi_trampoline_table * -+ffi_trampoline_table_alloc () -+{ -+ ffi_trampoline_table *table = NULL; -+ -+ /* Loop until we can allocate two contiguous pages */ -+ while (table == NULL) { -+ vm_address_t config_page = 0x0; -+ kern_return_t kt; -+ -+ /* Try to allocate two pages */ -+ kt = vm_allocate (mach_task_self (), &config_page, PAGE_SIZE*2, VM_FLAGS_ANYWHERE); -+ if (kt != KERN_SUCCESS) { -+ fprintf(stderr, "vm_allocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__); -+ break; -+ } -+ -+ /* Now drop the second half of the allocation to make room for the trampoline table */ -+ vm_address_t trampoline_page = config_page+PAGE_SIZE; -+ kt = vm_deallocate (mach_task_self (), trampoline_page, PAGE_SIZE); -+ if (kt != KERN_SUCCESS) { -+ fprintf(stderr, "vm_deallocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__); -+ break; -+ } -+ -+ /* Remap the trampoline table to directly follow the config page */ -+ vm_prot_t cur_prot; -+ vm_prot_t max_prot; -+ -+ kt = vm_remap (mach_task_self (), &trampoline_page, PAGE_SIZE, 0x0, FALSE, mach_task_self (), (vm_address_t) &ffi_closure_trampoline_table_page, FALSE, &cur_prot, &max_prot, VM_INHERIT_SHARE); -+ -+ /* If we lost access to the destination trampoline page, drop our config allocation mapping and retry */ -+ if (kt != KERN_SUCCESS) { -+ /* Log unexpected failures */ -+ if (kt != KERN_NO_SPACE) { -+ fprintf(stderr, "vm_remap() failure: %d at %s:%d\n", kt, __FILE__, __LINE__); -+ } -+ -+ vm_deallocate (mach_task_self (), config_page, PAGE_SIZE); -+ continue; -+ } -+ -+ /* We have valid trampoline and config pages */ -+ table = calloc (1, sizeof(ffi_trampoline_table)); -+ table->free_count = FFI_TRAMPOLINE_COUNT; -+ table->config_page = config_page; -+ table->trampoline_page = trampoline_page; -+ -+ /* Create and initialize the free list */ -+ table->free_list_pool = calloc(FFI_TRAMPOLINE_COUNT, sizeof(ffi_trampoline_table_entry)); -+ -+ uint16_t i; -+ for (i = 0; i < table->free_count; i++) { -+ ffi_trampoline_table_entry *entry = &table->free_list_pool[i]; -+ entry->trampoline = (void *) (table->trampoline_page + (i * FFI_TRAMPOLINE_SIZE)); -+ -+ if (i < table->free_count - 1) -+ entry->next = &table->free_list_pool[i+1]; -+ } -+ -+ table->free_list = table->free_list_pool; -+ } -+ -+ return table; -+} -+ -+void * -+ffi_closure_alloc (size_t size, void **code) -+{ -+ /* Create the closure */ -+ ffi_closure *closure = malloc(size); -+ if (closure == NULL) -+ return NULL; -+ -+ pthread_mutex_lock(&ffi_trampoline_lock); -+ -+ /* Check for an active trampoline table with available entries. */ -+ ffi_trampoline_table *table = ffi_trampoline_tables; -+ if (table == NULL || table->free_list == NULL) { -+ table = ffi_trampoline_table_alloc (); -+ if (table == NULL) { -+ free(closure); -+ return NULL; -+ } -+ -+ /* Insert the new table at the top of the list */ -+ table->next = ffi_trampoline_tables; -+ if (table->next != NULL) -+ table->next->prev = table; -+ -+ ffi_trampoline_tables = table; -+ } -+ -+ /* Claim the free entry */ -+ ffi_trampoline_table_entry *entry = ffi_trampoline_tables->free_list; -+ ffi_trampoline_tables->free_list = entry->next; -+ ffi_trampoline_tables->free_count--; -+ entry->next = NULL; -+ -+ pthread_mutex_unlock(&ffi_trampoline_lock); -+ -+ /* Initialize the return values */ -+ *code = entry->trampoline; -+ closure->trampoline_table = table; -+ closure->trampoline_table_entry = entry; -+ -+ return closure; -+} -+ -+void -+ffi_closure_free (void *ptr) -+{ -+ ffi_closure *closure = ptr; -+ -+ pthread_mutex_lock(&ffi_trampoline_lock); -+ -+ /* Fetch the table and entry references */ -+ ffi_trampoline_table *table = closure->trampoline_table; -+ ffi_trampoline_table_entry *entry = closure->trampoline_table_entry; -+ -+ /* Return the entry to the free list */ -+ entry->next = table->free_list; -+ table->free_list = entry; -+ table->free_count++; -+ -+ /* If all trampolines within this table are free, and at least one other table exists, deallocate -+ * the table */ -+ if (table->free_count == FFI_TRAMPOLINE_COUNT && ffi_trampoline_tables != table) { -+ /* Remove from the list */ -+ if (table->prev != NULL) -+ table->prev->next = table->next; -+ -+ if (table->next != NULL) -+ table->next->prev = table->prev; -+ -+ /* Deallocate pages */ -+ kern_return_t kt; -+ kt = vm_deallocate (mach_task_self (), table->config_page, PAGE_SIZE); -+ if (kt != KERN_SUCCESS) -+ fprintf(stderr, "vm_deallocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__); -+ -+ kt = vm_deallocate (mach_task_self (), table->trampoline_page, PAGE_SIZE); -+ if (kt != KERN_SUCCESS) -+ fprintf(stderr, "vm_deallocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__); -+ -+ /* Deallocate free list */ -+ free (table->free_list_pool); -+ free (table); -+ } else if (ffi_trampoline_tables != table) { -+ /* Otherwise, bump this table to the top of the list */ -+ table->prev = NULL; -+ table->next = ffi_trampoline_tables; -+ if (ffi_trampoline_tables != NULL) -+ ffi_trampoline_tables->prev = table; -+ -+ ffi_trampoline_tables = table; -+ } -+ -+ pthread_mutex_unlock (&ffi_trampoline_lock); -+ -+ /* Free the closure */ -+ free (closure); -+} -+ -+#else -+ - #define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \ - ({ unsigned char *__tramp = (unsigned char*)(TRAMP); \ - unsigned int __fun = (unsigned int)(FUN); \ - unsigned int __ctx = (unsigned int)(CTX); \ -- *(unsigned int*) &__tramp[0] = 0xe92d000f; /* stmfd sp!, {r0-r3} */ \ -- *(unsigned int*) &__tramp[4] = 0xe59f0000; /* ldr r0, [pc] */ \ -- *(unsigned int*) &__tramp[8] = 0xe59ff000; /* ldr pc, [pc] */ \ -+ unsigned char *insns = (unsigned char *)(CTX); \ -+ memcpy (__tramp, ffi_arm_trampoline, sizeof ffi_arm_trampoline); \ - *(unsigned int*) &__tramp[12] = __ctx; \ - *(unsigned int*) &__tramp[16] = __fun; \ -- __clear_cache((&__tramp[0]), (&__tramp[19])); \ -+ __clear_cache((&__tramp[0]), (&__tramp[19])); /* Clear data mapping. */ \ -+ __clear_cache(insns, insns + 3 * sizeof (unsigned int)); \ -+ /* Clear instruction \ -+ mapping. */ \ - }) - -+#endif - - /* the cif must already be prep'ed */ - - ffi_status - ffi_prep_closure_loc (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data, - void *codeloc) - { - void (*closure_func)(ffi_closure*) = NULL; - - if (cif->abi == FFI_SYSV) - closure_func = &ffi_closure_SYSV; -+#ifdef __ARM_EABI__ - else if (cif->abi == FFI_VFP) - closure_func = &ffi_closure_VFP; -+#endif - else -- FFI_ASSERT (0); -- -+ return FFI_BAD_ABI; -+ -+#if FFI_EXEC_TRAMPOLINE_TABLE -+ void **config = FFI_TRAMPOLINE_CODELOC_CONFIG(codeloc); -+ config[0] = closure; -+ config[1] = closure_func; -+#else - FFI_INIT_TRAMPOLINE (&closure->tramp[0], \ - closure_func, \ - codeloc); -- -+#endif -+ - closure->cif = cif; - closure->user_data = user_data; - closure->fun = fun; - - return FFI_OK; - } - - /* Below are routines for VFP hard-float support. */ -@@ -439,19 +864,19 @@ static int vfp_type_p (ffi_type *t) - ? FFI_TYPE_STRUCT_VFP_FLOAT - : FFI_TYPE_STRUCT_VFP_DOUBLE); - } - return (int) t->type; - } - return 0; - } - --static void place_vfp_arg (ffi_cif *cif, ffi_type *t) -+static int place_vfp_arg (ffi_cif *cif, ffi_type *t) - { -- int reg = cif->vfp_reg_free; -+ short reg = cif->vfp_reg_free; - int nregs = t->size / sizeof (float); - int align = ((t->type == FFI_TYPE_STRUCT_VFP_FLOAT - || t->type == FFI_TYPE_FLOAT) ? 1 : 2); - /* Align register number. */ - if ((reg & 1) && align == 2) - reg++; - while (reg + nregs <= 16) - { -@@ -472,29 +897,35 @@ static void place_vfp_arg (ffi_cif *cif, - /* Update vfp_reg_free. */ - if (cif->vfp_used & (1 << cif->vfp_reg_free)) - { - reg += nregs; - while (cif->vfp_used & (1 << reg)) - reg += 1; - cif->vfp_reg_free = reg; - } -- return; -+ return 0; - next_reg: ; - } -+ // done, mark all regs as used -+ cif->vfp_reg_free = 16; -+ cif->vfp_used = 0xFFFF; -+ return 1; - } - - static void layout_vfp_args (ffi_cif *cif) - { - int i; - /* Init VFP fields */ - cif->vfp_used = 0; - cif->vfp_nargs = 0; - cif->vfp_reg_free = 0; - memset (cif->vfp_args, -1, 16); /* Init to -1. */ - - for (i = 0; i < cif->nargs; i++) - { - ffi_type *t = cif->arg_types[i]; -- if (vfp_type_p (t)) -- place_vfp_arg (cif, t); -+ if (vfp_type_p (t) && place_vfp_arg (cif, t) == 1) -+ { -+ break; -+ } - } - } -diff --git a/js/src/ctypes/libffi/src/arm/ffitarget.h b/js/src/ctypes/libffi/src/arm/ffitarget.h ---- a/js/src/ctypes/libffi/src/arm/ffitarget.h -+++ b/js/src/ctypes/libffi/src/arm/ffitarget.h -@@ -1,10 +1,13 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 2010 CodeSourcery -+ Copyright (c) 1996-2003 Red Hat, Inc. -+ - Target configuration macros for ARM. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,42 +25,47 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - #ifndef LIBFFI_ASM - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, - FFI_SYSV, - FFI_VFP, - FFI_LAST_ABI, - #ifdef __ARM_PCS_VFP -- FFI_DEFAULT_ABI = FFI_VFP -+ FFI_DEFAULT_ABI = FFI_VFP, - #else -- FFI_DEFAULT_ABI = FFI_SYSV -+ FFI_DEFAULT_ABI = FFI_SYSV, - #endif - } ffi_abi; - #endif - - #define FFI_EXTRA_CIF_FIELDS \ - int vfp_used; \ - short vfp_reg_free, vfp_nargs; \ - signed char vfp_args[16] \ - - /* Internally used. */ - #define FFI_TYPE_STRUCT_VFP_FLOAT (FFI_TYPE_LAST + 1) - #define FFI_TYPE_STRUCT_VFP_DOUBLE (FFI_TYPE_LAST + 2) - -+#define FFI_TARGET_SPECIFIC_VARIADIC -+ - /* ---- Definitions for closures ----------------------------------------- */ - - #define FFI_CLOSURES 1 - #define FFI_TRAMPOLINE_SIZE 20 - #define FFI_NATIVE_RAW_API 0 - - #endif -- -diff --git a/js/src/ctypes/libffi/src/arm/gentramp.sh b/js/src/ctypes/libffi/src/arm/gentramp.sh -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/arm/gentramp.sh -@@ -0,0 +1,118 @@ -+#!/bin/sh -+ -+# ----------------------------------------------------------------------- -+# gentramp.sh - Copyright (c) 2010, Plausible Labs Cooperative, Inc. -+# -+# ARM Trampoline Page Generator -+# -+# Permission is hereby granted, free of charge, to any person obtaining -+# a copy of this software and associated documentation files (the -+# ``Software''), to deal in the Software without restriction, including -+# without limitation the rights to use, copy, modify, merge, publish, -+# distribute, sublicense, and/or sell copies of the Software, and to -+# permit persons to whom the Software is furnished to do so, subject to -+# the following conditions: -+# -+# The above copyright notice and this permission notice shall be included -+# in all copies or substantial portions of the Software. -+# -+# THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+# DEALINGS IN THE SOFTWARE. -+# ----------------------------------------------------------------------- -+ -+PROGNAME=$0 -+ -+# Each trampoline is exactly 3 instructions, or 12 bytes. If any of these values change, -+# the entire arm trampoline implementation must be updated to match, too. -+ -+# Size of an individual trampoline, in bytes -+TRAMPOLINE_SIZE=12 -+ -+# Page size, in bytes -+PAGE_SIZE=4096 -+ -+# Compute the size of the reachable config page; The first 16 bytes of the config page -+# are unreachable due to our maximum pc-relative ldr offset. -+PAGE_AVAIL=`expr $PAGE_SIZE - 16` -+ -+# Compute the number of of available trampolines. -+TRAMPOLINE_COUNT=`expr $PAGE_AVAIL / $TRAMPOLINE_SIZE` -+ -+header () { -+ echo "# GENERATED CODE - DO NOT EDIT" -+ echo "# This file was generated by $PROGNAME" -+ echo "" -+ -+ # Write out the license header -+cat << EOF -+# Copyright (c) 2010, Plausible Labs Cooperative, Inc. -+# -+# Permission is hereby granted, free of charge, to any person obtaining -+# a copy of this software and associated documentation files (the -+# ``Software''), to deal in the Software without restriction, including -+# without limitation the rights to use, copy, modify, merge, publish, -+# distribute, sublicense, and/or sell copies of the Software, and to -+# permit persons to whom the Software is furnished to do so, subject to -+# the following conditions: -+# -+# The above copyright notice and this permission notice shall be included -+# in all copies or substantial portions of the Software. -+# -+# THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+# DEALINGS IN THE SOFTWARE. -+# ----------------------------------------------------------------------- -+ -+EOF -+ -+ # Write out the trampoline table, aligned to the page boundary -+ echo ".text" -+ echo ".align 12" -+ echo ".globl _ffi_closure_trampoline_table_page" -+ echo "_ffi_closure_trampoline_table_page:" -+} -+ -+ -+# WARNING - Don't modify the trampoline code size without also updating the relevant libffi code -+trampoline () { -+ cat << END -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+END -+} -+ -+main () { -+ # Write out the header -+ header -+ -+ # Write out the trampolines -+ local i=0 -+ while [ $i -lt ${TRAMPOLINE_COUNT} ]; do -+ trampoline -+ local i=`expr $i + 1` -+ done -+} -+ -+main -diff --git a/js/src/ctypes/libffi/src/arm/sysv.S b/js/src/ctypes/libffi/src/arm/sysv.S ---- a/js/src/ctypes/libffi/src/arm/sysv.S -+++ b/js/src/ctypes/libffi/src/arm/sysv.S -@@ -1,10 +1,11 @@ - /* ----------------------------------------------------------------------- -- sysv.S - Copyright (c) 1998, 2008 Red Hat, Inc. -+ sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc. -+ Copyright (c) 2011 Plausible Labs Cooperative, Inc. - - ARM Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -34,25 +35,35 @@ - #define CONCAT1(a, b) CONCAT2(a, b) - #define CONCAT2(a, b) a ## b - - /* Use the right prefix for global labels. */ - #define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x) - #else - #define CNAME(x) x - #endif -+#ifdef __APPLE__ -+#define ENTRY(x) .globl _##x; _##x: -+#else - #define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x): -+#endif /* __APPLE__ */ - #endif - - #ifdef __ELF__ - #define LSYM(x) .x - #else - #define LSYM(x) x - #endif - -+/* Use the SOFTFP return value ABI on Mac OS X, as per the iOS ABI -+ Function Call Guide */ -+#ifdef __APPLE__ -+#define __SOFTFP__ -+#endif -+ - /* We need a better way of testing for this, but for now, this is all - we can do. */ - @ This selects the minimum architecture level required. - #define __ARM_ARCH__ 3 - - #if defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__) - # undef __ARM_ARCH__ - # define __ARM_ARCH__ 4 -@@ -93,40 +104,37 @@ - - /* Conditionally compile unwinder directives. */ - #ifdef __ARM_EABI__ - #define UNWIND - #else - #define UNWIND @ - #endif - -- -+.syntax unified -+ - #if defined(__thumb__) && !defined(__THUMB_INTERWORK__) --.macro ARM_FUNC_START name -- .text -- .align 0 -- .thumb -- .thumb_func -- ENTRY(\name) -- bx pc -- nop -- .arm -+#define ARM_FUNC_START(name) \ -+ .text; \ -+ .align 2; \ -+ .thumb; \ -+ .thumb_func; \ -+ ENTRY(name); \ -+ bx pc; \ -+ nop; \ -+ .arm; \ -+ UNWIND .fnstart; \ -+_L__##name: -+#else -+#define ARM_FUNC_START(name) \ -+ .text; \ -+ .align 2; \ -+ .arm; \ -+ ENTRY(name); \ - UNWIND .fnstart --/* A hook to tell gdb that we've switched to ARM mode. Also used to call -- directly from other local arm routines. */ --_L__\name: --.endm --#else --.macro ARM_FUNC_START name -- .text -- .align 0 -- .arm -- ENTRY(\name) -- UNWIND .fnstart --.endm - #endif - - .macro RETLDM regs=, cond=, dirn=ia - #if defined (__INTERWORKING__) - .ifc "\regs","" - ldr\cond lr, [sp], #4 - .else - ldm\cond\dirn sp!, {\regs, lr} -@@ -136,41 +144,40 @@ - .ifc "\regs","" - ldr\cond pc, [sp], #4 - .else - ldm\cond\dirn sp!, {\regs, pc} - .endif - #endif - .endm - -- -- @ r0: fn -+ @ r0: ffi_prep_args - @ r1: &ecif - @ r2: cif->bytes - @ r3: fig->flags - @ sp+0: ecif.rvalue - - @ This assumes we are using gas. --ARM_FUNC_START ffi_call_SYSV -+ARM_FUNC_START(ffi_call_SYSV) - @ Save registers - stmfd sp!, {r0-r3, fp, lr} - UNWIND .save {r0-r3, fp, lr} - mov fp, sp - - UNWIND .setfp fp, sp - - @ Make room for all of the new args. - sub sp, fp, r2 - - @ Place all of the ffi_prep_args in position - mov r0, sp - @ r1 already set - - @ Call ffi_prep_args(stack, &ecif) -- bl ffi_prep_args -+ bl CNAME(ffi_prep_args_SYSV) - - @ move first 4 parameters in registers - ldmia sp, {r0-r3} - - @ and adjust stack - sub lr, fp, sp @ cif->bytes == fp - sp - ldr ip, [fp] @ load fn() in advance - cmp lr, #16 -@@ -201,156 +208,65 @@ ARM_FUNC_START ffi_call_SYSV - streq r0, [r2] - beq LSYM(Lepilogue) - - @ return INT64 - cmp r3, #FFI_TYPE_SINT64 - #if defined(__SOFTFP__) || defined(__ARM_EABI__) - cmpne r3, #FFI_TYPE_DOUBLE - #endif -- stmeqia r2, {r0, r1} -+ stmiaeq r2, {r0, r1} - - #if !defined(__SOFTFP__) && !defined(__ARM_EABI__) - beq LSYM(Lepilogue) - - @ return FLOAT - cmp r3, #FFI_TYPE_FLOAT - stfeqs f0, [r2] - beq LSYM(Lepilogue) - - @ return DOUBLE or LONGDOUBLE - cmp r3, #FFI_TYPE_DOUBLE - stfeqd f0, [r2] - #endif - - LSYM(Lepilogue): -- RETLDM "r0-r3,fp" -+#if defined (__INTERWORKING__) -+ ldmia sp!, {r0-r3,fp, lr} -+ bx lr -+#else -+ ldmia sp!, {r0-r3,fp, pc} -+#endif - - .ffi_call_SYSV_end: - UNWIND .fnend -+#ifdef __ELF__ - .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) -+#endif - - --/* Below are VFP hard-float ABI call and closure implementations. -- Add VFP FPU directive here. */ -- .fpu vfp -- -- @ r0: fn -- @ r1: &ecif -- @ r2: cif->bytes -- @ r3: fig->flags -- @ sp+0: ecif.rvalue -- --ARM_FUNC_START ffi_call_VFP -- @ Save registers -- stmfd sp!, {r0-r3, fp, lr} -- UNWIND .save {r0-r3, fp, lr} -- mov fp, sp -- UNWIND .setfp fp, sp -- -- @ Make room for all of the new args. -- sub sp, sp, r2 -- -- @ Make room for loading VFP args -- sub sp, sp, #64 -- -- @ Place all of the ffi_prep_args in position -- mov r0, sp -- @ r1 already set -- sub r2, fp, #64 @ VFP scratch space -- -- @ Call ffi_prep_args(stack, &ecif, vfp_space) -- bl ffi_prep_args -- -- @ Load VFP register args if needed -- cmp r0, #0 -- beq LSYM(Lbase_args) -- -- @ Load only d0 if possible -- cmp r0, #3 -- sub ip, fp, #64 -- flddle d0, [ip] -- fldmiadgt ip, {d0-d7} -- --LSYM(Lbase_args): -- @ move first 4 parameters in registers -- ldmia sp, {r0-r3} -- -- @ and adjust stack -- sub lr, ip, sp @ cif->bytes == (fp - 64) - sp -- ldr ip, [fp] @ load fn() in advance -- cmp lr, #16 -- movhs lr, #16 -- add sp, sp, lr -- -- @ call (fn) (...) -- call_reg(ip) -- -- @ Remove the space we pushed for the args -- mov sp, fp -- -- @ Load r2 with the pointer to storage for -- @ the return value -- ldr r2, [sp, #24] -- -- @ Load r3 with the return type code -- ldr r3, [sp, #12] -- -- @ If the return value pointer is NULL, -- @ assume no return value. -- cmp r2, #0 -- beq LSYM(Lepilogue_vfp) -- -- cmp r3, #FFI_TYPE_INT -- streq r0, [r2] -- beq LSYM(Lepilogue_vfp) -- -- cmp r3, #FFI_TYPE_SINT64 -- stmeqia r2, {r0, r1} -- beq LSYM(Lepilogue_vfp) -- -- cmp r3, #FFI_TYPE_FLOAT -- fstseq s0, [r2] -- beq LSYM(Lepilogue_vfp) -- -- cmp r3, #FFI_TYPE_DOUBLE -- fstdeq d0, [r2] -- beq LSYM(Lepilogue_vfp) -- -- cmp r3, #FFI_TYPE_STRUCT_VFP_FLOAT -- cmpne r3, #FFI_TYPE_STRUCT_VFP_DOUBLE -- fstmiadeq r2, {d0-d3} -- --LSYM(Lepilogue_vfp): -- RETLDM "r0-r3,fp" -- --.ffi_call_VFP_end: -- UNWIND .fnend -- .size CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP) -- -- - /* - unsigned int FFI_HIDDEN -- ffi_closure_SYSV_inner (closure, respp, args) -+ ffi_closure_inner (closure, respp, args) - ffi_closure *closure; - void **respp; - void *args; - */ - --ARM_FUNC_START ffi_closure_SYSV -+ARM_FUNC_START(ffi_closure_SYSV) - UNWIND .pad #16 - add ip, sp, #16 - stmfd sp!, {ip, lr} - UNWIND .save {r0, lr} - add r2, sp, #8 -- .pad #16 -+ UNWIND .pad #16 - sub sp, sp, #16 - str sp, [sp, #8] - add r1, sp, #8 -- bl ffi_closure_SYSV_inner -+ bl CNAME(ffi_closure_inner) - cmp r0, #FFI_TYPE_INT - beq .Lretint - - cmp r0, #FFI_TYPE_FLOAT - #if defined(__SOFTFP__) || defined(__ARM_EABI__) - beq .Lretint - #else - beq .Lretfloat -@@ -392,33 +308,136 @@ ARM_FUNC_START ffi_closure_SYSV - b .Lclosure_epilogue - .Lretlongdouble: - ldfd f0, [sp] - b .Lclosure_epilogue - #endif - - .ffi_closure_SYSV_end: - UNWIND .fnend -+#ifdef __ELF__ - .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) -+#endif - - --ARM_FUNC_START ffi_closure_VFP -+/* Below are VFP hard-float ABI call and closure implementations. -+ Add VFP FPU directive here. This is only compiled into the library -+ under EABI. */ -+#ifdef __ARM_EABI__ -+ .fpu vfp -+ -+ @ r0: fn -+ @ r1: &ecif -+ @ r2: cif->bytes -+ @ r3: fig->flags -+ @ sp+0: ecif.rvalue -+ -+ARM_FUNC_START(ffi_call_VFP) -+ @ Save registers -+ stmfd sp!, {r0-r3, fp, lr} -+ UNWIND .save {r0-r3, fp, lr} -+ mov fp, sp -+ UNWIND .setfp fp, sp -+ -+ @ Make room for all of the new args. -+ sub sp, sp, r2 -+ -+ @ Make room for loading VFP args -+ sub sp, sp, #64 -+ -+ @ Place all of the ffi_prep_args in position -+ mov r0, sp -+ @ r1 already set -+ sub r2, fp, #64 @ VFP scratch space -+ -+ @ Call ffi_prep_args(stack, &ecif, vfp_space) -+ bl CNAME(ffi_prep_args_VFP) -+ -+ @ Load VFP register args if needed -+ cmp r0, #0 -+ mov ip, fp -+ beq LSYM(Lbase_args) -+ -+ @ Load only d0 if possible -+ cmp r0, #3 -+ sub ip, fp, #64 -+ flddle d0, [ip] -+ fldmiadgt ip, {d0-d7} -+ -+LSYM(Lbase_args): -+ @ move first 4 parameters in registers -+ ldmia sp, {r0-r3} -+ -+ @ and adjust stack -+ sub lr, ip, sp @ cif->bytes == (fp - 64) - sp -+ ldr ip, [fp] @ load fn() in advance -+ cmp lr, #16 -+ movhs lr, #16 -+ add sp, sp, lr -+ -+ @ call (fn) (...) -+ call_reg(ip) -+ -+ @ Remove the space we pushed for the args -+ mov sp, fp -+ -+ @ Load r2 with the pointer to storage for -+ @ the return value -+ ldr r2, [sp, #24] -+ -+ @ Load r3 with the return type code -+ ldr r3, [sp, #12] -+ -+ @ If the return value pointer is NULL, -+ @ assume no return value. -+ cmp r2, #0 -+ beq LSYM(Lepilogue_vfp) -+ -+ cmp r3, #FFI_TYPE_INT -+ streq r0, [r2] -+ beq LSYM(Lepilogue_vfp) -+ -+ cmp r3, #FFI_TYPE_SINT64 -+ stmeqia r2, {r0, r1} -+ beq LSYM(Lepilogue_vfp) -+ -+ cmp r3, #FFI_TYPE_FLOAT -+ fstseq s0, [r2] -+ beq LSYM(Lepilogue_vfp) -+ -+ cmp r3, #FFI_TYPE_DOUBLE -+ fstdeq d0, [r2] -+ beq LSYM(Lepilogue_vfp) -+ -+ cmp r3, #FFI_TYPE_STRUCT_VFP_FLOAT -+ cmpne r3, #FFI_TYPE_STRUCT_VFP_DOUBLE -+ fstmiadeq r2, {d0-d3} -+ -+LSYM(Lepilogue_vfp): -+ RETLDM "r0-r3,fp" -+ -+.ffi_call_VFP_end: -+ UNWIND .fnend -+ .size CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP) -+ -+ -+ARM_FUNC_START(ffi_closure_VFP) - fstmfdd sp!, {d0-d7} - @ r0-r3, then d0-d7 - UNWIND .pad #80 - add ip, sp, #80 - stmfd sp!, {ip, lr} - UNWIND .save {r0, lr} - add r2, sp, #72 - add r3, sp, #8 -- .pad #72 -+ UNWIND .pad #72 - sub sp, sp, #72 - str sp, [sp, #64] - add r1, sp, #64 -- bl ffi_closure_SYSV_inner -+ bl CNAME(ffi_closure_inner) - - cmp r0, #FFI_TYPE_INT - beq .Lretint_vfp - - cmp r0, #FFI_TYPE_FLOAT - beq .Lretfloat_vfp - - cmp r0, #FFI_TYPE_DOUBLE -@@ -455,12 +474,18 @@ ARM_FUNC_START ffi_closure_VFP - b .Lclosure_epilogue_vfp - .Lretdouble_struct_vfp: - fldmiad sp, {d0-d3} - b .Lclosure_epilogue_vfp - - .ffi_closure_VFP_end: - UNWIND .fnend - .size CNAME(ffi_closure_VFP),.ffi_closure_VFP_end-CNAME(ffi_closure_VFP) -+#endif -+ -+ENTRY(ffi_arm_trampoline) -+ stmfd sp!, {r0-r3} -+ ldr r0, [pc] -+ ldr pc, [pc] - - #if defined __ELF__ && defined __linux__ - .section .note.GNU-stack,"",%progbits - #endif -diff --git a/js/src/ctypes/libffi/src/arm/trampoline.S b/js/src/ctypes/libffi/src/arm/trampoline.S -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/arm/trampoline.S -@@ -0,0 +1,4450 @@ -+# GENERATED CODE - DO NOT EDIT -+# This file was generated by src/arm/gentramp.sh -+ -+# Copyright (c) 2010, Plausible Labs Cooperative, Inc. -+# -+# Permission is hereby granted, free of charge, to any person obtaining -+# a copy of this software and associated documentation files (the -+# Software''), to deal in the Software without restriction, including -+# without limitation the rights to use, copy, modify, merge, publish, -+# distribute, sublicense, and/or sell copies of the Software, and to -+# permit persons to whom the Software is furnished to do so, subject to -+# the following conditions: -+# -+# The above copyright notice and this permission notice shall be included -+# in all copies or substantial portions of the Software. -+# -+# THE SOFTWARE IS PROVIDED AS IS'', WITHOUT WARRANTY OF ANY KIND, -+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+# DEALINGS IN THE SOFTWARE. -+# ----------------------------------------------------------------------- -+ -+.text -+.align 12 -+.globl _ffi_closure_trampoline_table_page -+_ffi_closure_trampoline_table_page: -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -+ -+ // trampoline -+ // Save to stack -+ stmfd sp!, {r0-r3} -+ -+ // Load the context argument from the config page. -+ // This places the first usable config value at _ffi_closure_trampoline_table-4080 -+ // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc. -+ ldr r0, [pc, #-4092] -+ -+ // Load the jump address from the config page. -+ ldr pc, [pc, #-4092] -+ -diff --git a/js/src/ctypes/libffi/src/avr32/ffi.c b/js/src/ctypes/libffi/src/avr32/ffi.c ---- a/js/src/ctypes/libffi/src/avr32/ffi.c -+++ b/js/src/ctypes/libffi/src/avr32/ffi.c -@@ -1,10 +1,11 @@ - /* ----------------------------------------------------------------------- -- ffi.c - Copyright (c) 2009 Bradley Smith -+ ffi.c - Copyright (c) 2011 Anthony Green -+ Copyright (c) 2009 Bradley Smith - - AVR32 Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -389,17 +390,18 @@ unsigned int ffi_closure_SYSV_inner(ffi_ - - return cif->flags; - } - - ffi_status ffi_prep_closure_loc(ffi_closure* closure, ffi_cif* cif, - void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, - void *codeloc) - { -- FFI_ASSERT(cif->abi == FFI_SYSV); -+ if (cif->abi != FFI_SYSV) -+ return FFI_BAD_ABI; - - unsigned char *__tramp = (unsigned char*)(&closure->tramp[0]); - unsigned int __fun = (unsigned int)(&ffi_closure_SYSV); - unsigned int __ctx = (unsigned int)(codeloc); - unsigned int __rstruct_flag = (unsigned int)(cif->rstruct_flag); - unsigned int __inner = (unsigned int)(&ffi_closure_SYSV_inner); - *(unsigned int*) &__tramp[0] = 0xebcd1f00; /* pushm r8-r12 */ - *(unsigned int*) &__tramp[4] = 0xfefc0010; /* ld.w r12, pc[16] */ -diff --git a/js/src/ctypes/libffi/src/avr32/ffitarget.h b/js/src/ctypes/libffi/src/avr32/ffitarget.h ---- a/js/src/ctypes/libffi/src/avr32/ffitarget.h -+++ b/js/src/ctypes/libffi/src/avr32/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 2009 Bradley Smith -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 2009 Bradley Smith - Target configuration macros for AVR32. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,16 +23,20 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - #ifndef LIBFFI_ASM - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, - FFI_SYSV, - FFI_LAST_ABI, -diff --git a/js/src/ctypes/libffi/src/bfin/ffi.c b/js/src/ctypes/libffi/src/bfin/ffi.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/bfin/ffi.c -@@ -0,0 +1,196 @@ -+/* ----------------------------------------------------------------------- -+ ffi.c - Copyright (c) 2012 Alexandre K. I. de Mendonca , -+ Paulo Pizarro -+ -+ Blackfin Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+#include -+#include -+ -+#include -+#include -+ -+/* Maximum number of GPRs available for argument passing. */ -+#define MAX_GPRARGS 3 -+ -+/* -+ * Return types -+ */ -+#define FFIBFIN_RET_VOID 0 -+#define FFIBFIN_RET_BYTE 1 -+#define FFIBFIN_RET_HALFWORD 2 -+#define FFIBFIN_RET_INT64 3 -+#define FFIBFIN_RET_INT32 4 -+ -+/*====================================================================*/ -+/* PROTOTYPE * -+ /*====================================================================*/ -+void ffi_prep_args(unsigned char *, extended_cif *); -+ -+/*====================================================================*/ -+/* Externals */ -+/* (Assembly) */ -+/*====================================================================*/ -+ -+extern void ffi_call_SYSV(unsigned, extended_cif *, void(*)(unsigned char *, extended_cif *), unsigned, void *, void(*fn)(void)); -+ -+/*====================================================================*/ -+/* Implementation */ -+/* */ -+/*====================================================================*/ -+ -+ -+/* -+ * This function calculates the return type (size) based on type. -+ */ -+ -+ffi_status ffi_prep_cif_machdep(ffi_cif *cif) -+{ -+ /* --------------------------------------* -+ * Return handling * -+ * --------------------------------------*/ -+ switch (cif->rtype->type) { -+ case FFI_TYPE_VOID: -+ cif->flags = FFIBFIN_RET_VOID; -+ break; -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT16: -+ cif->flags = FFIBFIN_RET_HALFWORD; -+ break; -+ case FFI_TYPE_UINT8: -+ cif->flags = FFIBFIN_RET_BYTE; -+ break; -+ case FFI_TYPE_INT: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_SINT8: -+ cif->flags = FFIBFIN_RET_INT32; -+ break; -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_DOUBLE: -+ cif->flags = FFIBFIN_RET_INT64; -+ break; -+ case FFI_TYPE_STRUCT: -+ if (cif->rtype->size <= 4){ -+ cif->flags = FFIBFIN_RET_INT32; -+ }else if (cif->rtype->size == 8){ -+ cif->flags = FFIBFIN_RET_INT64; -+ }else{ -+ //it will return via a hidden pointer in P0 -+ cif->flags = FFIBFIN_RET_VOID; -+ } -+ break; -+ default: -+ FFI_ASSERT(0); -+ break; -+ } -+ return FFI_OK; -+} -+ -+/* -+ * This will prepare the arguments and will call the assembly routine -+ * cif = the call interface -+ * fn = the function to be called -+ * rvalue = the return value -+ * avalue = the arguments -+ */ -+void ffi_call(ffi_cif *cif, void(*fn)(void), void *rvalue, void **avalue) -+{ -+ int ret_type = cif->flags; -+ extended_cif ecif; -+ ecif.cif = cif; -+ ecif.avalue = avalue; -+ ecif.rvalue = rvalue; -+ -+ switch (cif->abi) { -+ case FFI_SYSV: -+ ffi_call_SYSV(cif->bytes, &ecif, ffi_prep_args, ret_type, ecif.rvalue, fn); -+ break; -+ default: -+ FFI_ASSERT(0); -+ break; -+ } -+} -+ -+ -+/* -+* This function prepares the parameters (copies them from the ecif to the stack) -+* to call the function (ffi_prep_args is called by the assembly routine in file -+* sysv.S, which also calls the actual function) -+*/ -+void ffi_prep_args(unsigned char *stack, extended_cif *ecif) -+{ -+ register unsigned int i = 0; -+ void **p_argv; -+ unsigned char *argp; -+ ffi_type **p_arg; -+ argp = stack; -+ p_argv = ecif->avalue; -+ for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; -+ (i != 0); -+ i--, p_arg++) { -+ size_t z; -+ z = (*p_arg)->size; -+ if (z < sizeof(int)) { -+ z = sizeof(int); -+ switch ((*p_arg)->type) { -+ case FFI_TYPE_SINT8: { -+ signed char v = *(SINT8 *)(* p_argv); -+ signed int t = v; -+ *(signed int *) argp = t; -+ } -+ break; -+ case FFI_TYPE_UINT8: { -+ unsigned char v = *(UINT8 *)(* p_argv); -+ unsigned int t = v; -+ *(unsigned int *) argp = t; -+ } -+ break; -+ case FFI_TYPE_SINT16: -+ *(signed int *) argp = (signed int) * (SINT16 *)(* p_argv); -+ break; -+ case FFI_TYPE_UINT16: -+ *(unsigned int *) argp = (unsigned int) * (UINT16 *)(* p_argv); -+ break; -+ case FFI_TYPE_STRUCT: -+ memcpy(argp, *p_argv, (*p_arg)->size); -+ break; -+ default: -+ FFI_ASSERT(0); -+ break; -+ } -+ } else if (z == sizeof(int)) { -+ *(unsigned int *) argp = (unsigned int) * (UINT32 *)(* p_argv); -+ } else { -+ memcpy(argp, *p_argv, z); -+ } -+ p_argv++; -+ argp += z; -+ } -+} -+ -+ -+ -diff --git a/js/src/ctypes/libffi/src/bfin/ffitarget.h b/js/src/ctypes/libffi/src/bfin/ffitarget.h -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/bfin/ffitarget.h -@@ -0,0 +1,43 @@ -+/* ----------------------------------------------------------------------- -+ ffitarget.h - Copyright (c) 2012 Alexandre K. I. de Mendonca -+ -+ Blackfin Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#ifndef LIBFFI_TARGET_H -+#define LIBFFI_TARGET_H -+ -+#ifndef LIBFFI_ASM -+typedef unsigned long ffi_arg; -+typedef signed long ffi_sarg; -+ -+typedef enum ffi_abi { -+ FFI_FIRST_ABI = 0, -+ FFI_SYSV, -+ FFI_LAST_ABI, -+ FFI_DEFAULT_ABI = FFI_SYSV -+} ffi_abi; -+#endif -+ -+#endif -+ -diff --git a/js/src/ctypes/libffi/src/bfin/sysv.S b/js/src/ctypes/libffi/src/bfin/sysv.S -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/bfin/sysv.S -@@ -0,0 +1,179 @@ -+/* ----------------------------------------------------------------------- -+ sysv.S - Copyright (c) 2012 Alexandre K. I. de Mendonca , -+ Paulo Pizarro -+ -+ Blackfin Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#define LIBFFI_ASM -+#include -+#include -+ -+.text -+.align 4 -+ -+ /* -+ There is a "feature" in the bfin toolchain that it puts a _ before function names -+ that's why the function here it's called _ffi_call_SYSV and not ffi_call_SYSV -+ */ -+ .global _ffi_call_SYSV; -+ .type _ffi_call_SYSV, STT_FUNC; -+ .func ffi_call_SYSV -+ -+ /* -+ cif->bytes = R0 (fp+8) -+ &ecif = R1 (fp+12) -+ ffi_prep_args = R2 (fp+16) -+ ret_type = stack (fp+20) -+ ecif.rvalue = stack (fp+24) -+ fn = stack (fp+28) -+ got (fp+32) -+ -+ There is room for improvement here (we can use temporary registers -+ instead of saving the values in the memory) -+ REGS: -+ P5 => Stack pointer (function arguments) -+ R5 => cif->bytes -+ R4 => ret->type -+ -+ FP-20 = P3 -+ FP-16 = SP (parameters area) -+ FP-12 = SP (temp) -+ FP-08 = function return part 1 [R0] -+ FP-04 = function return part 2 [R1] -+ */ -+ -+_ffi_call_SYSV: -+.prologue: -+ LINK 20; -+ [FP-20] = P3; -+ [FP+8] = R0; -+ [FP+12] = R1; -+ [FP+16] = R2; -+ -+.allocate_stack: -+ //alocate cif->bytes into the stack -+ R1 = [FP+8]; -+ R0 = SP; -+ R0 = R0 - R1; -+ R1 = 4; -+ R0 = R0 - R1; -+ [FP-12] = SP; -+ SP = R0; -+ [FP-16] = SP; -+ -+.call_prep_args: -+ //get the addr of prep_args -+ P0 = [P3 + _ffi_prep_args@FUNCDESC_GOT17M4]; -+ P1 = [P0]; -+ P3 = [P0+4]; -+ R0 = [FP-16];//SP (parameter area) -+ R1 = [FP+12];//ecif -+ call (P1); -+ -+.call_user_function: -+ //ajust SP so as to allow the user function access the parameters on the stack -+ SP = [FP-16]; //point to function parameters -+ R0 = [SP]; -+ R1 = [SP+4]; -+ R2 = [SP+8]; -+ //load user function address -+ P0 = FP; -+ P0 +=28; -+ P1 = [P0]; -+ P1 = [P1]; -+ P3 = [P0+4]; -+ /* -+ For functions returning aggregate values (struct) occupying more than 8 bytes, -+ the caller allocates the return value object on the stack and the address -+ of this object is passed to the callee as a hidden argument in register P0. -+ */ -+ P0 = [FP+24]; -+ -+ call (P1); -+ SP = [FP-12]; -+.compute_return: -+ P2 = [FP-20]; -+ [FP-8] = R0; -+ [FP-4] = R1; -+ -+ R0 = [FP+20]; -+ R1 = R0 << 2; -+ -+ R0 = [P2+.rettable@GOT17M4]; -+ R0 = R1 + R0; -+ P2 = R0; -+ R1 = [P2]; -+ -+ P2 = [FP+-20]; -+ R0 = [P2+.rettable@GOT17M4]; -+ R0 = R1 + R0; -+ P2 = R0; -+ R0 = [FP-8]; -+ R1 = [FP-4]; -+ jump (P2); -+ -+/* -+#define FFIBFIN_RET_VOID 0 -+#define FFIBFIN_RET_BYTE 1 -+#define FFIBFIN_RET_HALFWORD 2 -+#define FFIBFIN_RET_INT64 3 -+#define FFIBFIN_RET_INT32 4 -+*/ -+.align 4 -+.align 4 -+.rettable: -+ .dd .epilogue - .rettable -+ .dd .rbyte - .rettable; -+ .dd .rhalfword - .rettable; -+ .dd .rint64 - .rettable; -+ .dd .rint32 - .rettable; -+ -+.rbyte: -+ P0 = [FP+24]; -+ R0 = R0.B (Z); -+ [P0] = R0; -+ JUMP .epilogue -+.rhalfword: -+ P0 = [FP+24]; -+ R0 = R0.L; -+ [P0] = R0; -+ JUMP .epilogue -+.rint64: -+ P0 = [FP+24];// &rvalue -+ [P0] = R0; -+ [P0+4] = R1; -+ JUMP .epilogue -+.rint32: -+ P0 = [FP+24]; -+ [P0] = R0; -+.epilogue: -+ R0 = [FP+8]; -+ R1 = [FP+12]; -+ R2 = [FP+16]; -+ P3 = [FP-20]; -+ UNLINK; -+ RTS; -+ -+.size _ffi_call_SYSV,.-_ffi_call_SYSV; -+.endfunc -diff --git a/js/src/ctypes/libffi/src/closures.c b/js/src/ctypes/libffi/src/closures.c ---- a/js/src/ctypes/libffi/src/closures.c -+++ b/js/src/ctypes/libffi/src/closures.c -@@ -1,11 +1,12 @@ - /* ----------------------------------------------------------------------- -- closures.c - Copyright (c) 2007 Red Hat, Inc. -- Copyright (C) 2007, 2009 Free Software Foundation, Inc -+ closures.c - Copyright (c) 2007, 2009, 2010 Red Hat, Inc. -+ Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc -+ Copyright (c) 2011 Plausible Labs Cooperative, Inc. - - Code to allocate and deallocate memory for closures. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -27,18 +28,18 @@ - - #if defined __linux__ && !defined _GNU_SOURCE - #define _GNU_SOURCE 1 - #endif - - #include - #include - --#ifndef FFI_MMAP_EXEC_WRIT --# if __gnu_linux__ -+#if !FFI_MMAP_EXEC_WRIT && !FFI_EXEC_TRAMPOLINE_TABLE -+# if __gnu_linux__ && !defined(__ANDROID__) - /* This macro indicates it may be forbidden to map anonymous memory - with both write and execute permission. Code compiled when this - option is defined will attempt to map such pages once, but if it - fails, it falls back to creating a temporary file in a writable and - executable filesystem and mapping pages from it into separate - locations in the virtual memory space, one location writable and - another executable. */ - # define FFI_MMAP_EXEC_WRIT 1 -@@ -58,17 +59,21 @@ - don't attempt PROT_EXEC|PROT_WRITE mapping at all, as that - might cause audit messages. */ - # define FFI_MMAP_EXEC_SELINUX 1 - # endif - #endif - - #if FFI_CLOSURES - --# if FFI_MMAP_EXEC_WRIT -+# if FFI_EXEC_TRAMPOLINE_TABLE -+ -+// Per-target implementation; It's unclear what can reasonable be shared between two OS/architecture implementations. -+ -+# elif FFI_MMAP_EXEC_WRIT /* !FFI_EXEC_TRAMPOLINE_TABLE */ - - #define USE_LOCKS 1 - #define USE_DL_PREFIX 1 - #ifdef __GNUC__ - #ifndef USE_BUILTIN_FFS - #define USE_BUILTIN_FFS 1 - #endif - #endif -@@ -162,25 +167,48 @@ selinux_enabled_check (void) - : (selinux_enabled = selinux_enabled_check ())) - - #else - - #define is_selinux_enabled() 0 - - #endif /* !FFI_MMAP_EXEC_SELINUX */ - --#elif defined (__CYGWIN__) -+/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. */ -+#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX -+#include -+ -+static int emutramp_enabled = -1; -+ -+static int -+emutramp_enabled_check (void) -+{ -+ if (getenv ("FFI_DISABLE_EMUTRAMP") == NULL) -+ return 1; -+ else -+ return 0; -+} -+ -+#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \ -+ : (emutramp_enabled = emutramp_enabled_check ())) -+#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */ -+ -+#elif defined (__CYGWIN__) || defined(__INTERIX) - - #include - - /* Cygwin is Linux-like, but not quite that Linux-like. */ - #define is_selinux_enabled() 0 - - #endif /* !defined(X86_WIN32) && !defined(X86_WIN64) */ - -+#ifndef FFI_MMAP_EXEC_EMUTRAMP_PAX -+#define is_emutramp_enabled() 0 -+#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */ -+ - /* Declare all functions defined in dlmalloc.c as static. */ - static void *dlmalloc(size_t); - static void dlfree(void*); - static void *dlcalloc(size_t, size_t) MAYBE_UNUSED; - static void *dlrealloc(void *, size_t) MAYBE_UNUSED; - static void *dlmemalign(size_t, size_t) MAYBE_UNUSED; - static void *dlvalloc(size_t) MAYBE_UNUSED; - static int dlmallopt(int, int) MAYBE_UNUSED; -@@ -188,31 +216,31 @@ static size_t dlmalloc_footprint(void) M - static size_t dlmalloc_max_footprint(void) MAYBE_UNUSED; - static void** dlindependent_calloc(size_t, size_t, void**) MAYBE_UNUSED; - static void** dlindependent_comalloc(size_t, size_t*, void**) MAYBE_UNUSED; - static void *dlpvalloc(size_t) MAYBE_UNUSED; - static int dlmalloc_trim(size_t) MAYBE_UNUSED; - static size_t dlmalloc_usable_size(void*) MAYBE_UNUSED; - static void dlmalloc_stats(void) MAYBE_UNUSED; - --#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) -+#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) - /* Use these for mmap and munmap within dlmalloc.c. */ - static void *dlmmap(void *, size_t, int, int, int, off_t); - static int dlmunmap(void *, size_t); --#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) */ -+#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */ - - #define mmap dlmmap - #define munmap dlmunmap - - #include "dlmalloc.c" - - #undef mmap - #undef munmap - --#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) -+#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) - - /* A mutex used to synchronize access to *exec* variables in this file. */ - static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER; - - /* A file descriptor of a temporary file from which we'll map - executable pages. */ - static int execfd = -1; - -@@ -231,17 +259,17 @@ open_temp_exec_file_name (char *name) - return fd; - } - - /* Open a temporary file in the named directory. */ - static int - open_temp_exec_file_dir (const char *dir) - { - static const char suffix[] = "/ffiXXXXXX"; -- int lendir = strlen (dir); -+ size_t lendir = strlen (dir); - char *tempname = __builtin_alloca (lendir + sizeof (suffix)); - - if (!tempname) - return -1; - - memcpy (tempname, dir, lendir); - memcpy (tempname + lendir, suffix, sizeof (suffix)); - -@@ -289,17 +317,17 @@ open_temp_exec_file_mnt (const char *mou - return -1; - - for (;;) - { - int fd; - struct mntent mnt; - char buf[MAXPATHLEN * 3]; - -- if (getmntent_r (last_mntent, &mnt, buf, sizeof (buf))) -+ if (getmntent_r (last_mntent, &mnt, buf, sizeof (buf)) == NULL) - return -1; - - if (hasmntopt (&mnt, "ro") - || hasmntopt (&mnt, "noexec") - || access (mnt.mnt_dir, W_OK)) - continue; - - fd = open_temp_exec_file_dir (mnt.mnt_dir); -@@ -349,17 +377,17 @@ open_temp_exec_file_opts_next (void) - open_temp_exec_file_opts_idx = 0; - return 1; - } - - return 0; - } - - /* Return a file descriptor of a temporary zero-sized file in a -- writable and exexutable filesystem. */ -+ writable and executable filesystem. */ - static int - open_temp_exec_file (void) - { - int fd; - - do - { - fd = open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func -@@ -448,16 +476,22 @@ dlmmap (void *start, size_t length, int - && prot == (PROT_READ | PROT_WRITE) - && flags == (MAP_PRIVATE | MAP_ANONYMOUS) - && fd == -1 && offset == 0); - - #if FFI_CLOSURE_TEST - printf ("mapping in %zi\n", length); - #endif - -+ if (execfd == -1 && is_emutramp_enabled ()) -+ { -+ ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset); -+ return ptr; -+ } -+ - if (execfd == -1 && !is_selinux_enabled ()) - { - ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset); - - if (ptr != MFAIL || (errno != EPERM && errno != EACCES)) - /* Cool, no need to mess with separate segments. */ - return ptr; - -@@ -517,17 +551,17 @@ segment_holding_code (mstate m, char* ad - && addr < add_segment_exec_offset (sp->base, sp) + sp->size) - return sp; - if ((sp = sp->next) == 0) - return 0; - } - } - #endif - --#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) */ -+#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */ - - /* Allocate a chunk of memory with the given size. Returns a pointer - to the writable address, and sets *CODE to the executable - corresponding virtual address. */ - void * - ffi_closure_alloc (size_t size, void **code) - { - void *ptr; -diff --git a/js/src/ctypes/libffi/src/cris/ffi.c b/js/src/ctypes/libffi/src/cris/ffi.c ---- a/js/src/ctypes/libffi/src/cris/ffi.c -+++ b/js/src/ctypes/libffi/src/cris/ffi.c -@@ -148,31 +148,34 @@ ffi_prep_args (char *stack, extended_cif - } - p_argv++; - argp += z; - } - - return (struct_count); - } - --ffi_status --ffi_prep_cif (ffi_cif * cif, -- ffi_abi abi, unsigned int nargs, -- ffi_type * rtype, ffi_type ** atypes) -+ffi_status FFI_HIDDEN -+ffi_prep_cif_core (ffi_cif * cif, -+ ffi_abi abi, unsigned int isvariadic, -+ unsigned int nfixedargs, unsigned int ntotalargs, -+ ffi_type * rtype, ffi_type ** atypes) - { - unsigned bytes = 0; - unsigned int i; - ffi_type **ptr; - - FFI_ASSERT (cif != NULL); -+ FFI_ASSERT((!isvariadic) || (nfixedargs >= 1)); -+ FFI_ASSERT(nfixedargs <= ntotalargs); - FFI_ASSERT (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI); - - cif->abi = abi; - cif->arg_types = atypes; -- cif->nargs = nargs; -+ cif->nargs = ntotalargs; - cif->rtype = rtype; - - cif->flags = 0; - - if ((cif->rtype->size == 0) - && (initialize_aggregate_packed_struct (cif->rtype) != FFI_OK)) - return FFI_BAD_TYPEDEF; - -diff --git a/js/src/ctypes/libffi/src/cris/ffitarget.h b/js/src/ctypes/libffi/src/cris/ffitarget.h ---- a/js/src/ctypes/libffi/src/cris/ffitarget.h -+++ b/js/src/ctypes/libffi/src/cris/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1996-2003 Red Hat, Inc. - Target configuration macros for CRIS. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,16 +23,20 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - #ifndef LIBFFI_ASM - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, - FFI_SYSV, - FFI_LAST_ABI, -diff --git a/js/src/ctypes/libffi/src/dlmalloc.c b/js/src/ctypes/libffi/src/dlmalloc.c ---- a/js/src/ctypes/libffi/src/dlmalloc.c -+++ b/js/src/ctypes/libffi/src/dlmalloc.c -@@ -617,16 +617,19 @@ DEFAULT_MMAP_THRESHOLD default: 25 - */ - - /* #define HAVE_USR_INCLUDE_MALLOC_H */ - - #ifdef HAVE_USR_INCLUDE_MALLOC_H - #include "/usr/include/malloc.h" - #else /* HAVE_USR_INCLUDE_MALLOC_H */ - -+/* HP-UX's stdlib.h redefines mallinfo unless _STRUCT_MALLINFO is defined */ -+#define _STRUCT_MALLINFO -+ - struct mallinfo { - MALLINFO_FIELD_TYPE arena; /* non-mmapped space allocated from system */ - MALLINFO_FIELD_TYPE ordblks; /* number of free chunks */ - MALLINFO_FIELD_TYPE smblks; /* always 0 */ - MALLINFO_FIELD_TYPE hblks; /* always 0 */ - MALLINFO_FIELD_TYPE hblkhd; /* space in mmapped regions */ - MALLINFO_FIELD_TYPE usmblks; /* maximum total allocated space */ - MALLINFO_FIELD_TYPE fsmblks; /* always 0 */ -@@ -1247,17 +1250,17 @@ extern void* sbrk(ptrdiff_t); - - /* ------------------- size_t and alignment properties -------------------- */ - - /* The byte and bit size of a size_t */ - #define SIZE_T_SIZE (sizeof(size_t)) - #define SIZE_T_BITSIZE (sizeof(size_t) << 3) - - /* Some constants coerced to size_t */ --/* Annoying but necessary to avoid errors on some plaftorms */ -+/* Annoying but necessary to avoid errors on some platforms */ - #define SIZE_T_ZERO ((size_t)0) - #define SIZE_T_ONE ((size_t)1) - #define SIZE_T_TWO ((size_t)2) - #define TWO_SIZE_T_SIZES (SIZE_T_SIZE<<1) - #define FOUR_SIZE_T_SIZES (SIZE_T_SIZE<<2) - #define SIX_SIZE_T_SIZES (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES) - #define HALF_MAX_SIZE_T (MAX_SIZE_T / 2U) - -@@ -1401,17 +1404,17 @@ static int win32munmap(void* ptr, size_t - #endif /* HAVE_MMAP && HAVE_MREMAP */ - - #if HAVE_MORECORE - #define CALL_MORECORE(S) MORECORE(S) - #else /* HAVE_MORECORE */ - #define CALL_MORECORE(S) MFAIL - #endif /* HAVE_MORECORE */ - --/* mstate bit set if continguous morecore disabled or failed */ -+/* mstate bit set if contiguous morecore disabled or failed */ - #define USE_NONCONTIGUOUS_BIT (4U) - - /* segment bit set in create_mspace_with_base */ - #define EXTERN_BIT (8U) - - - /* --------------------------- Lock preliminaries ------------------------ */ - -@@ -1653,17 +1656,17 @@ struct malloc_chunk { - size_t head; /* Size and inuse bits. */ - struct malloc_chunk* fd; /* double links -- used only if free. */ - struct malloc_chunk* bk; - }; - - typedef struct malloc_chunk mchunk; - typedef struct malloc_chunk* mchunkptr; - typedef struct malloc_chunk* sbinptr; /* The type of bins of chunks */ --typedef unsigned int bindex_t; /* Described below */ -+typedef size_t bindex_t; /* Described below */ - typedef unsigned int binmap_t; /* Described below */ - typedef unsigned int flag_t; /* The type of various bit flag sets */ - - /* ------------------- Chunks sizes and alignments ----------------------- */ - - #define MCHUNK_SIZE (sizeof(mchunk)) - - #if FOOTERS -@@ -3082,18 +3085,18 @@ static void internal_malloc_stats(mstate - - /* - Unlink steps: - - 1. If x is a chained node, unlink it from its same-sized fd/bk links - and choose its bk node as its replacement. - 2. If x was the last node of its size, but not a leaf node, it must - be replaced with a leaf node (not merely one with an open left or -- right), to make sure that lefts and rights of descendents -- correspond properly to bit masks. We use the rightmost descendent -+ right), to make sure that lefts and rights of descendants -+ correspond properly to bit masks. We use the rightmost descendant - of x. We could use any other leaf, but this is easy to locate and - tends to counteract removal of leftmosts elsewhere, and so keeps - paths shorter than minimally guaranteed. This doesn't loop much - because on average a node in a tree is near the bottom. - 3. If x is the base of a chain (i.e., has parent links) relink - x's parent and children to x's replacement (or null if none). - */ - -@@ -3380,17 +3383,17 @@ static void add_segment(mstate m, char* - init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); - - /* Set up segment record */ - assert(is_aligned(ss)); - set_size_and_pinuse_of_inuse_chunk(m, sp, ssize); - *ss = m->seg; /* Push current record */ - m->seg.base = tbase; - m->seg.size = tsize; -- set_segment_flags(&m->seg, mmapped); -+ (void)set_segment_flags(&m->seg, mmapped); - m->seg.next = ss; - - /* Insert trailing fenceposts */ - for (;;) { - mchunkptr nextp = chunk_plus_offset(p, SIZE_T_SIZE); - p->head = FENCEPOST_HEAD; - ++nfences; - if ((char*)(&(nextp->head)) < old_end) -@@ -3540,17 +3543,17 @@ static void* sys_alloc(mstate m, size_t - if (tbase != CMFAIL) { - - if ((m->footprint += tsize) > m->max_footprint) - m->max_footprint = m->footprint; - - if (!is_initialized(m)) { /* first-time initialization */ - m->seg.base = m->least_addr = tbase; - m->seg.size = tsize; -- set_segment_flags(&m->seg, mmap_flag); -+ (void)set_segment_flags(&m->seg, mmap_flag); - m->magic = mparams.magic; - init_bins(m); - if (is_global(m)) - init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); - else { - /* Offset top by embedded malloc_state */ - mchunkptr mn = next_chunk(mem2chunk(m)); - init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) -TOP_FOOT_SIZE); -@@ -5083,20 +5086,20 @@ History: - * Add linux mremap support code from HJ Liu - - V2.6.2 Tue Dec 5 06:52:55 1995 Doug Lea (dl at gee) - * Integrated most documentation with the code. - * Add support for mmap, with help from - Wolfram Gloger (Gloger@lrz.uni-muenchen.de). - * Use last_remainder in more cases. - * Pack bins using idea from colin@nyx10.cs.du.edu -- * Use ordered bins instead of best-fit threshhold -+ * Use ordered bins instead of best-fit threshold - * Eliminate block-local decls to simplify tracing and debugging. - * Support another case of realloc via move into top -- * Fix error occuring when initial sbrk_base not word-aligned. -+ * Fix error occurring when initial sbrk_base not word-aligned. - * Rely on page size for units instead of SBRK_UNIT to - avoid surprises about sbrk alignment conventions. - * Add mallinfo, mallopt. Thanks to Raymond Nijssen - (raymond@es.ele.tue.nl) for the suggestion. - * Add `pad' argument to malloc_trim and top_pad mallopt parameter. - * More precautions for cases where other routines call sbrk, - courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de). - * Added macros etc., allowing use in linux libc from -diff --git a/js/src/ctypes/libffi/src/frv/ffitarget.h b/js/src/ctypes/libffi/src/frv/ffitarget.h ---- a/js/src/ctypes/libffi/src/frv/ffitarget.h -+++ b/js/src/ctypes/libffi/src/frv/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2004 Red Hat, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1996-2004 Red Hat, Inc. - Target configuration macros for FR-V - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,16 +23,20 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - /* ---- System specific configurations ----------------------------------- */ - - #ifndef LIBFFI_ASM - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, -diff --git a/js/src/ctypes/libffi/src/ia64/ffi.c b/js/src/ctypes/libffi/src/ia64/ffi.c ---- a/js/src/ctypes/libffi/src/ia64/ffi.c -+++ b/js/src/ctypes/libffi/src/ia64/ffi.c -@@ -1,11 +1,12 @@ - /* ----------------------------------------------------------------------- -- ffi.c - Copyright (c) 1998, 2007, 2008 Red Hat, Inc. -+ ffi.c - Copyright (c) 1998, 2007, 2008, 2012 Red Hat, Inc. - Copyright (c) 2000 Hewlett Packard Company -+ Copyright (c) 2011 Anthony Green - - IA64 Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -319,23 +320,27 @@ ffi_call(ffi_cif *cif, void (*fn)(void), - - case FFI_TYPE_POINTER: - stack->gp_regs[gpcount++] = (UINT64)(PTR64) *(void **)avalue[i]; - break; - - case FFI_TYPE_FLOAT: - if (gpcount < 8 && fpcount < 8) - stf_spill (&stack->fp_regs[fpcount++], *(float *)avalue[i]); -- stack->gp_regs[gpcount++] = *(UINT32 *)avalue[i]; -+ { -+ UINT32 tmp; -+ memcpy (&tmp, avalue[i], sizeof (UINT32)); -+ stack->gp_regs[gpcount++] = tmp; -+ } - break; - - case FFI_TYPE_DOUBLE: - if (gpcount < 8 && fpcount < 8) - stf_spill (&stack->fp_regs[fpcount++], *(double *)avalue[i]); -- stack->gp_regs[gpcount++] = *(UINT64 *)avalue[i]; -+ memcpy (&stack->gp_regs[gpcount++], avalue[i], sizeof (UINT64)); - break; - - case FFI_TYPE_LONGDOUBLE: - if (gpcount & 1) - gpcount++; - if (LDBL_MANT_DIG == 64 && gpcount < 8 && fpcount < 8) - stf_spill (&stack->fp_regs[fpcount++], *(__float80 *)avalue[i]); - memcpy (&stack->gp_regs[gpcount], avalue[i], 16); -@@ -391,17 +396,17 @@ ffi_call(ffi_cif *cif, void (*fn)(void), - interpreted procedure, into a closure. - - For IA64, function pointer are already pairs consisting of a code - pointer, and a gp pointer. The latter is needed to access global - variables. Here we set up such a pair as the first two words of - the closure (in the "trampoline" area), but we replace the gp - pointer with a pointer to the closure itself. We also add the real - gp pointer to the closure. This allows the function entry code to -- both retrieve the user data, and to restire the correct gp pointer. */ -+ both retrieve the user data, and to restore the correct gp pointer. */ - - extern void ffi_closure_unix (); - - ffi_status - ffi_prep_closure_loc (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data, -@@ -420,17 +425,18 @@ ffi_prep_closure_loc (ffi_closure* closu - UINT64 code_pointer; /* Pointer to ffi_closure_unix. */ - UINT64 fake_gp; /* Pointer to closure, installed as gp. */ - UINT64 real_gp; /* Real gp value. */ - }; - - struct ffi_ia64_trampoline_struct *tramp; - struct ia64_fd *fd; - -- FFI_ASSERT (cif->abi == FFI_UNIX); -+ if (cif->abi != FFI_UNIX) -+ return FFI_BAD_ABI; - - tramp = (struct ffi_ia64_trampoline_struct *)closure->tramp; - fd = (struct ia64_fd *)(void *)ffi_closure_unix; - - tramp->code_pointer = fd->code_pointer; - tramp->real_gp = fd->gp; - tramp->fake_gp = (UINT64)(PTR64)codeloc; - closure->cif = cif; -diff --git a/js/src/ctypes/libffi/src/ia64/ffitarget.h b/js/src/ctypes/libffi/src/ia64/ffitarget.h ---- a/js/src/ctypes/libffi/src/ia64/ffitarget.h -+++ b/js/src/ctypes/libffi/src/ia64/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1996-2003 Red Hat, Inc. - Target configuration macros for IA-64. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,16 +23,20 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - #ifndef LIBFFI_ASM - typedef unsigned long long ffi_arg; - typedef signed long long ffi_sarg; - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, - FFI_UNIX, /* Linux and all Unix variants use the same conventions */ - FFI_LAST_ABI, -diff --git a/js/src/ctypes/libffi/src/java_raw_api.c b/js/src/ctypes/libffi/src/java_raw_api.c ---- a/js/src/ctypes/libffi/src/java_raw_api.c -+++ b/js/src/ctypes/libffi/src/java_raw_api.c -@@ -306,17 +306,17 @@ void ffi_java_raw_call (ffi_cif *cif, vo - static void - ffi_java_translate_args (ffi_cif *cif, void *rvalue, - void **avalue, void *user_data) - { - ffi_java_raw *raw = (ffi_java_raw*)alloca (ffi_java_raw_size (cif)); - ffi_raw_closure *cl = (ffi_raw_closure*)user_data; - - ffi_java_ptrarray_to_raw (cif, avalue, raw); -- (*cl->fun) (cif, rvalue, raw, cl->user_data); -+ (*cl->fun) (cif, rvalue, (ffi_raw*)raw, cl->user_data); - ffi_java_raw_to_rvalue (cif, rvalue); - } - - ffi_status - ffi_prep_java_raw_closure_loc (ffi_java_raw_closure* cl, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), - void *user_data, -diff --git a/js/src/ctypes/libffi/src/m32r/ffitarget.h b/js/src/ctypes/libffi/src/m32r/ffitarget.h ---- a/js/src/ctypes/libffi/src/m32r/ffitarget.h -+++ b/js/src/ctypes/libffi/src/m32r/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 2004 Renesas Technology. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 2004 Renesas Technology. - Target configuration macros for M32R. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -21,16 +22,20 @@ - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - /* ---- Generic type definitions ----------------------------------------- */ - - #ifndef LIBFFI_ASM - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - - typedef enum ffi_abi - { -diff --git a/js/src/ctypes/libffi/src/m68k/ffi.c b/js/src/ctypes/libffi/src/m68k/ffi.c ---- a/js/src/ctypes/libffi/src/m68k/ffi.c -+++ b/js/src/ctypes/libffi/src/m68k/ffi.c -@@ -1,21 +1,30 @@ - /* ----------------------------------------------------------------------- - ffi.c -- -- m68k Foreign Function Interface -+ -+ m68k Foreign Function Interface - ----------------------------------------------------------------------- */ - - #include - #include - - #include - #include -+#ifdef __rtems__ -+void rtems_cache_flush_multiple_data_lines( const void *, size_t ); -+#else - #include -+#ifdef __MINT__ -+#include -+#include -+#else - #include -+#endif -+#endif - - void ffi_call_SYSV (extended_cif *, - unsigned, unsigned, - void *, void (*fn) ()); - void *ffi_prep_args (void *stack, extended_cif *ecif); - void ffi_closure_SYSV (ffi_closure *); - void ffi_closure_struct_SYSV (ffi_closure *); - unsigned int ffi_closure_SYSV_inner (ffi_closure *closure, -@@ -30,34 +39,38 @@ ffi_prep_args (void *stack, extended_cif - unsigned int i; - void **p_argv; - char *argp; - ffi_type **p_arg; - void *struct_value_ptr; - - argp = stack; - -- if (ecif->cif->rtype->type == FFI_TYPE_STRUCT -- && !ecif->cif->flags) -+ if ( -+#ifdef __MINT__ -+ (ecif->cif->rtype->type == FFI_TYPE_LONGDOUBLE) || -+#endif -+ (((ecif->cif->rtype->type == FFI_TYPE_STRUCT) -+ && !ecif->cif->flags))) - struct_value_ptr = ecif->rvalue; - else - struct_value_ptr = NULL; - - p_argv = ecif->avalue; - - for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; - i != 0; - i--, p_arg++) - { -- size_t z; -+ size_t z = (*p_arg)->size; -+ int type = (*p_arg)->type; - -- z = (*p_arg)->size; - if (z < sizeof (int)) - { -- switch ((*p_arg)->type) -+ switch (type) - { - case FFI_TYPE_SINT8: - *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; - break; - - case FFI_TYPE_UINT8: - *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; - break; -@@ -66,17 +79,24 @@ ffi_prep_args (void *stack, extended_cif - *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; - break; - - case FFI_TYPE_UINT16: - *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; - break; - - case FFI_TYPE_STRUCT: -+#ifdef __MINT__ -+ if (z == 1 || z == 2) -+ memcpy (argp + 2, *p_argv, z); -+ else -+ memcpy (argp, *p_argv, z); -+#else - memcpy (argp + sizeof (int) - z, *p_argv, z); -+#endif - break; - - default: - FFI_ASSERT (0); - } - z = sizeof (int); - } - else -@@ -98,40 +118,59 @@ ffi_prep_args (void *stack, extended_cif - #define CIF_FLAGS_INT 1 - #define CIF_FLAGS_DINT 2 - #define CIF_FLAGS_FLOAT 4 - #define CIF_FLAGS_DOUBLE 8 - #define CIF_FLAGS_LDOUBLE 16 - #define CIF_FLAGS_POINTER 32 - #define CIF_FLAGS_STRUCT1 64 - #define CIF_FLAGS_STRUCT2 128 -+#define CIF_FLAGS_SINT8 256 -+#define CIF_FLAGS_SINT16 512 - - /* Perform machine dependent cif processing */ - ffi_status - ffi_prep_cif_machdep (ffi_cif *cif) - { - /* Set the return type flag */ - switch (cif->rtype->type) - { - case FFI_TYPE_VOID: - cif->flags = 0; - break; - - case FFI_TYPE_STRUCT: -+ if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT && -+ cif->rtype->elements[1]) -+ { -+ cif->flags = 0; -+ break; -+ } -+ - switch (cif->rtype->size) - { - case 1: -+#ifdef __MINT__ -+ cif->flags = CIF_FLAGS_STRUCT2; -+#else - cif->flags = CIF_FLAGS_STRUCT1; -+#endif - break; - case 2: - cif->flags = CIF_FLAGS_STRUCT2; - break; -+#ifdef __MINT__ -+ case 3: -+#endif - case 4: - cif->flags = CIF_FLAGS_INT; - break; -+#ifdef __MINT__ -+ case 7: -+#endif - case 8: - cif->flags = CIF_FLAGS_DINT; - break; - default: - cif->flags = 0; - break; - } - break; -@@ -139,29 +178,43 @@ ffi_prep_cif_machdep (ffi_cif *cif) - case FFI_TYPE_FLOAT: - cif->flags = CIF_FLAGS_FLOAT; - break; - - case FFI_TYPE_DOUBLE: - cif->flags = CIF_FLAGS_DOUBLE; - break; - -+#if (FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE) - case FFI_TYPE_LONGDOUBLE: -+#ifdef __MINT__ -+ cif->flags = 0; -+#else - cif->flags = CIF_FLAGS_LDOUBLE; -+#endif - break; -+#endif - - case FFI_TYPE_POINTER: - cif->flags = CIF_FLAGS_POINTER; - break; - - case FFI_TYPE_SINT64: - case FFI_TYPE_UINT64: - cif->flags = CIF_FLAGS_DINT; - break; - -+ case FFI_TYPE_SINT16: -+ cif->flags = CIF_FLAGS_SINT16; -+ break; -+ -+ case FFI_TYPE_SINT8: -+ cif->flags = CIF_FLAGS_SINT8; -+ break; -+ - default: - cif->flags = CIF_FLAGS_INT; - break; - } - - return FFI_OK; - } - -@@ -207,16 +260,36 @@ ffi_prep_incoming_args_SYSV (char *stack - argp = stack; - p_argv = avalue; - - for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) - { - size_t z; - - z = (*p_arg)->size; -+#ifdef __MINT__ -+ if (cif->flags && -+ cif->rtype->type == FFI_TYPE_STRUCT && -+ (z == 1 || z == 2)) -+ { -+ *p_argv = (void *) (argp + 2); -+ -+ z = 4; -+ } -+ else -+ if (cif->flags && -+ cif->rtype->type == FFI_TYPE_STRUCT && -+ (z == 3 || z == 4)) -+ { -+ *p_argv = (void *) (argp); -+ -+ z = 4; -+ } -+ else -+#endif - if (z <= 4) - { - *p_argv = (void *) (argp + 4 - z); - - z = 4; - } - else - { -@@ -250,29 +323,40 @@ ffi_closure_SYSV_inner (ffi_closure *clo - - ffi_status - ffi_prep_closure_loc (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data, - void *codeloc) - { -- FFI_ASSERT (cif->abi == FFI_SYSV); -+ if (cif->abi != FFI_SYSV) -+ return FFI_BAD_ABI; - - *(unsigned short *)closure->tramp = 0x207c; - *(void **)(closure->tramp + 2) = codeloc; - *(unsigned short *)(closure->tramp + 6) = 0x4ef9; -- if (cif->rtype->type == FFI_TYPE_STRUCT -- && !cif->flags) -+ -+ if ( -+#ifdef __MINT__ -+ (cif->rtype->type == FFI_TYPE_LONGDOUBLE) || -+#endif -+ (((cif->rtype->type == FFI_TYPE_STRUCT) -+ && !cif->flags))) - *(void **)(closure->tramp + 8) = ffi_closure_struct_SYSV; - else - *(void **)(closure->tramp + 8) = ffi_closure_SYSV; - -+#ifdef __rtems__ -+ rtems_cache_flush_multiple_data_lines( codeloc, FFI_TRAMPOLINE_SIZE ); -+#elif defined(__MINT__) -+ Ssystem(S_FLUSHCACHE, codeloc, FFI_TRAMPOLINE_SIZE); -+#else - syscall(SYS_cacheflush, codeloc, FLUSH_SCOPE_LINE, - FLUSH_CACHE_BOTH, FFI_TRAMPOLINE_SIZE); -+#endif - - closure->cif = cif; - closure->user_data = user_data; - closure->fun = fun; - - return FFI_OK; - } -- -diff --git a/js/src/ctypes/libffi/src/m68k/ffitarget.h b/js/src/ctypes/libffi/src/m68k/ffitarget.h ---- a/js/src/ctypes/libffi/src/m68k/ffitarget.h -+++ b/js/src/ctypes/libffi/src/m68k/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1996-2003 Red Hat, Inc. - Target configuration macros for Motorola 68K. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,16 +23,20 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - #ifndef LIBFFI_ASM - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, - FFI_SYSV, - FFI_LAST_ABI, -diff --git a/js/src/ctypes/libffi/src/m68k/sysv.S b/js/src/ctypes/libffi/src/m68k/sysv.S ---- a/js/src/ctypes/libffi/src/m68k/sysv.S -+++ b/js/src/ctypes/libffi/src/m68k/sysv.S -@@ -1,13 +1,16 @@ - /* ----------------------------------------------------------------------- -- sysv.S - Copyright (c) 1998 Andreas Schwab -- Copyright (c) 2008 Red Hat, Inc. -- -- m68k Foreign Function Interface -+ -+ sysv.S - Copyright (c) 2012 Alan Hourihane -+ Copyright (c) 1998, 2012 Andreas Schwab -+ Copyright (c) 2008 Red Hat, Inc. -+ Copyright (c) 2012 Thorsten Glaser -+ -+ m68k Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: -@@ -36,61 +39,76 @@ - #define CFI_ENDPROC() .cfi_endproc - #else - #define CFI_STARTPROC() - #define CFI_OFFSET(reg,off) - #define CFI_DEF_CFA(reg,off) - #define CFI_ENDPROC() - #endif - -+#ifdef __MINT__ -+#define CALLFUNC(funcname) _ ## funcname -+#else -+#define CALLFUNC(funcname) funcname -+#endif -+ - .text - -- .globl ffi_call_SYSV -- .type ffi_call_SYSV,@function -+ .globl CALLFUNC(ffi_call_SYSV) -+ .type CALLFUNC(ffi_call_SYSV),@function - .align 4 - --ffi_call_SYSV: -+CALLFUNC(ffi_call_SYSV): - CFI_STARTPROC() - link %fp,#0 - CFI_OFFSET(14,-8) - CFI_DEF_CFA(14,8) - move.l %d2,-(%sp) - CFI_OFFSET(2,-12) - - | Make room for all of the new args. - sub.l 12(%fp),%sp - - | Call ffi_prep_args - move.l 8(%fp),-(%sp) - pea 4(%sp) - #if !defined __PIC__ -- jsr ffi_prep_args -+ jsr CALLFUNC(ffi_prep_args) - #else -- bsr.l ffi_prep_args@PLTPC -+ bsr.l CALLFUNC(ffi_prep_args@PLTPC) - #endif - addq.l #8,%sp - - | Pass pointer to struct value, if any -+#ifdef __MINT__ -+ move.l %d0,%a1 -+#else - move.l %a0,%a1 -+#endif - - | Call the function - move.l 24(%fp),%a0 - jsr (%a0) - - | Remove the space we pushed for the args - add.l 12(%fp),%sp - - | Load the pointer to storage for the return value - move.l 20(%fp),%a1 - - | Load the return type code - move.l 16(%fp),%d2 - - | If the return value pointer is NULL, assume no return value. -+ | NOTE: On the mc68000, tst on an address register is not supported. -+#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) -+ cmp.w #0, %a1 -+#else - tst.l %a1 -+#endif - jbeq noretval - - btst #0,%d2 - jbeq retlongint - move.l %d0,(%a1) - jbra epilogue - - retlongint: -@@ -98,137 +116,215 @@ retlongint: - jbeq retfloat - move.l %d0,(%a1) - move.l %d1,4(%a1) - jbra epilogue - - retfloat: - btst #2,%d2 - jbeq retdouble -+#if defined(__MC68881__) || defined(__HAVE_68881__) - fmove.s %fp0,(%a1) -+#else -+ move.l %d0,(%a1) -+#endif - jbra epilogue - - retdouble: - btst #3,%d2 - jbeq retlongdouble -+#if defined(__MC68881__) || defined(__HAVE_68881__) - fmove.d %fp0,(%a1) -+#else -+ move.l %d0,(%a1)+ -+ move.l %d1,(%a1) -+#endif - jbra epilogue - - retlongdouble: - btst #4,%d2 - jbeq retpointer -+#if defined(__MC68881__) || defined(__HAVE_68881__) - fmove.x %fp0,(%a1) -+#else -+ move.l %d0,(%a1)+ -+ move.l %d1,(%a1)+ -+ move.l %d2,(%a1) -+#endif - jbra epilogue - - retpointer: - btst #5,%d2 - jbeq retstruct1 -+#ifdef __MINT__ -+ move.l %d0,(%a1) -+#else - move.l %a0,(%a1) -+#endif - jbra epilogue - - retstruct1: - btst #6,%d2 - jbeq retstruct2 - move.b %d0,(%a1) - jbra epilogue - - retstruct2: - btst #7,%d2 -+ jbeq retsint8 -+ move.w %d0,(%a1) -+ jbra epilogue -+ -+retsint8: -+ btst #8,%d2 -+ jbeq retsint16 -+ | NOTE: On the mc68000, extb is not supported. 8->16, then 16->32. -+#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) -+ ext.w %d0 -+ ext.l %d0 -+#else -+ extb.l %d0 -+#endif -+ move.l %d0,(%a1) -+ jbra epilogue -+ -+retsint16: -+ btst #9,%d2 - jbeq noretval -- move.w %d0,(%a1) -+ ext.l %d0 -+ move.l %d0,(%a1) - - noretval: - epilogue: - move.l (%sp)+,%d2 - unlk %fp - rts - CFI_ENDPROC() -- .size ffi_call_SYSV,.-ffi_call_SYSV -+ .size CALLFUNC(ffi_call_SYSV),.-CALLFUNC(ffi_call_SYSV) - -- .globl ffi_closure_SYSV -- .type ffi_closure_SYSV, @function -+ .globl CALLFUNC(ffi_closure_SYSV) -+ .type CALLFUNC(ffi_closure_SYSV), @function - .align 4 - --ffi_closure_SYSV: -+CALLFUNC(ffi_closure_SYSV): - CFI_STARTPROC() - link %fp,#-12 - CFI_OFFSET(14,-8) - CFI_DEF_CFA(14,8) - move.l %sp,-12(%fp) - pea 8(%fp) - pea -12(%fp) - move.l %a0,-(%sp) - #if !defined __PIC__ -- jsr ffi_closure_SYSV_inner -+ jsr CALLFUNC(ffi_closure_SYSV_inner) - #else -- bsr.l ffi_closure_SYSV_inner@PLTPC -+ bsr.l CALLFUNC(ffi_closure_SYSV_inner@PLTPC) - #endif - - lsr.l #1,%d0 - jne 1f - jcc .Lcls_epilogue -+ | CIF_FLAGS_INT - move.l -12(%fp),%d0 - .Lcls_epilogue: -+ | no CIF_FLAGS_* - unlk %fp - rts - 1: - lea -12(%fp),%a0 - lsr.l #2,%d0 - jne 1f - jcs .Lcls_ret_float -+ | CIF_FLAGS_DINT - move.l (%a0)+,%d0 - move.l (%a0),%d1 - jra .Lcls_epilogue - .Lcls_ret_float: -+#if defined(__MC68881__) || defined(__HAVE_68881__) - fmove.s (%a0),%fp0 -+#else -+ move.l (%a0),%d0 -+#endif - jra .Lcls_epilogue - 1: - lsr.l #2,%d0 - jne 1f - jcs .Lcls_ret_ldouble -+ | CIF_FLAGS_DOUBLE -+#if defined(__MC68881__) || defined(__HAVE_68881__) - fmove.d (%a0),%fp0 -+#else -+ move.l (%a0)+,%d0 -+ move.l (%a0),%d1 -+#endif - jra .Lcls_epilogue - .Lcls_ret_ldouble: -+#if defined(__MC68881__) || defined(__HAVE_68881__) - fmove.x (%a0),%fp0 -+#else -+ move.l (%a0)+,%d0 -+ move.l (%a0)+,%d1 -+ move.l (%a0),%d2 -+#endif - jra .Lcls_epilogue - 1: - lsr.l #2,%d0 -- jne .Lcls_ret_struct2 -+ jne 1f - jcs .Lcls_ret_struct1 -+ | CIF_FLAGS_POINTER - move.l (%a0),%a0 - move.l %a0,%d0 - jra .Lcls_epilogue - .Lcls_ret_struct1: - move.b (%a0),%d0 - jra .Lcls_epilogue --.Lcls_ret_struct2: -+1: -+ lsr.l #2,%d0 -+ jne 1f -+ jcs .Lcls_ret_sint8 -+ | CIF_FLAGS_STRUCT2 - move.w (%a0),%d0 - jra .Lcls_epilogue -+.Lcls_ret_sint8: -+ move.l (%a0),%d0 -+ | NOTE: On the mc68000, extb is not supported. 8->16, then 16->32. -+#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) -+ ext.w %d0 -+ ext.l %d0 -+#else -+ extb.l %d0 -+#endif -+ jra .Lcls_epilogue -+1: -+ | CIF_FLAGS_SINT16 -+ move.l (%a0),%d0 -+ ext.l %d0 -+ jra .Lcls_epilogue - CFI_ENDPROC() - -- .size ffi_closure_SYSV,.-ffi_closure_SYSV -+ .size CALLFUNC(ffi_closure_SYSV),.-CALLFUNC(ffi_closure_SYSV) - -- .globl ffi_closure_struct_SYSV -- .type ffi_closure_struct_SYSV, @function -+ .globl CALLFUNC(ffi_closure_struct_SYSV) -+ .type CALLFUNC(ffi_closure_struct_SYSV), @function - .align 4 - --ffi_closure_struct_SYSV: -+CALLFUNC(ffi_closure_struct_SYSV): - CFI_STARTPROC() - link %fp,#0 - CFI_OFFSET(14,-8) - CFI_DEF_CFA(14,8) - move.l %sp,-12(%fp) - pea 8(%fp) - move.l %a1,-(%sp) - move.l %a0,-(%sp) - #if !defined __PIC__ -- jsr ffi_closure_SYSV_inner -+ jsr CALLFUNC(ffi_closure_SYSV_inner) - #else -- bsr.l ffi_closure_SYSV_inner@PLTPC -+ bsr.l CALLFUNC(ffi_closure_SYSV_inner@PLTPC) - #endif - unlk %fp - rts - CFI_ENDPROC() -- .size ffi_closure_struct_SYSV,.-ffi_closure_struct_SYSV -+ .size CALLFUNC(ffi_closure_struct_SYSV),.-CALLFUNC(ffi_closure_struct_SYSV) - - #if defined __ELF__ && defined __linux__ - .section .note.GNU-stack,"",@progbits - #endif -diff --git a/js/src/ctypes/libffi/src/m88k/ffi.c b/js/src/ctypes/libffi/src/m88k/ffi.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/m88k/ffi.c -@@ -0,0 +1,400 @@ -+/* -+ * Copyright (c) 2013 Miodrag Vallat. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining -+ * a copy of this software and associated documentation files (the -+ * ``Software''), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sublicense, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/* -+ * m88k Foreign Function Interface -+ * -+ * This file attempts to provide all the FFI entry points which can reliably -+ * be implemented in C. -+ * -+ * Only OpenBSD/m88k is currently supported; other platforms (such as -+ * Motorola's SysV/m88k) could be supported with the following tweaks: -+ * -+ * - non-OpenBSD systems use an `outgoing parameter area' as part of the -+ * 88BCS calling convention, which is not supported under OpenBSD from -+ * release 3.6 onwards. Supporting it should be as easy as taking it -+ * into account when adjusting the stack, in the assembly code. -+ * -+ * - the logic deciding whether a function argument gets passed through -+ * registers, or on the stack, has changed several times in OpenBSD in -+ * edge cases (especially for structs larger than 32 bytes being passed -+ * by value). The code below attemps to match the logic used by the -+ * system compiler of OpenBSD 5.3, i.e. gcc 3.3.6 with many m88k backend -+ * fixes. -+ */ -+ -+#include -+#include -+ -+#include -+#include -+ -+void ffi_call_OBSD (unsigned int, extended_cif *, unsigned int, void *, -+ void (*fn) ()); -+void *ffi_prep_args (void *, extended_cif *); -+void ffi_closure_OBSD (ffi_closure *); -+void ffi_closure_struct_OBSD (ffi_closure *); -+unsigned int ffi_closure_OBSD_inner (ffi_closure *, void *, unsigned int *, -+ char *); -+void ffi_cacheflush_OBSD (unsigned int, unsigned int); -+ -+#define CIF_FLAGS_INT (1 << 0) -+#define CIF_FLAGS_DINT (1 << 1) -+ -+/* -+ * Foreign Function Interface API -+ */ -+ -+/* ffi_prep_args is called by the assembly routine once stack space has -+ been allocated for the function's arguments. */ -+ -+void * -+ffi_prep_args (void *stack, extended_cif *ecif) -+{ -+ unsigned int i; -+ void **p_argv; -+ char *argp, *stackp; -+ unsigned int *regp; -+ unsigned int regused; -+ ffi_type **p_arg; -+ void *struct_value_ptr; -+ -+ regp = (unsigned int *)stack; -+ stackp = (char *)(regp + 8); -+ regused = 0; -+ -+ if (ecif->cif->rtype->type == FFI_TYPE_STRUCT -+ && !ecif->cif->flags) -+ struct_value_ptr = ecif->rvalue; -+ else -+ struct_value_ptr = NULL; -+ -+ p_argv = ecif->avalue; -+ -+ for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i != 0; i--, p_arg++) -+ { -+ size_t z; -+ unsigned short t, a; -+ -+ z = (*p_arg)->size; -+ t = (*p_arg)->type; -+ a = (*p_arg)->alignment; -+ -+ /* -+ * Figure out whether the argument can be passed through registers -+ * or on the stack. -+ * The rule is that registers can only receive simple types not larger -+ * than 64 bits, or structs the exact size of a register and aligned to -+ * the size of a register. -+ */ -+ if (t == FFI_TYPE_STRUCT) -+ { -+ if (z == sizeof (int) && a == sizeof (int) && regused < 8) -+ argp = (char *)regp; -+ else -+ argp = stackp; -+ } -+ else -+ { -+ if (z > sizeof (int) && regused < 8 - 1) -+ { -+ /* align to an even register pair */ -+ if (regused & 1) -+ { -+ regp++; -+ regused++; -+ } -+ } -+ if (regused < 8) -+ argp = (char *)regp; -+ else -+ argp = stackp; -+ } -+ -+ /* Enforce proper stack alignment of 64-bit types */ -+ if (argp == stackp && a > sizeof (int)) -+ { -+ stackp = (char *) ALIGN(stackp, a); -+ argp = stackp; -+ } -+ -+ switch (t) -+ { -+ case FFI_TYPE_SINT8: -+ *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; -+ break; -+ -+ case FFI_TYPE_UINT8: -+ *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; -+ break; -+ -+ case FFI_TYPE_SINT16: -+ *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; -+ break; -+ -+ case FFI_TYPE_UINT16: -+ *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; -+ break; -+ -+ case FFI_TYPE_INT: -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_POINTER: -+ *(unsigned int *) argp = *(unsigned int *) *p_argv; -+ break; -+ -+ case FFI_TYPE_DOUBLE: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_STRUCT: -+ memcpy (argp, *p_argv, z); -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ } -+ -+ /* Align if necessary. */ -+ if ((sizeof (int) - 1) & z) -+ z = ALIGN(z, sizeof (int)); -+ -+ p_argv++; -+ -+ /* Be careful, once all registers are filled, and about to continue -+ on stack, regp == stackp. Therefore the check for regused as well. */ -+ if (argp == (char *)regp && regused < 8) -+ { -+ regp += z / sizeof (int); -+ regused += z / sizeof (int); -+ } -+ else -+ stackp += z; -+ } -+ -+ return struct_value_ptr; -+} -+ -+/* Perform machine dependent cif processing */ -+ffi_status -+ffi_prep_cif_machdep (ffi_cif *cif) -+{ -+ /* Set the return type flag */ -+ switch (cif->rtype->type) -+ { -+ case FFI_TYPE_VOID: -+ cif->flags = 0; -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ if (cif->rtype->size == sizeof (int) && -+ cif->rtype->alignment == sizeof (int)) -+ cif->flags = CIF_FLAGS_INT; -+ else -+ cif->flags = 0; -+ break; -+ -+ case FFI_TYPE_DOUBLE: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_UINT64: -+ cif->flags = CIF_FLAGS_DINT; -+ break; -+ -+ default: -+ cif->flags = CIF_FLAGS_INT; -+ break; -+ } -+ -+ return FFI_OK; -+} -+ -+void -+ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue) -+{ -+ extended_cif ecif; -+ -+ ecif.cif = cif; -+ ecif.avalue = avalue; -+ -+ /* If the return value is a struct and we don't have a return value -+ address then we need to make one. */ -+ -+ if (rvalue == NULL -+ && cif->rtype->type == FFI_TYPE_STRUCT -+ && (cif->rtype->size != sizeof (int) -+ || cif->rtype->alignment != sizeof (int))) -+ ecif.rvalue = alloca (cif->rtype->size); -+ else -+ ecif.rvalue = rvalue; -+ -+ switch (cif->abi) -+ { -+ case FFI_OBSD: -+ ffi_call_OBSD (cif->bytes, &ecif, cif->flags, ecif.rvalue, fn); -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+} -+ -+/* -+ * Closure API -+ */ -+ -+static void -+ffi_prep_closure_args_OBSD (ffi_cif *cif, void **avalue, unsigned int *regp, -+ char *stackp) -+{ -+ unsigned int i; -+ void **p_argv; -+ char *argp; -+ unsigned int regused; -+ ffi_type **p_arg; -+ -+ regused = 0; -+ -+ p_argv = avalue; -+ -+ for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++) -+ { -+ size_t z; -+ unsigned short t, a; -+ -+ z = (*p_arg)->size; -+ t = (*p_arg)->type; -+ a = (*p_arg)->alignment; -+ -+ /* -+ * Figure out whether the argument has been passed through registers -+ * or on the stack. -+ * The rule is that registers can only receive simple types not larger -+ * than 64 bits, or structs the exact size of a register and aligned to -+ * the size of a register. -+ */ -+ if (t == FFI_TYPE_STRUCT) -+ { -+ if (z == sizeof (int) && a == sizeof (int) && regused < 8) -+ argp = (char *)regp; -+ else -+ argp = stackp; -+ } -+ else -+ { -+ if (z > sizeof (int) && regused < 8 - 1) -+ { -+ /* align to an even register pair */ -+ if (regused & 1) -+ { -+ regp++; -+ regused++; -+ } -+ } -+ if (regused < 8) -+ argp = (char *)regp; -+ else -+ argp = stackp; -+ } -+ -+ /* Enforce proper stack alignment of 64-bit types */ -+ if (argp == stackp && a > sizeof (int)) -+ { -+ stackp = (char *) ALIGN(stackp, a); -+ argp = stackp; -+ } -+ -+ if (z < sizeof (int) && t != FFI_TYPE_STRUCT) -+ *p_argv = (void *) (argp + sizeof (int) - z); -+ else -+ *p_argv = (void *) argp; -+ -+ /* Align if necessary */ -+ if ((sizeof (int) - 1) & z) -+ z = ALIGN(z, sizeof (int)); -+ -+ p_argv++; -+ -+ /* Be careful, once all registers are exhausted, and about to fetch from -+ stack, regp == stackp. Therefore the check for regused as well. */ -+ if (argp == (char *)regp && regused < 8) -+ { -+ regp += z / sizeof (int); -+ regused += z / sizeof (int); -+ } -+ else -+ stackp += z; -+ } -+} -+ -+unsigned int -+ffi_closure_OBSD_inner (ffi_closure *closure, void *resp, unsigned int *regp, -+ char *stackp) -+{ -+ ffi_cif *cif; -+ void **arg_area; -+ -+ cif = closure->cif; -+ arg_area = (void**) alloca (cif->nargs * sizeof (void *)); -+ -+ ffi_prep_closure_args_OBSD(cif, arg_area, regp, stackp); -+ -+ (closure->fun) (cif, resp, arg_area, closure->user_data); -+ -+ return cif->flags; -+} -+ -+ffi_status -+ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, -+ void (*fun)(ffi_cif*,void*,void**,void*), -+ void *user_data, void *codeloc) -+{ -+ unsigned int *tramp = (unsigned int *) codeloc; -+ void *fn; -+ -+ FFI_ASSERT (cif->abi == FFI_OBSD); -+ -+ if (cif->rtype->type == FFI_TYPE_STRUCT && !cif->flags) -+ fn = &ffi_closure_struct_OBSD; -+ else -+ fn = &ffi_closure_OBSD; -+ -+ /* or.u %r10, %r0, %hi16(fn) */ -+ tramp[0] = 0x5d400000 | (((unsigned int)fn) >> 16); -+ /* or.u %r13, %r0, %hi16(closure) */ -+ tramp[1] = 0x5da00000 | ((unsigned int)closure >> 16); -+ /* or %r10, %r10, %lo16(fn) */ -+ tramp[2] = 0x594a0000 | (((unsigned int)fn) & 0xffff); -+ /* jmp.n %r10 */ -+ tramp[3] = 0xf400c40a; -+ /* or %r13, %r13, %lo16(closure) */ -+ tramp[4] = 0x59ad0000 | ((unsigned int)closure & 0xffff); -+ -+ ffi_cacheflush_OBSD((unsigned int)codeloc, FFI_TRAMPOLINE_SIZE); -+ -+ closure->cif = cif; -+ closure->user_data = user_data; -+ closure->fun = fun; -+ -+ return FFI_OK; -+} -diff --git a/js/src/ctypes/libffi/src/m88k/ffitarget.h b/js/src/ctypes/libffi/src/m88k/ffitarget.h -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/m88k/ffitarget.h -@@ -0,0 +1,49 @@ -+/* -+ * Copyright (c) 2013 Miodrag Vallat. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining -+ * a copy of this software and associated documentation files (the -+ * ``Software''), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sublicense, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/* -+ * m88k Foreign Function Interface -+ */ -+ -+#ifndef LIBFFI_TARGET_H -+#define LIBFFI_TARGET_H -+ -+#ifndef LIBFFI_ASM -+typedef unsigned long ffi_arg; -+typedef signed long ffi_sarg; -+ -+typedef enum ffi_abi { -+ FFI_FIRST_ABI = 0, -+ FFI_OBSD, -+ FFI_DEFAULT_ABI = FFI_OBSD, -+ FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 -+} ffi_abi; -+#endif -+ -+/* ---- Definitions for closures ----------------------------------------- */ -+ -+#define FFI_CLOSURES 1 -+#define FFI_TRAMPOLINE_SIZE 0x14 -+#define FFI_NATIVE_RAW_API 0 -+ -+#endif -diff --git a/js/src/ctypes/libffi/src/m88k/obsd.S b/js/src/ctypes/libffi/src/m88k/obsd.S -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/m88k/obsd.S -@@ -0,0 +1,209 @@ -+/* -+ * Copyright (c) 2013 Miodrag Vallat. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining -+ * a copy of this software and associated documentation files (the -+ * ``Software''), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sublicense, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/* -+ * m88k Foreign Function Interface -+ */ -+ -+#define LIBFFI_ASM -+#include -+#include -+ -+ .text -+ -+/* -+ * ffi_cacheflush_OBSD(unsigned int addr, %r2 -+ * unsigned int size); %r3 -+ */ -+ .align 4 -+ .globl ffi_cacheflush_OBSD -+ .type ffi_cacheflush_OBSD,@function -+ffi_cacheflush_OBSD: -+ tb0 0, %r0, 451 -+ or %r0, %r0, %r0 -+ jmp %r1 -+ .size ffi_cacheflush_OBSD, . - ffi_cacheflush_OBSD -+ -+/* -+ * ffi_call_OBSD(unsigned bytes, %r2 -+ * extended_cif *ecif, %r3 -+ * unsigned flags, %r4 -+ * void *rvalue, %r5 -+ * void (*fn)()); %r6 -+ */ -+ .align 4 -+ .globl ffi_call_OBSD -+ .type ffi_call_OBSD,@function -+ffi_call_OBSD: -+ subu %r31, %r31, 32 -+ st %r30, %r31, 4 -+ st %r1, %r31, 0 -+ addu %r30, %r31, 32 -+ -+ | Save the few arguments we'll need after ffi_prep_args() -+ st.d %r4, %r31, 8 -+ st %r6, %r31, 16 -+ -+ | Allocate room for the image of r2-r9, and the stack space for -+ | the args (rounded to a 16-byte boundary) -+ addu %r2, %r2, (8 * 4) + 15 -+ clr %r2, %r2, 4<0> -+ subu %r31, %r31, %r2 -+ -+ | Fill register and stack image -+ or %r2, %r31, %r0 -+#ifdef PIC -+ bsr ffi_prep_args#plt -+#else -+ bsr ffi_prep_args -+#endif -+ -+ | Save pointer to return struct address, if any -+ or %r12, %r2, %r0 -+ -+ | Get function pointer -+ subu %r4, %r30, 32 -+ ld %r1, %r4, 16 -+ -+ | Fetch the register arguments -+ ld.d %r2, %r31, (0 * 4) -+ ld.d %r4, %r31, (2 * 4) -+ ld.d %r6, %r31, (4 * 4) -+ ld.d %r8, %r31, (6 * 4) -+ addu %r31, %r31, (8 * 4) -+ -+ | Invoke the function -+ jsr %r1 -+ -+ | Restore stack now that we don't need the args anymore -+ subu %r31, %r30, 32 -+ -+ | Figure out what to return as the function's return value -+ ld %r5, %r31, 12 | rvalue -+ ld %r4, %r31, 8 | flags -+ -+ bcnd eq0, %r5, 9f -+ -+ bb0 0, %r4, 1f | CIF_FLAGS_INT -+ st %r2, %r5, 0 -+ br 9f -+ -+1: -+ bb0 1, %r4, 1f | CIF_FLAGS_DINT -+ st.d %r2, %r5, 0 -+ br 9f -+ -+1: -+9: -+ ld %r1, %r31, 0 -+ ld %r30, %r31, 4 -+ jmp.n %r1 -+ addu %r31, %r31, 32 -+ .size ffi_call_OBSD, . - ffi_call_OBSD -+ -+/* -+ * ffi_closure_OBSD(ffi_closure *closure); %r13 -+ */ -+ .align 4 -+ .globl ffi_closure_OBSD -+ .type ffi_closure_OBSD, @function -+ffi_closure_OBSD: -+ subu %r31, %r31, 16 -+ st %r30, %r31, 4 -+ st %r1, %r31, 0 -+ addu %r30, %r31, 16 -+ -+ | Make room on the stack for saved register arguments and return -+ | value -+ subu %r31, %r31, (8 * 4) + (2 * 4) -+ st.d %r2, %r31, (0 * 4) -+ st.d %r4, %r31, (2 * 4) -+ st.d %r6, %r31, (4 * 4) -+ st.d %r8, %r31, (6 * 4) -+ -+ | Invoke the closure function -+ or %r5, %r30, 0 | calling stack -+ addu %r4, %r31, 0 | saved registers -+ addu %r3, %r31, (8 * 4) | return value -+ or %r2, %r13, %r0 | closure -+#ifdef PIC -+ bsr ffi_closure_OBSD_inner#plt -+#else -+ bsr ffi_closure_OBSD_inner -+#endif -+ -+ | Figure out what to return as the function's return value -+ bb0 0, %r2, 1f | CIF_FLAGS_INT -+ ld %r2, %r31, (8 * 4) -+ br 9f -+ -+1: -+ bb0 1, %r2, 1f | CIF_FLAGS_DINT -+ ld.d %r2, %r31, (8 * 4) -+ br 9f -+ -+1: -+9: -+ subu %r31, %r30, 16 -+ ld %r1, %r31, 0 -+ ld %r30, %r31, 4 -+ jmp.n %r1 -+ addu %r31, %r31, 16 -+ .size ffi_closure_OBSD,.-ffi_closure_OBSD -+ -+/* -+ * ffi_closure_struct_OBSD(ffi_closure *closure); %r13 -+ */ -+ .align 4 -+ .globl ffi_closure_struct_OBSD -+ .type ffi_closure_struct_OBSD, @function -+ffi_closure_struct_OBSD: -+ subu %r31, %r31, 16 -+ st %r30, %r31, 4 -+ st %r1, %r31, 0 -+ addu %r30, %r31, 16 -+ -+ | Make room on the stack for saved register arguments -+ subu %r31, %r31, (8 * 4) -+ st.d %r2, %r31, (0 * 4) -+ st.d %r4, %r31, (2 * 4) -+ st.d %r6, %r31, (4 * 4) -+ st.d %r8, %r31, (6 * 4) -+ -+ | Invoke the closure function -+ or %r5, %r30, 0 | calling stack -+ addu %r4, %r31, 0 | saved registers -+ or %r3, %r12, 0 | return value -+ or %r2, %r13, %r0 | closure -+#ifdef PIC -+ bsr ffi_closure_OBSD_inner#plt -+#else -+ bsr ffi_closure_OBSD_inner -+#endif -+ -+ subu %r31, %r30, 16 -+ ld %r1, %r31, 0 -+ ld %r30, %r31, 4 -+ jmp.n %r1 -+ addu %r31, %r31, 16 -+ .size ffi_closure_struct_OBSD,.-ffi_closure_struct_OBSD -diff --git a/js/src/ctypes/libffi/src/metag/ffi.c b/js/src/ctypes/libffi/src/metag/ffi.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/metag/ffi.c -@@ -0,0 +1,330 @@ -+/* ---------------------------------------------------------------------- -+ ffi.c - Copyright (c) 2013 Imagination Technologies -+ -+ Meta Foreign Function Interface -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ `Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED `AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL SIMON POSNJAK BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+----------------------------------------------------------------------- */ -+ -+#include -+#include -+ -+#include -+ -+#define MIN(a,b) (((a) < (b)) ? (a) : (b)) -+ -+/* -+ * ffi_prep_args is called by the assembly routine once stack space has been -+ * allocated for the function's arguments -+ */ -+ -+unsigned int ffi_prep_args(char *stack, extended_cif *ecif) -+{ -+ register unsigned int i; -+ register void **p_argv; -+ register char *argp; -+ register ffi_type **p_arg; -+ -+ argp = stack; -+ -+ /* Store return value */ -+ if ( ecif->cif->flags == FFI_TYPE_STRUCT ) { -+ argp -= 4; -+ *(void **) argp = ecif->rvalue; -+ } -+ -+ p_argv = ecif->avalue; -+ -+ /* point to next location */ -+ for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++, p_argv++) -+ { -+ size_t z; -+ -+ /* Move argp to address of argument */ -+ z = (*p_arg)->size; -+ argp -= z; -+ -+ /* Align if necessary */ -+ argp = (char *) ALIGN_DOWN(ALIGN_DOWN(argp, (*p_arg)->alignment), 4); -+ -+ if (z < sizeof(int)) { -+ z = sizeof(int); -+ switch ((*p_arg)->type) -+ { -+ case FFI_TYPE_SINT8: -+ *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); -+ break; -+ case FFI_TYPE_UINT8: -+ *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); -+ break; -+ case FFI_TYPE_SINT16: -+ *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); -+ break; -+ case FFI_TYPE_UINT16: -+ *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); -+ case FFI_TYPE_STRUCT: -+ memcpy(argp, *p_argv, (*p_arg)->size); -+ break; -+ default: -+ FFI_ASSERT(0); -+ } -+ } else if ( z == sizeof(int)) { -+ *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); -+ } else { -+ memcpy(argp, *p_argv, z); -+ } -+ } -+ -+ /* return the size of the arguments to be passed in registers, -+ padded to an 8 byte boundary to preserve stack alignment */ -+ return ALIGN(MIN(stack - argp, 6*4), 8); -+} -+ -+/* Perform machine dependent cif processing */ -+ffi_status ffi_prep_cif_machdep(ffi_cif *cif) -+{ -+ ffi_type **ptr; -+ unsigned i, bytes = 0; -+ -+ for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) { -+ if ((*ptr)->size == 0) -+ return FFI_BAD_TYPEDEF; -+ -+ /* Perform a sanity check on the argument type, do this -+ check after the initialization. */ -+ FFI_ASSERT_VALID_TYPE(*ptr); -+ -+ /* Add any padding if necessary */ -+ if (((*ptr)->alignment - 1) & bytes) -+ bytes = ALIGN(bytes, (*ptr)->alignment); -+ -+ bytes += ALIGN((*ptr)->size, 4); -+ } -+ -+ /* Ensure arg space is aligned to an 8-byte boundary */ -+ bytes = ALIGN(bytes, 8); -+ -+ /* Make space for the return structure pointer */ -+ if (cif->rtype->type == FFI_TYPE_STRUCT) { -+ bytes += sizeof(void*); -+ -+ /* Ensure stack is aligned to an 8-byte boundary */ -+ bytes = ALIGN(bytes, 8); -+ } -+ -+ cif->bytes = bytes; -+ -+ /* Set the return type flag */ -+ switch (cif->rtype->type) { -+ case FFI_TYPE_VOID: -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_DOUBLE: -+ cif->flags = (unsigned) cif->rtype->type; -+ break; -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_UINT64: -+ cif->flags = (unsigned) FFI_TYPE_SINT64; -+ break; -+ case FFI_TYPE_STRUCT: -+ /* Meta can store return values which are <= 64 bits */ -+ if (cif->rtype->size <= 4) -+ /* Returned to D0Re0 as 32-bit value */ -+ cif->flags = (unsigned)FFI_TYPE_INT; -+ else if ((cif->rtype->size > 4) && (cif->rtype->size <= 8)) -+ /* Returned valued is stored to D1Re0|R0Re0 */ -+ cif->flags = (unsigned)FFI_TYPE_DOUBLE; -+ else -+ /* value stored in memory */ -+ cif->flags = (unsigned)FFI_TYPE_STRUCT; -+ break; -+ default: -+ cif->flags = (unsigned)FFI_TYPE_INT; -+ break; -+ } -+ return FFI_OK; -+} -+ -+extern void ffi_call_SYSV(void (*fn)(void), extended_cif *, unsigned, unsigned, double *); -+ -+/* -+ * Exported in API. Entry point -+ * cif -> ffi_cif object -+ * fn -> function pointer -+ * rvalue -> pointer to return value -+ * avalue -> vector of void * pointers pointing to memory locations holding the -+ * arguments -+ */ -+void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) -+{ -+ extended_cif ecif; -+ -+ int small_struct = (((cif->flags == FFI_TYPE_INT) || (cif->flags == FFI_TYPE_DOUBLE)) && (cif->rtype->type == FFI_TYPE_STRUCT)); -+ ecif.cif = cif; -+ ecif.avalue = avalue; -+ -+ double temp; -+ -+ /* -+ * If the return value is a struct and we don't have a return value address -+ * then we need to make one -+ */ -+ -+ if ((rvalue == NULL ) && (cif->flags == FFI_TYPE_STRUCT)) -+ ecif.rvalue = alloca(cif->rtype->size); -+ else if (small_struct) -+ ecif.rvalue = &temp; -+ else -+ ecif.rvalue = rvalue; -+ -+ switch (cif->abi) { -+ case FFI_SYSV: -+ ffi_call_SYSV(fn, &ecif, cif->bytes, cif->flags, ecif.rvalue); -+ break; -+ default: -+ FFI_ASSERT(0); -+ break; -+ } -+ -+ if (small_struct) -+ memcpy (rvalue, &temp, cif->rtype->size); -+} -+ -+/* private members */ -+ -+static void ffi_prep_incoming_args_SYSV (char *, void **, void **, -+ ffi_cif*, float *); -+ -+void ffi_closure_SYSV (ffi_closure *); -+ -+/* Do NOT change that without changing the FFI_TRAMPOLINE_SIZE */ -+extern unsigned int ffi_metag_trampoline[10]; /* 10 instructions */ -+ -+/* end of private members */ -+ -+/* -+ * __tramp: trampoline memory location -+ * __fun: assembly routine -+ * __ctx: memory location for wrapper -+ * -+ * At this point, tramp[0] == __ctx ! -+ */ -+void ffi_init_trampoline(unsigned char *__tramp, unsigned int __fun, unsigned int __ctx) { -+ memcpy (__tramp, ffi_metag_trampoline, sizeof(ffi_metag_trampoline)); -+ *(unsigned int*) &__tramp[40] = __ctx; -+ *(unsigned int*) &__tramp[44] = __fun; -+ /* This will flush the instruction cache */ -+ __builtin_meta2_cachewd(&__tramp[0], 1); -+ __builtin_meta2_cachewd(&__tramp[47], 1); -+} -+ -+ -+ -+/* the cif must already be prepared */ -+ -+ffi_status -+ffi_prep_closure_loc (ffi_closure *closure, -+ ffi_cif* cif, -+ void (*fun)(ffi_cif*,void*,void**,void*), -+ void *user_data, -+ void *codeloc) -+{ -+ void (*closure_func)(ffi_closure*) = NULL; -+ -+ if (cif->abi == FFI_SYSV) -+ closure_func = &ffi_closure_SYSV; -+ else -+ return FFI_BAD_ABI; -+ -+ ffi_init_trampoline( -+ (unsigned char*)&closure->tramp[0], -+ (unsigned int)closure_func, -+ (unsigned int)codeloc); -+ -+ closure->cif = cif; -+ closure->user_data = user_data; -+ closure->fun = fun; -+ -+ return FFI_OK; -+} -+ -+ -+/* This function is jumped to by the trampoline */ -+unsigned int ffi_closure_SYSV_inner (closure, respp, args, vfp_args) -+ ffi_closure *closure; -+ void **respp; -+ void *args; -+ void *vfp_args; -+{ -+ ffi_cif *cif; -+ void **arg_area; -+ -+ cif = closure->cif; -+ arg_area = (void**) alloca (cif->nargs * sizeof (void*)); -+ -+ /* -+ * This call will initialize ARG_AREA, such that each -+ * element in that array points to the corresponding -+ * value on the stack; and if the function returns -+ * a structure, it will re-set RESP to point to the -+ * structure return address. -+ */ -+ ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args); -+ -+ (closure->fun) ( cif, *respp, arg_area, closure->user_data); -+ -+ return cif->flags; -+} -+ -+static void ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, -+ void **avalue, ffi_cif *cif, -+ float *vfp_stack) -+{ -+ register unsigned int i; -+ register void **p_argv; -+ register char *argp; -+ register ffi_type **p_arg; -+ -+ /* stack points to original arguments */ -+ argp = stack; -+ -+ /* Store return value */ -+ if ( cif->flags == FFI_TYPE_STRUCT ) { -+ argp -= 4; -+ *rvalue = *(void **) argp; -+ } -+ -+ p_argv = avalue; -+ -+ for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) { -+ size_t z; -+ size_t alignment; -+ -+ alignment = (*p_arg)->alignment; -+ if (alignment < 4) -+ alignment = 4; -+ if ((alignment - 1) & (unsigned)argp) -+ argp = (char *) ALIGN(argp, alignment); -+ -+ z = (*p_arg)->size; -+ *p_argv = (void*) argp; -+ p_argv++; -+ argp -= z; -+ } -+ return; -+} -diff --git a/js/src/ctypes/libffi/src/metag/ffitarget.h b/js/src/ctypes/libffi/src/metag/ffitarget.h -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/metag/ffitarget.h -@@ -0,0 +1,53 @@ -+/* -----------------------------------------------------------------*-C-*- -+ ffitarget.h - Copyright (c) 2013 Imagination Technologies Ltd. -+ Target configuration macros for Meta -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ -+ ----------------------------------------------------------------------- */ -+ -+#ifndef LIBFFI_TARGET_H -+#define LIBFFI_TARGET_H -+ -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ -+#ifndef LIBFFI_ASM -+typedef unsigned long ffi_arg; -+typedef signed long ffi_sarg; -+ -+typedef enum ffi_abi { -+ FFI_FIRST_ABI = 0, -+ FFI_SYSV, -+ FFI_DEFAULT_ABI = FFI_SYSV, -+ FFI_LAST_ABI = FFI_DEFAULT_ABI + 1, -+} ffi_abi; -+#endif -+ -+/* ---- Definitions for closures ----------------------------------------- */ -+ -+#define FFI_CLOSURES 1 -+#define FFI_TRAMPOLINE_SIZE 48 -+#define FFI_NATIVE_RAW_API 0 -+ -+#endif -+ -diff --git a/js/src/ctypes/libffi/src/metag/sysv.S b/js/src/ctypes/libffi/src/metag/sysv.S -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/metag/sysv.S -@@ -0,0 +1,311 @@ -+/* ----------------------------------------------------------------------- -+ sysv.S - Copyright (c) 2013 Imagination Technologies Ltd. -+ -+ Meta Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#define LIBFFI_ASM -+#include -+#include -+#ifdef HAVE_MACHINE_ASM_H -+#include -+#else -+#ifdef __USER_LABEL_PREFIX__ -+#define CONCAT1(a, b) CONCAT2(a, b) -+#define CONCAT2(a, b) a ## b -+ -+/* Use the right prefix for global labels. */ -+#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x) -+#else -+#define CNAME(x) x -+#endif -+#define ENTRY(x) .globl CNAME(x); .type CNAME(x), %function; CNAME(x): -+#endif -+ -+#ifdef __ELF__ -+#define LSYM(x) .x -+#else -+#define LSYM(x) x -+#endif -+ -+.macro call_reg x= -+ .text -+ .balign 4 -+ mov D1RtP, \x -+ swap D1RtP, PC -+.endm -+ -+! Save register arguments -+.macro SAVE_ARGS -+ .text -+ .balign 4 -+ setl [A0StP++], D0Ar6, D1Ar5 -+ setl [A0StP++], D0Ar4, D1Ar3 -+ setl [A0StP++], D0Ar2, D1Ar1 -+.endm -+ -+! Save retrun, frame pointer and other regs -+.macro SAVE_REGS regs= -+ .text -+ .balign 4 -+ setl [A0StP++], D0FrT, D1RtP -+ ! Needs to be a pair of regs -+ .ifnc "\regs","" -+ setl [A0StP++], \regs -+ .endif -+.endm -+ -+! Declare a global function -+.macro METAG_FUNC_START name -+ .text -+ .balign 4 -+ ENTRY(\name) -+.endm -+ -+! Return registers from the stack. Reverse SAVE_REGS operation -+.macro RET_REGS regs=, cond= -+ .ifnc "\regs", "" -+ getl \regs, [--A0StP] -+ .endif -+ getl D0FrT, D1RtP, [--A0StP] -+.endm -+ -+! Return arguments -+.macro RET_ARGS -+ getl D0Ar2, D1Ar1, [--A0StP] -+ getl D0Ar4, D1Ar3, [--A0StP] -+ getl D0Ar6, D1Ar5, [--A0StP] -+.endm -+ -+ -+ ! D1Ar1: fn -+ ! D0Ar2: &ecif -+ ! D1Ar3: cif->bytes -+ ! D0Ar4: fig->flags -+ ! D1Ar5: ecif.rvalue -+ -+ ! This assumes we are using GNU as -+METAG_FUNC_START ffi_call_SYSV -+ ! Save argument registers -+ -+ SAVE_ARGS -+ -+ ! new frame -+ mov D0FrT, A0FrP -+ add A0FrP, A0StP, #0 -+ -+ ! Preserve the old frame pointer -+ SAVE_REGS "D1.5, D0.5" -+ -+ ! Make room for new args. cifs->bytes is the total space for input -+ ! and return arguments -+ -+ add A0StP, A0StP, D1Ar3 -+ -+ ! Preserve cifs->bytes & fn -+ mov D0.5, D1Ar3 -+ mov D1.5, D1Ar1 -+ -+ ! Place all of the ffi_prep_args in position -+ mov D1Ar1, A0StP -+ -+ ! Call ffi_prep_args(stack, &ecif) -+#ifdef __PIC__ -+ callr D1RtP, CNAME(ffi_prep_args@PLT) -+#else -+ callr D1RtP, CNAME(ffi_prep_args) -+#endif -+ -+ ! Restore fn pointer -+ -+ ! The foreign stack should look like this -+ ! XXXXX XXXXXX <--- stack pointer -+ ! FnArgN rvalue -+ ! FnArgN+2 FnArgN+1 -+ ! FnArgN+4 FnArgN+3 -+ ! .... -+ ! -+ -+ ! A0StP now points to the first (or return) argument + 4 -+ -+ ! Preserve cif->bytes -+ getl D0Ar2, D1Ar1, [--A0StP] -+ getl D0Ar4, D1Ar3, [--A0StP] -+ getl D0Ar6, D1Ar5, [--A0StP] -+ -+ ! Place A0StP to the first argument again -+ add A0StP, A0StP, #24 ! That's because we loaded 6 regs x 4 byte each -+ -+ ! A0FrP points to the initial stack without the reserved space for the -+ ! cifs->bytes, whilst A0StP points to the stack after the space allocation -+ -+ ! fn was the first argument of ffi_call_SYSV. -+ ! The stack at this point looks like this: -+ ! -+ ! A0StP(on entry to _SYSV) -> Arg6 Arg5 | low -+ ! Arg4 Arg3 | -+ ! Arg2 Arg1 | -+ ! A0FrP ----> D0FrtP D1RtP | -+ ! D1.5 D0.5 | -+ ! A0StP(bf prep_args) -> FnArgn FnArgn-1 | -+ ! FnArgn-2FnArgn-3 | -+ ! ................ | <= cifs->bytes -+ ! FnArg4 FnArg3 | -+ ! A0StP (prv_A0StP+cifs->bytes) FnArg2 FnArg1 | high -+ ! -+ ! fn was in Arg1 so it's located in in A0FrP+#-0xC -+ ! -+ -+ ! D0Re0 contains the size of arguments stored in registers -+ sub A0StP, A0StP, D0Re0 -+ -+ ! Arg1 is the function pointer for the foreign call. This has been -+ ! preserved in D1.5 -+ -+ ! Time to call (fn). Arguments should be like this: -+ ! Arg1-Arg6 are loaded to regs -+ ! The rest of the arguments are stored in stack pointed by A0StP -+ -+ call_reg D1.5 -+ -+ ! Reset stack. -+ -+ mov A0StP, A0FrP -+ -+ ! Load Arg1 with the pointer to storage for the return type -+ ! This was stored in Arg5 -+ -+ getd D1Ar1, [A0FrP+#-20] -+ -+ ! Load D0Ar2 with the return type code. This was stored in Arg4 (flags) -+ -+ getd D0Ar2, [A0FrP+#-16] -+ -+ ! We are ready to start processing the return value -+ ! D0Re0 (and D1Re0) hold the return value -+ -+ ! If the return value is NULL, assume no return value -+ cmp D1Ar1, #0 -+ beq LSYM(Lepilogue) -+ -+ ! return INT -+ cmp D0Ar2, #FFI_TYPE_INT -+ ! Sadly, there is no setd{cc} instruction so we need to workaround that -+ bne .INT64 -+ setd [D1Ar1], D0Re0 -+ b LSYM(Lepilogue) -+ -+ ! return INT64 -+.INT64: -+ cmp D0Ar2, #FFI_TYPE_SINT64 -+ setleq [D1Ar1], D0Re0, D1Re0 -+ -+ ! return DOUBLE -+ cmp D0Ar2, #FFI_TYPE_DOUBLE -+ setl [D1AR1++], D0Re0, D1Re0 -+ -+LSYM(Lepilogue): -+ ! At this point, the stack pointer points right after the argument -+ ! saved area. We need to restore 4 regs, therefore we need to move -+ ! 16 bytes ahead. -+ add A0StP, A0StP, #16 -+ RET_REGS "D1.5, D0.5" -+ RET_ARGS -+ getd D0Re0, [A0StP] -+ mov A0FrP, D0FrT -+ swap D1RtP, PC -+ -+.ffi_call_SYSV_end: -+ .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) -+ -+ -+/* -+ (called by ffi_metag_trampoline) -+ void ffi_closure_SYSV (ffi_closure*) -+ -+ (called by ffi_closure_SYSV) -+ unsigned int FFI_HIDDEN -+ ffi_closure_SYSV_inner (closure,respp, args) -+ ffi_closure *closure; -+ void **respp; -+ void *args; -+*/ -+ -+METAG_FUNC_START ffi_closure_SYSV -+ ! We assume that D1Ar1 holds the address of the -+ ! ffi_closure struct. We will use that to fetch the -+ ! arguments. The stack pointer points to an empty space -+ ! and it is ready to store more data. -+ -+ ! D1Ar1 is ready -+ ! Allocate stack space for return value -+ add A0StP, A0StP, #8 -+ ! Store it to D0Ar2 -+ sub D0Ar2, A0StP, #8 -+ -+ sub D1Ar3, A0FrP, #4 -+ -+ ! D1Ar3 contains the address of the original D1Ar1 argument -+ ! We need to subtract #4 later on -+ -+ ! Preverve D0Ar2 -+ mov D0.5, D0Ar2 -+ -+#ifdef __PIC__ -+ callr D1RtP, CNAME(ffi_closure_SYSV_inner@PLT) -+#else -+ callr D1RtP, CNAME(ffi_closure_SYSV_inner) -+#endif -+ -+ ! Check the return value and store it to D0.5 -+ cmp D0Re0, #FFI_TYPE_INT -+ beq .Lretint -+ cmp D0Re0, #FFI_TYPE_DOUBLE -+ beq .Lretdouble -+.Lclosure_epilogue: -+ sub A0StP, A0StP, #8 -+ RET_REGS "D1.5, D0.5" -+ RET_ARGS -+ swap D1RtP, PC -+ -+.Lretint: -+ setd [D0.5], D0Re0 -+ b .Lclosure_epilogue -+.Lretdouble: -+ setl [D0.5++], D0Re0, D1Re0 -+ b .Lclosure_epilogue -+.ffi_closure_SYSV_end: -+.size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) -+ -+ -+ENTRY(ffi_metag_trampoline) -+ SAVE_ARGS -+ ! New frame -+ mov A0FrP, A0StP -+ SAVE_REGS "D1.5, D0.5" -+ mov D0.5, PC -+ ! Load D1Ar1 the value of ffi_metag_trampoline -+ getd D1Ar1, [D0.5 + #8] -+ ! Jump to ffi_closure_SYSV -+ getd PC, [D0.5 + #12] -diff --git a/js/src/ctypes/libffi/src/microblaze/ffi.c b/js/src/ctypes/libffi/src/microblaze/ffi.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/microblaze/ffi.c -@@ -0,0 +1,321 @@ -+/* ----------------------------------------------------------------------- -+ ffi.c - Copyright (c) 2012, 2013 Xilinx, Inc -+ -+ MicroBlaze Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#include -+#include -+ -+extern void ffi_call_SYSV(void (*)(void*, extended_cif*), extended_cif*, -+ unsigned int, unsigned int, unsigned int*, void (*fn)(void), -+ unsigned int, unsigned int); -+ -+extern void ffi_closure_SYSV(void); -+ -+#define WORD_SIZE sizeof(unsigned int) -+#define ARGS_REGISTER_SIZE (WORD_SIZE * 6) -+#define WORD_ALIGN(x) ALIGN(x, WORD_SIZE) -+ -+/* ffi_prep_args is called by the assembly routine once stack space -+ has been allocated for the function's arguments */ -+void ffi_prep_args(void* stack, extended_cif* ecif) -+{ -+ unsigned int i; -+ ffi_type** p_arg; -+ void** p_argv; -+ void* stack_args_p = stack; -+ -+ p_argv = ecif->avalue; -+ -+ if (ecif == NULL || ecif->cif == NULL) { -+ return; /* no description to prepare */ -+ } -+ -+ if ((ecif->cif->rtype != NULL) && -+ (ecif->cif->rtype->type == FFI_TYPE_STRUCT)) -+ { -+ /* if return type is a struct which is referenced on the stack/reg5, -+ * by a pointer. Stored the return value pointer in r5. -+ */ -+ char* addr = stack_args_p; -+ memcpy(addr, &(ecif->rvalue), WORD_SIZE); -+ stack_args_p += WORD_SIZE; -+ } -+ -+ if (ecif->avalue == NULL) { -+ return; /* no arguments to prepare */ -+ } -+ -+ for (i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs; -+ i++, p_arg++) -+ { -+ size_t size = (*p_arg)->size; -+ int type = (*p_arg)->type; -+ void* value = p_argv[i]; -+ char* addr = stack_args_p; -+ int aligned_size = WORD_ALIGN(size); -+ -+ /* force word alignment on the stack */ -+ stack_args_p += aligned_size; -+ -+ switch (type) -+ { -+ case FFI_TYPE_UINT8: -+ *(unsigned int *)addr = (unsigned int)*(UINT8*)(value); -+ break; -+ case FFI_TYPE_SINT8: -+ *(signed int *)addr = (signed int)*(SINT8*)(value); -+ break; -+ case FFI_TYPE_UINT16: -+ *(unsigned int *)addr = (unsigned int)*(UINT16*)(value); -+ break; -+ case FFI_TYPE_SINT16: -+ *(signed int *)addr = (signed int)*(SINT16*)(value); -+ break; -+ case FFI_TYPE_STRUCT: -+#if __BIG_ENDIAN__ -+ /* -+ * MicroBlaze toolchain appears to emit: -+ * bsrli r5, r5, 8 (caller) -+ * ... -+ * -+ * ... -+ * bslli r5, r5, 8 (callee) -+ * -+ * For structs like "struct a { uint8_t a[3]; };", when passed -+ * by value. -+ * -+ * Structs like "struct b { uint16_t a; };" are also expected -+ * to be packed strangely in registers. -+ * -+ * This appears to be because the microblaze toolchain expects -+ * "struct b == uint16_t", which is only any issue for big -+ * endian. -+ * -+ * The following is a work around for big-endian only, for the -+ * above mentioned case, it will re-align the contents of a -+ * <= 3-byte struct value. -+ */ -+ if (size < WORD_SIZE) -+ { -+ memcpy (addr + (WORD_SIZE - size), value, size); -+ break; -+ } -+#endif -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_DOUBLE: -+ default: -+ memcpy(addr, value, aligned_size); -+ } -+ } -+} -+ -+ffi_status ffi_prep_cif_machdep(ffi_cif* cif) -+{ -+ /* check ABI */ -+ switch (cif->abi) -+ { -+ case FFI_SYSV: -+ break; -+ default: -+ return FFI_BAD_ABI; -+ } -+ return FFI_OK; -+} -+ -+void ffi_call(ffi_cif* cif, void (*fn)(void), void* rvalue, void** avalue) -+{ -+ extended_cif ecif; -+ ecif.cif = cif; -+ ecif.avalue = avalue; -+ -+ /* If the return value is a struct and we don't have a return */ -+ /* value address then we need to make one */ -+ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { -+ ecif.rvalue = alloca(cif->rtype->size); -+ } else { -+ ecif.rvalue = rvalue; -+ } -+ -+ switch (cif->abi) -+ { -+ case FFI_SYSV: -+ ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, -+ ecif.rvalue, fn, cif->rtype->type, cif->rtype->size); -+ break; -+ default: -+ FFI_ASSERT(0); -+ break; -+ } -+} -+ -+void ffi_closure_call_SYSV(void* register_args, void* stack_args, -+ ffi_closure* closure, void* rvalue, -+ unsigned int* rtype, unsigned int* rsize) -+{ -+ /* prepare arguments for closure call */ -+ ffi_cif* cif = closure->cif; -+ ffi_type** arg_types = cif->arg_types; -+ -+ /* re-allocate data for the args. This needs to be done in order to keep -+ * multi-word objects (e.g. structs) in contiguous memory. Callers are not -+ * required to store the value of args in the lower 6 words in the stack -+ * (although they are allocated in the stack). -+ */ -+ char* stackclone = alloca(cif->bytes); -+ void** avalue = alloca(cif->nargs * sizeof(void*)); -+ void* struct_rvalue = NULL; -+ char* ptr = stackclone; -+ int i; -+ -+ /* copy registers into stack clone */ -+ int registers_used = cif->bytes; -+ if (registers_used > ARGS_REGISTER_SIZE) { -+ registers_used = ARGS_REGISTER_SIZE; -+ } -+ memcpy(stackclone, register_args, registers_used); -+ -+ /* copy stack allocated args into stack clone */ -+ if (cif->bytes > ARGS_REGISTER_SIZE) { -+ int stack_used = cif->bytes - ARGS_REGISTER_SIZE; -+ memcpy(stackclone + ARGS_REGISTER_SIZE, stack_args, stack_used); -+ } -+ -+ /* preserve struct type return pointer passing */ -+ if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { -+ struct_rvalue = *((void**)ptr); -+ ptr += WORD_SIZE; -+ } -+ -+ /* populate arg pointer list */ -+ for (i = 0; i < cif->nargs; i++) -+ { -+ switch (arg_types[i]->type) -+ { -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT8: -+#ifdef __BIG_ENDIAN__ -+ avalue[i] = ptr + 3; -+#else -+ avalue[i] = ptr; -+#endif -+ break; -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT16: -+#ifdef __BIG_ENDIAN__ -+ avalue[i] = ptr + 2; -+#else -+ avalue[i] = ptr; -+#endif -+ break; -+ case FFI_TYPE_STRUCT: -+#if __BIG_ENDIAN__ -+ /* -+ * Work around strange ABI behaviour. -+ * (see info in ffi_prep_args) -+ */ -+ if (arg_types[i]->size < WORD_SIZE) -+ { -+ memcpy (ptr, ptr + (WORD_SIZE - arg_types[i]->size), arg_types[i]->size); -+ } -+#endif -+ avalue[i] = (void*)ptr; -+ break; -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_DOUBLE: -+ avalue[i] = ptr; -+ break; -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_FLOAT: -+ default: -+ /* default 4-byte argument */ -+ avalue[i] = ptr; -+ break; -+ } -+ ptr += WORD_ALIGN(arg_types[i]->size); -+ } -+ -+ /* set the return type info passed back to the wrapper */ -+ *rsize = cif->rtype->size; -+ *rtype = cif->rtype->type; -+ if (struct_rvalue != NULL) { -+ closure->fun(cif, struct_rvalue, avalue, closure->user_data); -+ /* copy struct return pointer value into function return value */ -+ *((void**)rvalue) = struct_rvalue; -+ } else { -+ closure->fun(cif, rvalue, avalue, closure->user_data); -+ } -+} -+ -+ffi_status ffi_prep_closure_loc( -+ ffi_closure* closure, ffi_cif* cif, -+ void (*fun)(ffi_cif*, void*, void**, void*), -+ void* user_data, void* codeloc) -+{ -+ unsigned long* tramp = (unsigned long*)&(closure->tramp[0]); -+ unsigned long cls = (unsigned long)codeloc; -+ unsigned long fn = 0; -+ unsigned long fn_closure_call_sysv = (unsigned long)ffi_closure_call_SYSV; -+ -+ closure->cif = cif; -+ closure->fun = fun; -+ closure->user_data = user_data; -+ -+ switch (cif->abi) -+ { -+ case FFI_SYSV: -+ fn = (unsigned long)ffi_closure_SYSV; -+ -+ /* load r11 (temp) with fn */ -+ /* imm fn(upper) */ -+ tramp[0] = 0xb0000000 | ((fn >> 16) & 0xffff); -+ /* addik r11, r0, fn(lower) */ -+ tramp[1] = 0x31600000 | (fn & 0xffff); -+ -+ /* load r12 (temp) with cls */ -+ /* imm cls(upper) */ -+ tramp[2] = 0xb0000000 | ((cls >> 16) & 0xffff); -+ /* addik r12, r0, cls(lower) */ -+ tramp[3] = 0x31800000 | (cls & 0xffff); -+ -+ /* load r3 (temp) with ffi_closure_call_SYSV */ -+ /* imm fn_closure_call_sysv(upper) */ -+ tramp[4] = 0xb0000000 | ((fn_closure_call_sysv >> 16) & 0xffff); -+ /* addik r3, r0, fn_closure_call_sysv(lower) */ -+ tramp[5] = 0x30600000 | (fn_closure_call_sysv & 0xffff); -+ /* branch/jump to address stored in r11 (fn) */ -+ tramp[6] = 0x98085800; /* bra r11 */ -+ -+ break; -+ default: -+ return FFI_BAD_ABI; -+ } -+ return FFI_OK; -+} -diff --git a/js/src/ctypes/libffi/src/microblaze/ffitarget.h b/js/src/ctypes/libffi/src/microblaze/ffitarget.h -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/microblaze/ffitarget.h -@@ -0,0 +1,53 @@ -+/* ----------------------------------------------------------------------- -+ ffitarget.h - Copyright (c) 2012, 2013 Xilinx, Inc -+ -+ Target configuration macros for MicroBlaze. -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#ifndef LIBFFI_TARGET_H -+#define LIBFFI_TARGET_H -+ -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ -+#ifndef LIBFFI_ASM -+typedef unsigned long ffi_arg; -+typedef signed long ffi_sarg; -+ -+typedef enum ffi_abi { -+ FFI_FIRST_ABI = 0, -+ FFI_SYSV, -+ FFI_LAST_ABI, -+ FFI_DEFAULT_ABI = FFI_SYSV -+} ffi_abi; -+#endif -+ -+/* Definitions for closures */ -+ -+#define FFI_CLOSURES 1 -+#define FFI_NATIVE_RAW_API 0 -+ -+#define FFI_TRAMPOLINE_SIZE (4*8) -+ -+#endif -diff --git a/js/src/ctypes/libffi/src/microblaze/sysv.S b/js/src/ctypes/libffi/src/microblaze/sysv.S -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/microblaze/sysv.S -@@ -0,0 +1,302 @@ -+/* ----------------------------------------------------------------------- -+ sysv.S - Copyright (c) 2012, 2013 Xilinx, Inc -+ -+ MicroBlaze Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#define LIBFFI_ASM -+#include -+#include -+ -+ /* -+ * arg[0] (r5) = ffi_prep_args, -+ * arg[1] (r6) = &ecif, -+ * arg[2] (r7) = cif->bytes, -+ * arg[3] (r8) = cif->flags, -+ * arg[4] (r9) = ecif.rvalue, -+ * arg[5] (r10) = fn -+ * arg[6] (sp[0]) = cif->rtype->type -+ * arg[7] (sp[4]) = cif->rtype->size -+ */ -+ .text -+ .globl ffi_call_SYSV -+ .type ffi_call_SYSV, @function -+ffi_call_SYSV: -+ /* push callee saves */ -+ addik r1, r1, -20 -+ swi r19, r1, 0 /* Frame Pointer */ -+ swi r20, r1, 4 /* PIC register */ -+ swi r21, r1, 8 /* PIC register */ -+ swi r22, r1, 12 /* save for locals */ -+ swi r23, r1, 16 /* save for locals */ -+ -+ /* save the r5-r10 registers in the stack */ -+ addik r1, r1, -24 /* increment sp to store 6x 32-bit words */ -+ swi r5, r1, 0 -+ swi r6, r1, 4 -+ swi r7, r1, 8 -+ swi r8, r1, 12 -+ swi r9, r1, 16 -+ swi r10, r1, 20 -+ -+ /* save function pointer */ -+ addik r3, r5, 0 /* copy ffi_prep_args into r3 */ -+ addik r22, r1, 0 /* save sp for unallocated args into r22 (callee-saved) */ -+ addik r23, r10, 0 /* save function address into r23 (callee-saved) */ -+ -+ /* prepare stack with allocation for n (bytes = r7) args */ -+ rsub r1, r7, r1 /* subtract bytes from sp */ -+ -+ /* prep args for ffi_prep_args call */ -+ addik r5, r1, 0 /* store stack pointer into arg[0] */ -+ /* r6 still holds ecif for arg[1] */ -+ -+ /* Call ffi_prep_args(stack, &ecif). */ -+ addik r1, r1, -4 -+ swi r15, r1, 0 /* store the link register in the frame */ -+ brald r15, r3 -+ nop /* branch has delay slot */ -+ lwi r15, r1, 0 -+ addik r1, r1, 4 /* restore the link register from the frame */ -+ /* returns calling stack pointer location */ -+ -+ /* prepare args for fn call, prep_args populates them onto the stack */ -+ lwi r5, r1, 0 /* arg[0] */ -+ lwi r6, r1, 4 /* arg[1] */ -+ lwi r7, r1, 8 /* arg[2] */ -+ lwi r8, r1, 12 /* arg[3] */ -+ lwi r9, r1, 16 /* arg[4] */ -+ lwi r10, r1, 20 /* arg[5] */ -+ -+ /* call (fn) (...). */ -+ addik r1, r1, -4 -+ swi r15, r1, 0 /* store the link register in the frame */ -+ brald r15, r23 -+ nop /* branch has delay slot */ -+ lwi r15, r1, 0 -+ addik r1, r1, 4 /* restore the link register from the frame */ -+ -+ /* Remove the space we pushed for the args. */ -+ addik r1, r22, 0 /* restore old SP */ -+ -+ /* restore this functions parameters */ -+ lwi r5, r1, 0 /* arg[0] */ -+ lwi r6, r1, 4 /* arg[1] */ -+ lwi r7, r1, 8 /* arg[2] */ -+ lwi r8, r1, 12 /* arg[3] */ -+ lwi r9, r1, 16 /* arg[4] */ -+ lwi r10, r1, 20 /* arg[5] */ -+ addik r1, r1, 24 /* decrement sp to de-allocate 6x 32-bit words */ -+ -+ /* If the return value pointer is NULL, assume no return value. */ -+ beqi r9, ffi_call_SYSV_end -+ -+ lwi r22, r1, 48 /* get return type (20 for locals + 28 for arg[6]) */ -+ lwi r23, r1, 52 /* get return size (20 for locals + 32 for arg[7]) */ -+ -+ /* Check if return type is actually a struct, do nothing */ -+ rsubi r11, r22, FFI_TYPE_STRUCT -+ beqi r11, ffi_call_SYSV_end -+ -+ /* Return 8bit */ -+ rsubi r11, r23, 1 -+ beqi r11, ffi_call_SYSV_store8 -+ -+ /* Return 16bit */ -+ rsubi r11, r23, 2 -+ beqi r11, ffi_call_SYSV_store16 -+ -+ /* Return 32bit */ -+ rsubi r11, r23, 4 -+ beqi r11, ffi_call_SYSV_store32 -+ -+ /* Return 64bit */ -+ rsubi r11, r23, 8 -+ beqi r11, ffi_call_SYSV_store64 -+ -+ /* Didn't match anything */ -+ bri ffi_call_SYSV_end -+ -+ffi_call_SYSV_store64: -+ swi r3, r9, 0 /* store word r3 into return value */ -+ swi r4, r9, 4 /* store word r4 into return value */ -+ bri ffi_call_SYSV_end -+ -+ffi_call_SYSV_store32: -+ swi r3, r9, 0 /* store word r3 into return value */ -+ bri ffi_call_SYSV_end -+ -+ffi_call_SYSV_store16: -+#ifdef __BIG_ENDIAN__ -+ shi r3, r9, 2 /* store half-word r3 into return value */ -+#else -+ shi r3, r9, 0 /* store half-word r3 into return value */ -+#endif -+ bri ffi_call_SYSV_end -+ -+ffi_call_SYSV_store8: -+#ifdef __BIG_ENDIAN__ -+ sbi r3, r9, 3 /* store byte r3 into return value */ -+#else -+ sbi r3, r9, 0 /* store byte r3 into return value */ -+#endif -+ bri ffi_call_SYSV_end -+ -+ffi_call_SYSV_end: -+ /* callee restores */ -+ lwi r19, r1, 0 /* frame pointer */ -+ lwi r20, r1, 4 /* PIC register */ -+ lwi r21, r1, 8 /* PIC register */ -+ lwi r22, r1, 12 -+ lwi r23, r1, 16 -+ addik r1, r1, 20 -+ -+ /* return from sub-routine (with delay slot) */ -+ rtsd r15, 8 -+ nop -+ -+ .size ffi_call_SYSV, . - ffi_call_SYSV -+ -+/* ------------------------------------------------------------------------- */ -+ -+ /* -+ * args passed into this function, are passed down to the callee. -+ * this function is the target of the closure trampoline, as such r12 is -+ * a pointer to the closure object. -+ */ -+ .text -+ .globl ffi_closure_SYSV -+ .type ffi_closure_SYSV, @function -+ffi_closure_SYSV: -+ /* push callee saves */ -+ addik r11, r1, 28 /* save stack args start location (excluding regs/link) */ -+ addik r1, r1, -12 -+ swi r19, r1, 0 /* Frame Pointer */ -+ swi r20, r1, 4 /* PIC register */ -+ swi r21, r1, 8 /* PIC register */ -+ -+ /* store register args on stack */ -+ addik r1, r1, -24 -+ swi r5, r1, 0 -+ swi r6, r1, 4 -+ swi r7, r1, 8 -+ swi r8, r1, 12 -+ swi r9, r1, 16 -+ swi r10, r1, 20 -+ -+ /* setup args */ -+ addik r5, r1, 0 /* register_args */ -+ addik r6, r11, 0 /* stack_args */ -+ addik r7, r12, 0 /* closure object */ -+ addik r1, r1, -8 /* allocate return value */ -+ addik r8, r1, 0 /* void* rvalue */ -+ addik r1, r1, -8 /* allocate for return type/size values */ -+ addik r9, r1, 0 /* void* rtype */ -+ addik r10, r1, 4 /* void* rsize */ -+ -+ /* call the wrap_call function */ -+ addik r1, r1, -28 /* allocate args + link reg */ -+ swi r15, r1, 0 /* store the link register in the frame */ -+ brald r15, r3 -+ nop /* branch has delay slot */ -+ lwi r15, r1, 0 -+ addik r1, r1, 28 /* restore the link register from the frame */ -+ -+ffi_closure_SYSV_prepare_return: -+ lwi r9, r1, 0 /* rtype */ -+ lwi r10, r1, 4 /* rsize */ -+ addik r1, r1, 8 /* de-allocate return info values */ -+ -+ /* Check if return type is actually a struct, store 4 bytes */ -+ rsubi r11, r9, FFI_TYPE_STRUCT -+ beqi r11, ffi_closure_SYSV_store32 -+ -+ /* Return 8bit */ -+ rsubi r11, r10, 1 -+ beqi r11, ffi_closure_SYSV_store8 -+ -+ /* Return 16bit */ -+ rsubi r11, r10, 2 -+ beqi r11, ffi_closure_SYSV_store16 -+ -+ /* Return 32bit */ -+ rsubi r11, r10, 4 -+ beqi r11, ffi_closure_SYSV_store32 -+ -+ /* Return 64bit */ -+ rsubi r11, r10, 8 -+ beqi r11, ffi_closure_SYSV_store64 -+ -+ /* Didn't match anything */ -+ bri ffi_closure_SYSV_end -+ -+ffi_closure_SYSV_store64: -+ lwi r3, r1, 0 /* store word r3 into return value */ -+ lwi r4, r1, 4 /* store word r4 into return value */ -+ /* 64 bits == 2 words, no sign extend occurs */ -+ bri ffi_closure_SYSV_end -+ -+ffi_closure_SYSV_store32: -+ lwi r3, r1, 0 /* store word r3 into return value */ -+ /* 32 bits == 1 word, no sign extend occurs */ -+ bri ffi_closure_SYSV_end -+ -+ffi_closure_SYSV_store16: -+#ifdef __BIG_ENDIAN__ -+ lhui r3, r1, 2 /* store half-word r3 into return value */ -+#else -+ lhui r3, r1, 0 /* store half-word r3 into return value */ -+#endif -+ rsubi r11, r9, FFI_TYPE_SINT16 -+ bnei r11, ffi_closure_SYSV_end -+ sext16 r3, r3 /* fix sign extend of sint8 */ -+ bri ffi_closure_SYSV_end -+ -+ffi_closure_SYSV_store8: -+#ifdef __BIG_ENDIAN__ -+ lbui r3, r1, 3 /* store byte r3 into return value */ -+#else -+ lbui r3, r1, 0 /* store byte r3 into return value */ -+#endif -+ rsubi r11, r9, FFI_TYPE_SINT8 -+ bnei r11, ffi_closure_SYSV_end -+ sext8 r3, r3 /* fix sign extend of sint8 */ -+ bri ffi_closure_SYSV_end -+ -+ffi_closure_SYSV_end: -+ addik r1, r1, 8 /* de-allocate return value */ -+ -+ /* de-allocate stored args */ -+ addik r1, r1, 24 -+ -+ /* callee restores */ -+ lwi r19, r1, 0 /* frame pointer */ -+ lwi r20, r1, 4 /* PIC register */ -+ lwi r21, r1, 8 /* PIC register */ -+ addik r1, r1, 12 -+ -+ /* return from sub-routine (with delay slot) */ -+ rtsd r15, 8 -+ nop -+ -+ .size ffi_closure_SYSV, . - ffi_closure_SYSV -diff --git a/js/src/ctypes/libffi/src/mips/ffi.c b/js/src/ctypes/libffi/src/mips/ffi.c ---- a/js/src/ctypes/libffi/src/mips/ffi.c -+++ b/js/src/ctypes/libffi/src/mips/ffi.c -@@ -1,11 +1,12 @@ - /* ----------------------------------------------------------------------- -- ffi.c - Copyright (c) 1996, 2007, 2008 Red Hat, Inc. -- Copyright (c) 2008 David Daney -+ ffi.c - Copyright (c) 2011 Anthony Green -+ Copyright (c) 2008 David Daney -+ Copyright (c) 1996, 2007, 2008, 2011 Red Hat, Inc. - - MIPS Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -164,17 +165,24 @@ static void ffi_prep_args(char *stack, - *(ffi_arg *)argp = *(UINT16 *)(* p_argv); - break; - - case FFI_TYPE_SINT32: - *(ffi_arg *)argp = *(SINT32 *)(* p_argv); - break; - - case FFI_TYPE_UINT32: -+#ifdef FFI_MIPS_N32 -+ /* The N32 ABI requires that 32-bit integers -+ be sign-extended to 64-bits, regardless of -+ whether they are signed or unsigned. */ -+ *(ffi_arg *)argp = *(SINT32 *)(* p_argv); -+#else - *(ffi_arg *)argp = *(UINT32 *)(* p_argv); -+#endif - break; - - /* This can only happen with 64bit slots. */ - case FFI_TYPE_FLOAT: - *(float *) argp = *(float *)(* p_argv); - break; - - /* Handle structures. */ -@@ -661,20 +669,29 @@ ffi_prep_closure_loc (ffi_closure *closu - void *user_data, - void *codeloc) - { - unsigned int *tramp = (unsigned int *) &closure->tramp[0]; - void * fn; - char *clear_location = (char *) codeloc; - - #if defined(FFI_MIPS_O32) -- FFI_ASSERT(cif->abi == FFI_O32 || cif->abi == FFI_O32_SOFT_FLOAT); -+ if (cif->abi != FFI_O32 && cif->abi != FFI_O32_SOFT_FLOAT) -+ return FFI_BAD_ABI; - fn = ffi_closure_O32; --#else /* FFI_MIPS_N32 */ -- FFI_ASSERT(cif->abi == FFI_N32 || cif->abi == FFI_N64); -+#else -+#if _MIPS_SIM ==_ABIN32 -+ if (cif->abi != FFI_N32 -+ && cif->abi != FFI_N32_SOFT_FLOAT) -+ return FFI_BAD_ABI; -+#else -+ if (cif->abi != FFI_N64 -+ && cif->abi != FFI_N64_SOFT_FLOAT) -+ return FFI_BAD_ABI; -+#endif - fn = ffi_closure_N32; - #endif /* FFI_MIPS_O32 */ - - #if defined(FFI_MIPS_O32) || (_MIPS_SIM ==_ABIN32) - /* lui $25,high(fn) */ - tramp[0] = 0x3c190000 | ((unsigned)fn >> 16); - /* ori $25,low(fn) */ - tramp[1] = 0x37390000 | ((unsigned)fn & 0xffff); -diff --git a/js/src/ctypes/libffi/src/mips/ffitarget.h b/js/src/ctypes/libffi/src/mips/ffitarget.h ---- a/js/src/ctypes/libffi/src/mips/ffitarget.h -+++ b/js/src/ctypes/libffi/src/mips/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1996-2003 Red Hat, Inc. - Target configuration macros for MIPS. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,41 +23,53 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - #ifdef linux - # include -+#elif defined(__rtems__) -+/* -+ * Subprogram calling convention - copied from sgidefs.h -+ */ -+#define _MIPS_SIM_ABI32 1 -+#define _MIPS_SIM_NABI32 2 -+#define _MIPS_SIM_ABI64 3 - #elif !defined(__OpenBSD__) - # include - #endif -+ - # ifndef _ABIN32 - # define _ABIN32 _MIPS_SIM_NABI32 - # endif - # ifndef _ABI64 - # define _ABI64 _MIPS_SIM_ABI64 - # endif - # ifndef _ABIO32 - # define _ABIO32 _MIPS_SIM_ABI32 - # endif - - #if !defined(_MIPS_SIM) ---- something is very wrong -- -+# error -- something is very wrong -- - #else - # if (_MIPS_SIM==_ABIN32 && defined(_ABIN32)) || (_MIPS_SIM==_ABI64 && defined(_ABI64)) - # define FFI_MIPS_N32 - # else - # if (_MIPS_SIM==_ABIO32 && defined(_ABIO32)) - # define FFI_MIPS_O32 - # else ---- this is an unsupported platform -- -+# error -- this is an unsupported platform -- - # endif - # endif - #endif - - #ifdef FFI_MIPS_O32 - /* O32 stack frames have 32bit integer args */ - # define FFI_SIZEOF_ARG 4 - #else -diff --git a/js/src/ctypes/libffi/src/mips/n32.S b/js/src/ctypes/libffi/src/mips/n32.S ---- a/js/src/ctypes/libffi/src/mips/n32.S -+++ b/js/src/ctypes/libffi/src/mips/n32.S -@@ -38,16 +38,17 @@ - #define raddr a4 - #define fn a5 - - #define SIZEOF_FRAME ( 8 * FFI_SIZEOF_ARG ) - - #ifdef __GNUC__ - .abicalls - #endif -+ .set mips4 - .text - .align 2 - .globl ffi_call_N32 - .ent ffi_call_N32 - ffi_call_N32: - .LFB3: - .frame $fp, SIZEOF_FRAME, ra - .mask 0xc0000000,-FFI_SIZEOF_ARG -@@ -102,111 +103,95 @@ sixteen: - - ADDU t9, t9, t8 - - loadregs: - - REG_L t6, 3*FFI_SIZEOF_ARG($fp) # load the flags word into t6. - - and t4, t6, ((1<bytes -- # gr11: fig->flags -- # gr12: ecif.rvalue -- # gr13: fn -+ # $r0 : ffi_prep_args -+ # $r1 : &ecif -+ # $r2 : cif->bytes -+ # $r3 : fig->flags -+ # $r4 : ecif.rvalue -+ # $r5 : fn - --ffi_call_EABI: -- addi sp, #-80, sp -- sti fp, @(sp, #24) -- addi sp, #24, fp -- movsg lr, gr5 -+ffi_call_EABI: -+ push $sp, $r6 -+ push $sp, $r7 -+ push $sp, $r8 -+ dec $sp, 24 - -- /* Make room for the new arguments. */ -- /* subi sp, fp, gr10 */ -- -- /* Store return address and incoming args on stack. */ -- sti gr5, @(fp, #8) -- sti gr8, @(fp, #-4) -- sti gr9, @(fp, #-8) -- sti gr10, @(fp, #-12) -- sti gr11, @(fp, #-16) -- sti gr12, @(fp, #-20) -- sti gr13, @(fp, #-24) -- -- sub sp, gr10, sp -+ /* Store incoming args on stack. */ -+ sto.l 0($sp), $r0 /* ffi_prep_args */ -+ sto.l 4($sp), $r1 /* ecif */ -+ sto.l 8($sp), $r2 /* bytes */ -+ sto.l 12($sp), $r3 /* flags */ -+ sto.l 16($sp), $r4 /* &rvalue */ -+ sto.l 20($sp), $r5 /* fn */ - - /* Call ffi_prep_args. */ -- ldi @(fp, #-4), gr4 -- addi sp, #0, gr8 -- ldi @(fp, #-8), gr9 --#ifdef __FRV_FDPIC__ -- ldd @(gr4, gr0), gr14 -- calll @(gr14, gr0) --#else -- calll @(gr4, gr0) --#endif -+ mov $r6, $r4 /* Save result buffer */ -+ mov $r7, $r5 /* Save the target fn */ -+ mov $r8, $r3 /* Save the flags */ -+ sub.l $sp, $r2 /* Allocate stack space */ -+ mov $r0, $sp /* We can stomp over $r0 */ -+ /* $r1 is already set up */ -+ jsra ffi_prep_args - -- /* ffi_prep_args returns the new stack pointer. */ -- mov gr8, gr4 -- -- ldi @(sp, #0), gr8 -- ldi @(sp, #4), gr9 -- ldi @(sp, #8), gr10 -- ldi @(sp, #12), gr11 -- ldi @(sp, #16), gr12 -- ldi @(sp, #20), gr13 -- -- /* Always copy the return value pointer into the hidden -- parameter register. This is only strictly necessary -- when we're returning an aggregate type, but it doesn't -- hurt to do this all the time, and it saves a branch. */ -- ldi @(fp, #-20), gr3 -- -- /* Use the ffi_prep_args return value for the new sp. */ -- mov gr4, sp -+ /* Load register arguments. */ -+ ldo.l $r0, 0($sp) -+ ldo.l $r1, 4($sp) -+ ldo.l $r2, 8($sp) -+ ldo.l $r3, 12($sp) -+ ldo.l $r4, 16($sp) -+ ldo.l $r5, 20($sp) - - /* Call the target function. */ -- ldi @(fp, -24), gr4 --#ifdef __FRV_FDPIC__ -- ldd @(gr4, gr0), gr14 -- calll @(gr14, gr0) --#else -- calll @(gr4, gr0) --#endif -+ jsr $r7 - -- /* Store the result. */ -- ldi @(fp, #-16), gr10 /* fig->flags */ -- ldi @(fp, #-20), gr4 /* ecif.rvalue */ -+ ldi.l $r7, 0xffffffff -+ cmp $r8, $r7 -+ beq retstruct - -- /* Is the return value stored in two registers? */ -- cmpi gr10, #8, icc0 -- bne icc0, 0, .L2 -- /* Yes, save them. */ -- sti gr8, @(gr4, #0) -- sti gr9, @(gr4, #4) -- bra .L3 --.L2: -- /* Is the return value a structure? */ -- cmpi gr10, #-1, icc0 -- beq icc0, 0, .L3 -- /* No, save a 4 byte return value. */ -- sti gr8, @(gr4, #0) --.L3: -+ ldi.l $r7, 4 -+ cmp $r8, $r7 -+ bgt ret2reg - -- /* Restore the stack, and return. */ -- ldi @(fp, 8), gr5 -- ld @(fp, gr0), fp -- addi sp,#80,sp -- jmpl @(gr5,gr0) -+ st.l ($r6), $r0 -+ jmpa retdone -+ -+ret2reg: -+ st.l ($r6), $r0 -+ sto.l 4($r6), $r1 -+ -+retstruct: -+retdone: -+ /* Return. */ -+ ldo.l $r6, -4($fp) -+ ldo.l $r7, -8($fp) -+ ldo.l $r8, -12($fp) -+ ret - .size ffi_call_EABI, .-ffi_call_EABI - -diff --git a/js/src/ctypes/libffi/src/moxie/ffi.c b/js/src/ctypes/libffi/src/moxie/ffi.c ---- a/js/src/ctypes/libffi/src/moxie/ffi.c -+++ b/js/src/ctypes/libffi/src/moxie/ffi.c -@@ -1,10 +1,10 @@ - /* ----------------------------------------------------------------------- -- ffi.c - Copyright (C) 2009 Anthony Green -+ ffi.c - Copyright (C) 2012, 2013 Anthony Green - - Moxie Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -38,40 +38,35 @@ void *ffi_prep_args(char *stack, extende - register void **p_argv; - register char *argp; - register ffi_type **p_arg; - register int count = 0; - - p_argv = ecif->avalue; - argp = stack; - -+ if (ecif->cif->rtype->type == FFI_TYPE_STRUCT) -+ { -+ *(void **) argp = ecif->rvalue; -+ argp += 4; -+ } -+ - for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; - (i != 0); - i--, p_arg++) - { - size_t z; - - z = (*p_arg)->size; - - if ((*p_arg)->type == FFI_TYPE_STRUCT) - { - z = sizeof(void*); - *(void **) argp = *p_argv; - } -- /* if ((*p_arg)->type == FFI_TYPE_FLOAT) -- { -- if (count > 24) -- { -- // This is going on the stack. Turn it into a double. -- *(double *) argp = (double) *(float*)(* p_argv); -- z = sizeof(double); -- } -- else -- *(void **) argp = *(void **)(* p_argv); -- } */ - else if (z < sizeof(int)) - { - z = sizeof(int); - switch ((*p_arg)->type) - { - case FFI_TYPE_SINT8: - *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); - break; -@@ -142,135 +137,136 @@ void ffi_call(ffi_cif *cif, - - if ((rvalue == NULL) && - (cif->rtype->type == FFI_TYPE_STRUCT)) - { - ecif.rvalue = alloca(cif->rtype->size); - } - else - ecif.rvalue = rvalue; -- -- -+ - switch (cif->abi) - { - case FFI_EABI: - ffi_call_EABI(ffi_prep_args, &ecif, cif->bytes, - cif->flags, ecif.rvalue, fn); - break; - default: - FFI_ASSERT(0); - break; - } - } - - void ffi_closure_eabi (unsigned arg1, unsigned arg2, unsigned arg3, - unsigned arg4, unsigned arg5, unsigned arg6) - { - /* This function is called by a trampoline. The trampoline stows a -- pointer to the ffi_closure object in gr7. We must save this -+ pointer to the ffi_closure object in $r7. We must save this - pointer in a place that will persist while we do our work. */ -- register ffi_closure *creg __asm__ ("gr7"); -+ register ffi_closure *creg __asm__ ("$r12"); - ffi_closure *closure = creg; - - /* Arguments that don't fit in registers are found on the stack - at a fixed offset above the current frame pointer. */ -- register char *frame_pointer __asm__ ("fp"); -- char *stack_args = frame_pointer + 16; -+ register char *frame_pointer __asm__ ("$fp"); -+ -+ /* Pointer to a struct return value. */ -+ void *struct_rvalue = (void *) arg1; -+ -+ /* 6 words reserved for register args + 3 words from jsr */ -+ char *stack_args = frame_pointer + 9*4; - - /* Lay the register arguments down in a continuous chunk of memory. */ - unsigned register_args[6] = - { arg1, arg2, arg3, arg4, arg5, arg6 }; -+ char *register_args_ptr = (char *) register_args; - - ffi_cif *cif = closure->cif; - ffi_type **arg_types = cif->arg_types; - void **avalue = alloca (cif->nargs * sizeof(void *)); - char *ptr = (char *) register_args; - int i; - -+ /* preserve struct type return pointer passing */ -+ if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { -+ ptr += 4; -+ register_args_ptr = (char *)®ister_args[1]; -+ } -+ - /* Find the address of each argument. */ - for (i = 0; i < cif->nargs; i++) - { - switch (arg_types[i]->type) - { - case FFI_TYPE_SINT8: - case FFI_TYPE_UINT8: - avalue[i] = ptr + 3; - break; - case FFI_TYPE_SINT16: - case FFI_TYPE_UINT16: - avalue[i] = ptr + 2; - break; - case FFI_TYPE_SINT32: - case FFI_TYPE_UINT32: - case FFI_TYPE_FLOAT: -+ case FFI_TYPE_POINTER: - avalue[i] = ptr; - break; - case FFI_TYPE_STRUCT: - avalue[i] = *(void**)ptr; - break; - default: - /* This is an 8-byte value. */ - avalue[i] = ptr; - ptr += 4; - break; - } - ptr += 4; - - /* If we've handled more arguments than fit in registers, - start looking at the those passed on the stack. */ -- if (ptr == ((char *)register_args + (6*4))) -+ if (ptr == ®ister_args[6]) - ptr = stack_args; - } - - /* Invoke the closure. */ -- if (cif->rtype->type == FFI_TYPE_STRUCT) -+ if (cif->rtype && (cif->rtype->type == FFI_TYPE_STRUCT)) - { -- /* The caller allocates space for the return structure, and -- passes a pointer to this space in gr3. Use this value directly -- as the return value. */ -- register void *return_struct_ptr __asm__("gr3"); -- (closure->fun) (cif, return_struct_ptr, avalue, closure->user_data); -+ (closure->fun) (cif, struct_rvalue, avalue, closure->user_data); - } - else - { - /* Allocate space for the return value and call the function. */ - long long rvalue; - (closure->fun) (cif, &rvalue, avalue, closure->user_data); -- -- /* Functions return 4-byte or smaller results in gr8. 8-byte -- values also use gr9. We fill the both, even for small return -- values, just to avoid a branch. */ -- asm ("ldi @(%0, #0), gr8" : : "r" (&rvalue)); -- asm ("ldi @(%0, #0), gr9" : : "r" (&((int *) &rvalue)[1])); -+ asm ("mov $r12, %0\n ld.l $r0, ($r12)\n ldo.l $r1, 4($r12)" : : "r" (&rvalue)); - } - } - - ffi_status - ffi_prep_closure_loc (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*, void*, void**, void*), - void *user_data, - void *codeloc) - { -- unsigned int *tramp = (unsigned int *) &closure->tramp[0]; -+ unsigned short *tramp = (unsigned short *) &closure->tramp[0]; - unsigned long fn = (long) ffi_closure_eabi; - unsigned long cls = (long) codeloc; -- int i; -+ -+ if (cif->abi != FFI_EABI) -+ return FFI_BAD_ABI; - - fn = (unsigned long) ffi_closure_eabi; - -- tramp[0] = 0x8cfc0000 + (fn & 0xffff); /* setlos lo(fn), gr6 */ -- tramp[1] = 0x8efc0000 + (cls & 0xffff); /* setlos lo(cls), gr7 */ -- tramp[2] = 0x8cf80000 + (fn >> 16); /* sethi hi(fn), gr6 */ -- tramp[3] = 0x8ef80000 + (cls >> 16); /* sethi hi(cls), gr7 */ -- tramp[4] = 0x80300006; /* jmpl @(gr0, gr6) */ -+ tramp[0] = 0x01e0; /* ldi.l $r7, .... */ -+ tramp[1] = cls >> 16; -+ tramp[2] = cls & 0xffff; -+ tramp[3] = 0x1a00; /* jmpa .... */ -+ tramp[4] = fn >> 16; -+ tramp[5] = fn & 0xffff; - - closure->cif = cif; - closure->fun = fun; - closure->user_data = user_data; - -- /* Cache flushing. */ -- for (i = 0; i < FFI_TRAMPOLINE_SIZE; i++) -- __asm__ volatile ("dcf @(%0,%1)\n\tici @(%2,%1)" :: "r" (tramp), "r" (i), -- "r" (codeloc)); -- - return FFI_OK; - } -diff --git a/js/src/ctypes/libffi/src/moxie/ffitarget.h b/js/src/ctypes/libffi/src/moxie/ffitarget.h ---- a/js/src/ctypes/libffi/src/moxie/ffitarget.h -+++ b/js/src/ctypes/libffi/src/moxie/ffitarget.h -@@ -1,10 +1,10 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 2009 Anthony Green -+ ffitarget.h - Copyright (c) 2012, 2013 Anthony Green - Target configuration macros for Moxie - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -31,22 +31,22 @@ - - #ifndef LIBFFI_ASM - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, - FFI_EABI, -- FFI_LAST_ABI, -- FFI_DEFAULT_ABI = FFI_EABI -+ FFI_DEFAULT_ABI = FFI_EABI, -+ FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 - } ffi_abi; - #endif - - /* ---- Definitions for closures ----------------------------------------- */ - --#define FFI_CLOSURES 0 -+#define FFI_CLOSURES 1 - #define FFI_NATIVE_RAW_API 0 - --/* Trampolines are 5 4-byte instructions long. */ --#define FFI_TRAMPOLINE_SIZE (5*4) -+/* Trampolines are 12-bytes long. See ffi_prep_closure_loc. */ -+#define FFI_TRAMPOLINE_SIZE (12) - - #endif -diff --git a/js/src/ctypes/libffi/src/nios2/ffi.c b/js/src/ctypes/libffi/src/nios2/ffi.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/nios2/ffi.c -@@ -0,0 +1,304 @@ -+/* libffi support for Altera Nios II. -+ -+ Copyright (c) 2013 Mentor Graphics. -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be -+ included in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+ -+#include -+#include -+ -+#include -+ -+/* The Nios II Processor Reference Handbook defines the procedure call -+ ABI as follows. -+ -+ Arguments are passed as if a structure containing the types of -+ the arguments were constructed. The first 16 bytes are passed in r4 -+ through r7, the remainder on the stack. The first 16 bytes of a function -+ taking variable arguments are passed in r4-r7 in the same way. -+ -+ Return values of types up to 8 bytes are returned in r2 and r3. For -+ return values greater than 8 bytes, the caller must allocate memory for -+ the result and pass the address as if it were argument 0. -+ -+ While this isn't specified explicitly in the ABI documentation, GCC -+ promotes integral arguments smaller than int size to 32 bits. -+ -+ Also of note, the ABI specifies that all structure objects are -+ aligned to 32 bits even if all their fields have a smaller natural -+ alignment. See FFI_AGGREGATE_ALIGNMENT. */ -+ -+ -+/* Declare the assembly language hooks. */ -+ -+extern UINT64 ffi_call_sysv (void (*) (char *, extended_cif *), -+ extended_cif *, -+ unsigned, -+ void (*fn) (void)); -+extern void ffi_closure_sysv (void); -+ -+/* Perform machine-dependent cif processing. */ -+ -+ffi_status ffi_prep_cif_machdep (ffi_cif *cif) -+{ -+ /* We always want at least 16 bytes in the parameter block since it -+ simplifies the low-level call function. Also round the parameter -+ block size up to a multiple of 4 bytes to preserve -+ 32-bit alignment of the stack pointer. */ -+ if (cif->bytes < 16) -+ cif->bytes = 16; -+ else -+ cif->bytes = (cif->bytes + 3) & ~3; -+ -+ return FFI_OK; -+} -+ -+ -+/* ffi_prep_args is called by the assembly routine to transfer arguments -+ to the stack using the pointers in the ecif array. -+ Note that the stack buffer is big enough to fit all the arguments, -+ but the first 16 bytes will be copied to registers for the actual -+ call. */ -+ -+void ffi_prep_args (char *stack, extended_cif *ecif) -+{ -+ char *argp = stack; -+ unsigned int i; -+ -+ /* The implicit return value pointer is passed as if it were a hidden -+ first argument. */ -+ if (ecif->cif->rtype->type == FFI_TYPE_STRUCT -+ && ecif->cif->rtype->size > 8) -+ { -+ (*(void **) argp) = ecif->rvalue; -+ argp += 4; -+ } -+ -+ for (i = 0; i < ecif->cif->nargs; i++) -+ { -+ void *avalue = ecif->avalue[i]; -+ ffi_type *atype = ecif->cif->arg_types[i]; -+ size_t size = atype->size; -+ size_t alignment = atype->alignment; -+ -+ /* Align argp as appropriate for the argument type. */ -+ if ((alignment - 1) & (unsigned) argp) -+ argp = (char *) ALIGN (argp, alignment); -+ -+ /* Copy the argument, promoting integral types smaller than a -+ word to word size. */ -+ if (size < sizeof (int)) -+ { -+ size = sizeof (int); -+ switch (atype->type) -+ { -+ case FFI_TYPE_SINT8: -+ *(signed int *) argp = (signed int) *(SINT8 *) avalue; -+ break; -+ -+ case FFI_TYPE_UINT8: -+ *(unsigned int *) argp = (unsigned int) *(UINT8 *) avalue; -+ break; -+ -+ case FFI_TYPE_SINT16: -+ *(signed int *) argp = (signed int) *(SINT16 *) avalue; -+ break; -+ -+ case FFI_TYPE_UINT16: -+ *(unsigned int *) argp = (unsigned int) *(UINT16 *) avalue; -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ memcpy (argp, avalue, atype->size); -+ break; -+ -+ default: -+ FFI_ASSERT(0); -+ } -+ } -+ else if (size == sizeof (int)) -+ *(unsigned int *) argp = (unsigned int) *(UINT32 *) avalue; -+ else -+ memcpy (argp, avalue, size); -+ argp += size; -+ } -+} -+ -+ -+/* Call FN using the prepared CIF. RVALUE points to space allocated by -+ the caller for the return value, and AVALUE is an array of argument -+ pointers. */ -+ -+void ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) -+{ -+ -+ extended_cif ecif; -+ UINT64 result; -+ -+ /* If bigret is true, this is the case where a return value of larger -+ than 8 bytes is handled by being passed by reference as an implicit -+ argument. */ -+ int bigret = (cif->rtype->type == FFI_TYPE_STRUCT -+ && cif->rtype->size > 8); -+ -+ ecif.cif = cif; -+ ecif.avalue = avalue; -+ -+ /* Allocate space for return value if this is the pass-by-reference case -+ and the caller did not provide a buffer. */ -+ if (rvalue == NULL && bigret) -+ ecif.rvalue = alloca (cif->rtype->size); -+ else -+ ecif.rvalue = rvalue; -+ -+ result = ffi_call_sysv (ffi_prep_args, &ecif, cif->bytes, fn); -+ -+ /* Now result contains the 64 bit contents returned from fn in -+ r2 and r3. Copy the value of the appropriate size to the user-provided -+ rvalue buffer. */ -+ if (rvalue && !bigret) -+ switch (cif->rtype->size) -+ { -+ case 1: -+ *(UINT8 *)rvalue = (UINT8) result; -+ break; -+ case 2: -+ *(UINT16 *)rvalue = (UINT16) result; -+ break; -+ case 4: -+ *(UINT32 *)rvalue = (UINT32) result; -+ break; -+ case 8: -+ *(UINT64 *)rvalue = (UINT64) result; -+ break; -+ default: -+ memcpy (rvalue, (void *)&result, cif->rtype->size); -+ break; -+ } -+} -+ -+/* This function is invoked from the closure trampoline to invoke -+ CLOSURE with argument block ARGS. Parse ARGS according to -+ CLOSURE->cfi and invoke CLOSURE->fun. */ -+ -+static UINT64 -+ffi_closure_helper (unsigned char *args, -+ ffi_closure *closure) -+{ -+ ffi_cif *cif = closure->cif; -+ unsigned char *argp = args; -+ void **parsed_args = alloca (cif->nargs * sizeof (void *)); -+ UINT64 result; -+ void *retptr; -+ unsigned int i; -+ -+ /* First figure out what to do about the return type. If this is the -+ big-structure-return case, the first arg is the hidden return buffer -+ allocated by the caller. */ -+ if (cif->rtype->type == FFI_TYPE_STRUCT -+ && cif->rtype->size > 8) -+ { -+ retptr = *((void **) argp); -+ argp += 4; -+ } -+ else -+ retptr = (void *) &result; -+ -+ /* Fill in the array of argument pointers. */ -+ for (i = 0; i < cif->nargs; i++) -+ { -+ size_t size = cif->arg_types[i]->size; -+ size_t alignment = cif->arg_types[i]->alignment; -+ -+ /* Align argp as appropriate for the argument type. */ -+ if ((alignment - 1) & (unsigned) argp) -+ argp = (char *) ALIGN (argp, alignment); -+ -+ /* Arguments smaller than an int are promoted to int. */ -+ if (size < sizeof (int)) -+ size = sizeof (int); -+ -+ /* Store the pointer. */ -+ parsed_args[i] = argp; -+ argp += size; -+ } -+ -+ /* Call the user-supplied function. */ -+ (closure->fun) (cif, retptr, parsed_args, closure->user_data); -+ return result; -+} -+ -+ -+/* Initialize CLOSURE with a trampoline to call FUN with -+ CIF and USER_DATA. */ -+ffi_status -+ffi_prep_closure_loc (ffi_closure* closure, -+ ffi_cif* cif, -+ void (*fun) (ffi_cif*, void*, void**, void*), -+ void *user_data, -+ void *codeloc) -+{ -+ unsigned int *tramp = (unsigned int *) &closure->tramp[0]; -+ int i; -+ -+ if (cif->abi != FFI_SYSV) -+ return FFI_BAD_ABI; -+ -+ /* The trampoline looks like: -+ movhi r8, %hi(ffi_closure_sysv) -+ ori r8, r8, %lo(ffi_closure_sysv) -+ movhi r9, %hi(ffi_closure_helper) -+ ori r0, r9, %lo(ffi_closure_helper) -+ movhi r10, %hi(closure) -+ ori r10, r10, %lo(closure) -+ jmp r8 -+ and then ffi_closure_sysv retrieves the closure pointer out of r10 -+ in addition to the arguments passed in the normal way for the call, -+ and invokes ffi_closure_helper. We encode the pointer to -+ ffi_closure_helper in the trampoline because making a PIC call -+ to it in ffi_closure_sysv would be messy (it would have to indirect -+ through the GOT). */ -+ -+#define HI(x) ((((unsigned int) (x)) >> 16) & 0xffff) -+#define LO(x) (((unsigned int) (x)) & 0xffff) -+ tramp[0] = (0 << 27) | (8 << 22) | (HI (ffi_closure_sysv) << 6) | 0x34; -+ tramp[1] = (8 << 27) | (8 << 22) | (LO (ffi_closure_sysv) << 6) | 0x14; -+ tramp[2] = (0 << 27) | (9 << 22) | (HI (ffi_closure_helper) << 6) | 0x34; -+ tramp[3] = (9 << 27) | (9 << 22) | (LO (ffi_closure_helper) << 6) | 0x14; -+ tramp[4] = (0 << 27) | (10 << 22) | (HI (closure) << 6) | 0x34; -+ tramp[5] = (10 << 27) | (10 << 22) | (LO (closure) << 6) | 0x14; -+ tramp[6] = (8 << 27) | (0x0d << 11) | 0x3a; -+#undef HI -+#undef LO -+ -+ /* Flush the caches. -+ See Example 9-4 in the Nios II Software Developer's Handbook. */ -+ for (i = 0; i < 7; i++) -+ asm volatile ("flushd 0(%0); flushi %0" :: "r"(tramp + i) : "memory"); -+ asm volatile ("flushp" ::: "memory"); -+ -+ closure->cif = cif; -+ closure->fun = fun; -+ closure->user_data = user_data; -+ -+ return FFI_OK; -+} -+ -diff --git a/js/src/ctypes/libffi/src/nios2/ffitarget.h b/js/src/ctypes/libffi/src/nios2/ffitarget.h -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/nios2/ffitarget.h -@@ -0,0 +1,52 @@ -+/* libffi target includes for Altera Nios II. -+ -+ Copyright (c) 2013 Mentor Graphics. -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be -+ included in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+ -+#ifndef LIBFFI_TARGET_H -+#define LIBFFI_TARGET_H -+ -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ -+#ifndef LIBFFI_ASM -+typedef unsigned long ffi_arg; -+typedef signed long ffi_sarg; -+ -+typedef enum ffi_abi { -+ FFI_FIRST_ABI = 0, -+ FFI_SYSV, -+ FFI_LAST_ABI, -+ FFI_DEFAULT_ABI = FFI_SYSV -+} ffi_abi; -+#endif -+ -+/* Structures have a 4-byte alignment even if all the fields have lesser -+ alignment requirements. */ -+#define FFI_AGGREGATE_ALIGNMENT 4 -+ -+#define FFI_CLOSURES 1 -+#define FFI_TRAMPOLINE_SIZE 28 /* 7 instructions */ -+#define FFI_NATIVE_RAW_API 0 -+ -+#endif -diff --git a/js/src/ctypes/libffi/src/nios2/sysv.S b/js/src/ctypes/libffi/src/nios2/sysv.S -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/nios2/sysv.S -@@ -0,0 +1,136 @@ -+/* Low-level libffi support for Altera Nios II. -+ -+ Copyright (c) 2013 Mentor Graphics. -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be -+ included in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -+ -+/* This function is declared on the C side as -+ -+ extern UINT64 ffi_call_sysv (void (*arghook) (char *, extended_cif *), -+ extended_cif *ecif, -+ unsigned nbytes, -+ void (*fn) (void)); -+ -+ On input, the arguments appear as -+ r4 = arghook -+ r5 = ecif -+ r6 = nbytes -+ r7 = fn -+*/ -+ -+ .section .text -+ .align 2 -+ .global ffi_call_sysv -+ .type ffi_call_sysv, @function -+ -+ffi_call_sysv: -+ .cfi_startproc -+ -+ /* Create the stack frame, saving r16 so we can use it locally. */ -+ addi sp, sp, -12 -+ .cfi_def_cfa_offset 12 -+ stw ra, 8(sp) -+ stw fp, 4(sp) -+ stw r16, 0(sp) -+ .cfi_offset 31, -4 -+ .cfi_offset 28, -8 -+ .cfi_offset 16, -12 -+ mov fp, sp -+ .cfi_def_cfa_register 28 -+ mov r16, r7 -+ -+ /* Adjust the stack pointer to create the argument buffer -+ nbytes long. */ -+ sub sp, sp, r6 -+ -+ /* Call the arghook function. */ -+ mov r2, r4 /* fn */ -+ mov r4, sp /* argbuffer */ -+ callr r2 /* r5 already contains ecif */ -+ -+ /* Pop off the first 16 bytes of the argument buffer on the stack, -+ transferring the contents to the argument registers. */ -+ ldw r4, 0(sp) -+ ldw r5, 4(sp) -+ ldw r6, 8(sp) -+ ldw r7, 12(sp) -+ addi sp, sp, 16 -+ -+ /* Call the user function, which leaves its result in r2 and r3. */ -+ callr r16 -+ -+ /* Pop off the stack frame. */ -+ mov sp, fp -+ ldw ra, 8(sp) -+ ldw fp, 4(sp) -+ ldw r16, 0(sp) -+ addi sp, sp, 12 -+ ret -+ .cfi_endproc -+ .size ffi_call_sysv, .-ffi_call_sysv -+ -+ -+/* Closure trampolines jump here after putting the C helper address -+ in r9 and the closure pointer in r10. The user-supplied arguments -+ to the closure are in the normal places, in r4-r7 and on the -+ stack. Push the register arguments on the stack too and then call the -+ C helper function to deal with them. */ -+ -+ .section .text -+ .align 2 -+ .global ffi_closure_sysv -+ .type ffi_closure_sysv, @function -+ -+ffi_closure_sysv: -+ .cfi_startproc -+ -+ /* Create the stack frame, pushing the register args on the stack -+ just below the stack args. This is the same trick illustrated -+ in Figure 7-3 in the Nios II Processor Reference Handbook, used -+ for variable arguments and structures passed by value. */ -+ addi sp, sp, -20 -+ .cfi_def_cfa_offset 20 -+ stw ra, 0(sp) -+ .cfi_offset 31, -20 -+ stw r4, 4(sp) -+ .cfi_offset 4, -16 -+ stw r5, 8(sp) -+ .cfi_offset 5, -12 -+ stw r6, 12(sp) -+ .cfi_offset 6, -8 -+ stw r7, 16(sp) -+ .cfi_offset 7, -4 -+ -+ /* Call the helper. -+ r4 = pointer to arguments on stack -+ r5 = closure pointer (loaded in r10 by the trampoline) -+ r9 = address of helper function (loaded by trampoline) */ -+ addi r4, sp, 4 -+ mov r5, r10 -+ callr r9 -+ -+ /* Pop the stack and return. */ -+ ldw ra, 0(sp) -+ addi sp, sp, 20 -+ .cfi_def_cfa_offset -20 -+ ret -+ .cfi_endproc -+ .size ffi_closure_sysv, .-ffi_closure_sysv -+ -diff --git a/js/src/ctypes/libffi/src/pa/ffi.c b/js/src/ctypes/libffi/src/pa/ffi.c ---- a/js/src/ctypes/libffi/src/pa/ffi.c -+++ b/js/src/ctypes/libffi/src/pa/ffi.c -@@ -1,14 +1,16 @@ - /* ----------------------------------------------------------------------- -- ffi.c - (c) 2003-2004 Randolph Chung -+ ffi.c - (c) 2011 Anthony Green - (c) 2008 Red Hat, Inc. -- -+ (c) 2006 Free Software Foundation, Inc. -+ (c) 2003-2004 Randolph Chung -+ - HPPA Foreign Function Interface -- HP-UX PA ABI support (c) 2006 Free Software Foundation, Inc. -+ HP-UX PA ABI support - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: -@@ -628,17 +630,18 @@ ffi_prep_closure_loc (ffi_closure* closu - void *user_data, - void *codeloc) - { - UINT32 *tramp = (UINT32 *)(closure->tramp); - #ifdef PA_HPUX - UINT32 *tmp; - #endif - -- FFI_ASSERT (cif->abi == FFI_PA32); -+ if (cif->abi != FFI_PA32) -+ return FFI_BAD_ABI; - - /* Make a small trampoline that will branch to our - handler function. Use PC-relative addressing. */ - - #ifdef PA_LINUX - tramp[0] = 0xeaa00000; /* b,l .+8,%r21 ; %r21 <- pc+8 */ - tramp[1] = 0xd6a01c1e; /* depi 0,31,2,%r21 ; mask priv bits */ - tramp[2] = 0x4aa10028; /* ldw 20(%r21),%r1 ; load plabel */ -diff --git a/js/src/ctypes/libffi/src/pa/ffitarget.h b/js/src/ctypes/libffi/src/pa/ffitarget.h ---- a/js/src/ctypes/libffi/src/pa/ffitarget.h -+++ b/js/src/ctypes/libffi/src/pa/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1996-2003 Red Hat, Inc. - Target configuration macros for hppa. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,16 +23,20 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - /* ---- System specific configurations ----------------------------------- */ - - #ifndef LIBFFI_ASM - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, -diff --git a/js/src/ctypes/libffi/src/powerpc/aix.S b/js/src/ctypes/libffi/src/powerpc/aix.S ---- a/js/src/ctypes/libffi/src/powerpc/aix.S -+++ b/js/src/ctypes/libffi/src/powerpc/aix.S -@@ -1,10 +1,10 @@ - /* ----------------------------------------------------------------------- -- aix.S - Copyright (c) 2002,2009 Free Software Foundation, Inc. -+ aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc. - based on darwin.S by John Hornkvist - - PowerPC Assembly glue. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, -@@ -74,16 +74,18 @@ - .set f15,15 - .set f16,16 - .set f17,17 - .set f18,18 - .set f19,19 - .set f20,20 - .set f21,21 - -+ .extern .ffi_prep_args -+ - #define LIBFFI_ASM - #include - #include - #define JUMPTARGET(name) name - #define L(x) x - .file "aix.S" - .toc - -@@ -120,39 +122,40 @@ ffi_call_AIX: - mr r31, r5 /* flags, */ - mr r30, r6 /* rvalue, */ - mr r29, r7 /* function address. */ - std r2, 40(r1) - - /* Call ffi_prep_args. */ - mr r4, r1 - bl .ffi_prep_args -+ nop - - /* Now do the call. */ - ld r0, 0(r29) - ld r2, 8(r29) - ld r11, 16(r29) - /* Set up cr1 with bits 4-7 of the flags. */ - mtcrf 0x40, r31 - mtctr r0 - /* Load all those argument registers. */ -- // We have set up a nice stack frame, just load it into registers. -+ /* We have set up a nice stack frame, just load it into registers. */ - ld r3, 40+(1*8)(r1) - ld r4, 40+(2*8)(r1) - ld r5, 40+(3*8)(r1) - ld r6, 40+(4*8)(r1) - nop - ld r7, 40+(5*8)(r1) - ld r8, 40+(6*8)(r1) - ld r9, 40+(7*8)(r1) - ld r10,40+(8*8)(r1) - - L1: - /* Load all the FP registers. */ -- bf 6,L2 // 2f + 0x18 -+ bf 6,L2 /* 2f + 0x18 */ - lfd f1,-32-(13*8)(r28) - lfd f2,-32-(12*8)(r28) - lfd f3,-32-(11*8)(r28) - lfd f4,-32-(10*8)(r28) - nop - lfd f5,-32-(9*8)(r28) - lfd f6,-32-(8*8)(r28) - lfd f7,-32-(7*8)(r28) -@@ -221,39 +224,40 @@ L(float_return_value): - mr r31, r5 /* flags, */ - mr r30, r6 /* rvalue, */ - mr r29, r7 /* function address, */ - stw r2, 20(r1) - - /* Call ffi_prep_args. */ - mr r4, r1 - bl .ffi_prep_args -+ nop - - /* Now do the call. */ - lwz r0, 0(r29) - lwz r2, 4(r29) - lwz r11, 8(r29) - /* Set up cr1 with bits 4-7 of the flags. */ - mtcrf 0x40, r31 - mtctr r0 - /* Load all those argument registers. */ -- // We have set up a nice stack frame, just load it into registers. -+ /* We have set up a nice stack frame, just load it into registers. */ - lwz r3, 20+(1*4)(r1) - lwz r4, 20+(2*4)(r1) - lwz r5, 20+(3*4)(r1) - lwz r6, 20+(4*4)(r1) - nop - lwz r7, 20+(5*4)(r1) - lwz r8, 20+(6*4)(r1) - lwz r9, 20+(7*4)(r1) - lwz r10,20+(8*4)(r1) - - L1: - /* Load all the FP registers. */ -- bf 6,L2 // 2f + 0x18 -+ bf 6,L2 /* 2f + 0x18 */ - lfd f1,-16-(13*8)(r28) - lfd f2,-16-(12*8)(r28) - lfd f3,-16-(11*8)(r28) - lfd f4,-16-(10*8)(r28) - nop - lfd f5,-16-(9*8)(r28) - lfd f6,-16-(8*8)(r28) - lfd f7,-16-(7*8)(r28) -@@ -298,17 +302,17 @@ L(fp_return_value): - stfd f1, 0(r30) - b L(done_return_value) - L(float_return_value): - stfs f1, 0(r30) - b L(done_return_value) - #endif - .long 0 - .byte 0,0,0,1,128,4,0,0 --//END(ffi_call_AIX) -+/* END(ffi_call_AIX) */ - - .csect .text[PR] - .align 2 - .globl ffi_call_DARWIN - .globl .ffi_call_DARWIN - .csect ffi_call_DARWIN[DS] - ffi_call_DARWIN: - #ifdef __64BIT__ -@@ -316,9 +320,9 @@ ffi_call_DARWIN: - #else - .long .ffi_call_DARWIN, TOC[tc0], 0 - #endif - .csect .text[PR] - .ffi_call_DARWIN: - blr - .long 0 - .byte 0,0,0,0,0,0,0,0 --//END(ffi_call_DARWIN) -+/* END(ffi_call_DARWIN) */ -diff --git a/js/src/ctypes/libffi/src/powerpc/aix_closure.S b/js/src/ctypes/libffi/src/powerpc/aix_closure.S ---- a/js/src/ctypes/libffi/src/powerpc/aix_closure.S -+++ b/js/src/ctypes/libffi/src/powerpc/aix_closure.S -@@ -74,16 +74,18 @@ - .set f15,15 - .set f16,16 - .set f17,17 - .set f18,18 - .set f19,19 - .set f20,20 - .set f21,21 - -+ .extern .ffi_closure_helper_DARWIN -+ - #define LIBFFI_ASM - #define JUMPTARGET(name) name - #define L(x) x - .file "aix_closure.S" - .toc - LC..60: - .tc L..60[TC],L..60 - .csect .text[PR] -@@ -160,16 +162,17 @@ ffi_closure_ASM: - nop - - /* now r3 contains the return type */ - /* so use it to look up in a table */ - /* so we know how to deal with each type */ - - /* look up the proper starting point in table */ - /* by using return type as offset */ -+ lhz r3, 10(r3) /* load type from return type */ - ld r4, LC..60(2) /* get address of jump table */ - sldi r3, r3, 4 /* now multiply return type by 16 */ - ld r0, 240+16(r1) /* load return address */ - add r3, r3, r4 /* add contents of table to table address */ - mtctr r3 - bctr /* jump to it */ - - /* Each fragment must be exactly 16 bytes long (4 instructions). -@@ -332,18 +335,19 @@ L..finish: - nop - - /* now r3 contains the return type */ - /* so use it to look up in a table */ - /* so we know how to deal with each type */ - - /* look up the proper starting point in table */ - /* by using return type as offset */ -+ lhz r3, 6(r3) /* load type from return type */ - lwz r4, LC..60(2) /* get address of jump table */ -- slwi r3, r3, 4 /* now multiply return type by 4 */ -+ slwi r3, r3, 4 /* now multiply return type by 16 */ - lwz r0, 176+8(r1) /* load return address */ - add r3, r3, r4 /* add contents of table to table address */ - mtctr r3 - bctr /* jump to it */ - - /* Each fragment must be exactly 16 bytes long (4 instructions). - Align to 16 byte boundary for cache and dispatch efficiency. */ - .align 4 -diff --git a/js/src/ctypes/libffi/src/powerpc/asm.h b/js/src/ctypes/libffi/src/powerpc/asm.h ---- a/js/src/ctypes/libffi/src/powerpc/asm.h -+++ b/js/src/ctypes/libffi/src/powerpc/asm.h -@@ -37,17 +37,17 @@ - /* This seems to always be the case on PPC. */ - #define ALIGNARG(log2) log2 - /* For ELF we need the `.type' directive to make shared libs work right. */ - #define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg; - #define ASM_SIZE_DIRECTIVE(name) .size name,.-name - - /* If compiled for profiling, call `_mcount' at the start of each function. */ - #ifdef PROF --/* The mcount code relies on a the return address being on the stack -+/* The mcount code relies on the return address being on the stack - to locate our caller and so it can restore it; so store one just - for its benefit. */ - #ifdef PIC - #define CALL_MCOUNT \ - .pushsection; \ - .section ".data"; \ - .align ALIGNARG(2); \ - 0:.long 0; \ -diff --git a/js/src/ctypes/libffi/src/powerpc/darwin.S b/js/src/ctypes/libffi/src/powerpc/darwin.S ---- a/js/src/ctypes/libffi/src/powerpc/darwin.S -+++ b/js/src/ctypes/libffi/src/powerpc/darwin.S -@@ -1,11 +1,11 @@ - /* ----------------------------------------------------------------------- - darwin.S - Copyright (c) 2000 John Hornkvist -- Copyright (c) 2004 Free Software Foundation, Inc. -+ Copyright (c) 2004, 2010 Free Software Foundation, Inc. - - PowerPC Assembly glue. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -19,207 +19,342 @@ - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------------------------------------- */ - -+#define LIBFFI_ASM - #if defined(__ppc64__) - #define MODE_CHOICE(x, y) y - #else - #define MODE_CHOICE(x, y) x - #endif - --#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */ -+#define machine_choice MODE_CHOICE(ppc7400,ppc64) - --#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */ -+; Define some pseudo-opcodes for size-independent load & store of GPRs ... -+#define lgu MODE_CHOICE(lwzu, ldu) -+#define lg MODE_CHOICE(lwz,ld) -+#define sg MODE_CHOICE(stw,std) -+#define sgu MODE_CHOICE(stwu,stdu) -+#define sgux MODE_CHOICE(stwux,stdux) - --#define LIBFFI_ASM -+; ... and the size of GPRs and their storage indicator. -+#define GPR_BYTES MODE_CHOICE(4,8) -+#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */ -+#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */ -+ -+; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04. -+#define LINKAGE_SIZE MODE_CHOICE(24,48) -+#define PARAM_AREA MODE_CHOICE(32,64) -+#define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* save position for lr */ -+ -+/* If there is any FP stuff we make space for all of the regs. */ -+#define SAVED_FPR_COUNT 13 -+#define FPR_SIZE 8 -+#define RESULT_BYTES 16 -+ -+/* This should be kept in step with the same value in ffi_darwin.c. */ -+#define ASM_NEEDS_REGISTERS 4 -+#define SAVE_REGS_SIZE (ASM_NEEDS_REGISTERS * GPR_BYTES) -+ - #include - #include -+ - #define JUMPTARGET(name) name - #define L(x) x --.text -+ -+ .text - .align 2 --.globl _ffi_prep_args -+ .globl _ffi_prep_args - --.text - .align 2 --.globl _ffi_call_DARWIN --.text -- .align 2 -+ .globl _ffi_call_DARWIN -+ -+ /* We arrive here with: -+ r3 = ptr to extended cif. -+ r4 = -bytes. -+ r5 = cif flags. -+ r6 = ptr to return value. -+ r7 = fn pointer (user func). -+ r8 = fn pointer (ffi_prep_args). -+ r9 = ffi_type* for the ret val. */ -+ - _ffi_call_DARWIN: --LFB0: -+Lstartcode: - mr r12,r8 /* We only need r12 until the call, -- so it doesn't have to be saved. */ -+ so it does not have to be saved. */ - LFB1: - /* Save the old stack pointer as AP. */ - mr r8,r1 - LCFI0: -+ -+ /* Save the retval type in parents frame. */ -+ sg r9,(LINKAGE_SIZE+6*GPR_BYTES)(r8) -+ - /* Allocate the stack space we need. */ -- stwux r1,r1,r4 -+ sgux r1,r1,r4 - - /* Save registers we use. */ - mflr r9 -+ sg r9,SAVED_LR_OFFSET(r8) - -- stw r28,-16(r8) -- stw r29,-12(r8) -- stw r30,-8(r8) -- stw r31,-4(r8) -+ sg r28,-(4 * GPR_BYTES)(r8) -+ sg r29,-(3 * GPR_BYTES)(r8) -+ sg r30,-(2 * GPR_BYTES)(r8) -+ sg r31,-( GPR_BYTES)(r8) - -- stw r9,8(r8) -- stw r2,20(r1) -+#if !defined(POWERPC_DARWIN) -+ /* The TOC slot is reserved in the Darwin ABI and r2 is volatile. */ -+ sg r2,(5 * GPR_BYTES)(r1) -+#endif -+ - LCFI1: - - /* Save arguments over call. */ - mr r31,r5 /* flags, */ - mr r30,r6 /* rvalue, */ - mr r29,r7 /* function address, */ - mr r28,r8 /* our AP. */ - LCFI2: -- /* Call ffi_prep_args. */ -+ /* Call ffi_prep_args. r3 = extended cif, r4 = stack ptr copy. */ - mr r4,r1 - li r9,0 - - mtctr r12 /* r12 holds address of _ffi_prep_args. */ - bctrl -- lwz r2,20(r1) - -+#if !defined(POWERPC_DARWIN) -+ /* The TOC slot is reserved in the Darwin ABI and r2 is volatile. */ -+ lg r2,(5 * GPR_BYTES)(r1) -+#endif - /* Now do the call. - Set up cr1 with bits 4-7 of the flags. */ - mtcrf 0x40,r31 - /* Get the address to call into CTR. */ - mtctr r29 - /* Load all those argument registers. - We have set up a nice stack frame, just load it into registers. */ -- lwz r3,20+(1*4)(r1) -- lwz r4,20+(2*4)(r1) -- lwz r5,20+(3*4)(r1) -- lwz r6,20+(4*4)(r1) -+ lg r3, (LINKAGE_SIZE )(r1) -+ lg r4, (LINKAGE_SIZE + GPR_BYTES)(r1) -+ lg r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r1) -+ lg r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r1) - nop -- lwz r7,20+(5*4)(r1) -- lwz r8,20+(6*4)(r1) -- lwz r9,20+(7*4)(r1) -- lwz r10,20+(8*4)(r1) -+ lg r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r1) -+ lg r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r1) -+ lg r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r1) -+ lg r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r1) - - L1: -- /* Load all the FP registers. */ -+ /* ... Load all the FP registers. */ - bf 6,L2 /* No floats to load. */ -- lfd f1,-16-(13*8)(r28) -- lfd f2,-16-(12*8)(r28) -- lfd f3,-16-(11*8)(r28) -- lfd f4,-16-(10*8)(r28) -+ lfd f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28) -+ lfd f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28) -+ lfd f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28) -+ lfd f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28) - nop -- lfd f5,-16-(9*8)(r28) -- lfd f6,-16-(8*8)(r28) -- lfd f7,-16-(7*8)(r28) -- lfd f8,-16-(6*8)(r28) -+ lfd f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28) -+ lfd f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28) -+ lfd f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28) -+ lfd f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28) - nop -- lfd f9,-16-(5*8)(r28) -- lfd f10,-16-(4*8)(r28) -- lfd f11,-16-(3*8)(r28) -- lfd f12,-16-(2*8)(r28) -+ lfd f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28) -+ lfd f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28) -+ lfd f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28) -+ lfd f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28) - nop -- lfd f13,-16-(1*8)(r28) -+ lfd f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28) - - L2: - mr r12,r29 /* Put the target address in r12 as specified. */ - mtctr r12 - nop - nop -+ - /* Make the call. */ - bctrl - - /* Now, deal with the return value. */ -- mtcrf 0x01,r31 - -- bt 30,L(done_return_value) -- bt 29,L(fp_return_value) -- stw r3,0(r30) -- bf 28,L(done_return_value) -- stw r4,4(r30) -+ /* m64 structure returns can occupy the same set of registers as -+ would be used to pass such a structure as arg0 - so take care -+ not to step on any possibly hot regs. */ - -- /* Fall through. */ -+ /* Get the flags.. */ -+ mtcrf 0x03,r31 ; we need c6 & cr7 now. -+ ; FLAG_RETURNS_NOTHING also covers struct ret-by-ref. -+ bt 30,L(done_return_value) ; FLAG_RETURNS_NOTHING -+ bf 27,L(scalar_return_value) ; not FLAG_RETURNS_STRUCT -+ -+ /* OK, so we have a struct. */ -+#if defined(__ppc64__) -+ bt 31,L(maybe_return_128) ; FLAG_RETURNS_128BITS, special case - --L(done_return_value): -- /* Restore the registers we used and return. */ -- lwz r9,8(r28) -- lwz r31,-4(r28) -- mtlr r9 -- lwz r30,-8(r28) -- lwz r29,-12(r28) -- lwz r28,-16(r28) -- lwz r1,0(r1) -- blr -+ /* OK, we have to map the return back to a mem struct. -+ We are about to trample the parents param area, so recover the -+ return type. r29 is free, since the call is done. */ -+ lg r29,(LINKAGE_SIZE + 6 * GPR_BYTES)(r28) -+ -+ sg r3, (LINKAGE_SIZE )(r28) -+ sg r4, (LINKAGE_SIZE + GPR_BYTES)(r28) -+ sg r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r28) -+ sg r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r28) -+ nop -+ sg r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r28) -+ sg r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r28) -+ sg r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r28) -+ sg r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28) -+ /* OK, so do the block move - we trust that memcpy will not trample -+ the fprs... */ -+ mr r3,r30 ; dest -+ addi r4,r28,LINKAGE_SIZE ; source -+ /* The size is a size_t, should be long. */ -+ lg r5,0(r29) -+ /* Figure out small structs */ -+ cmpi 0,r5,4 -+ bgt L3 ; 1, 2 and 4 bytes have special rules. -+ cmpi 0,r5,3 -+ beq L3 ; not 3 -+ addi r4,r4,8 -+ subf r4,r5,r4 -+L3: -+ bl _memcpy -+ -+ /* ... do we need the FP registers? - recover the flags.. */ -+ mtcrf 0x03,r31 ; we need c6 & cr7 now. -+ bf 29,L(done_return_value) /* No floats in the struct. */ -+ stfd f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28) -+ stfd f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28) -+ stfd f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28) -+ stfd f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28) -+ nop -+ stfd f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28) -+ stfd f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28) -+ stfd f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28) -+ stfd f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28) -+ nop -+ stfd f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28) -+ stfd f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28) -+ stfd f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28) -+ stfd f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28) -+ nop -+ stfd f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28) -+ -+ mr r3,r29 ; ffi_type * -+ mr r4,r30 ; dest -+ addi r5,r28,-SAVE_REGS_SIZE-(13*FPR_SIZE) ; fprs -+ xor r6,r6,r6 -+ sg r6,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28) -+ addi r6,r28,(LINKAGE_SIZE + 7 * GPR_BYTES) ; point to a zeroed counter. -+ bl _darwin64_struct_floats_to_mem -+ -+ b L(done_return_value) -+#else -+ stw r3,0(r30) ; m32 the only struct return in reg is 4 bytes. -+#endif -+ b L(done_return_value) - - L(fp_return_value): - /* Do we have long double to store? */ -- bf 31,L(fd_return_value) -+ bf 31,L(fd_return_value) ; FLAG_RETURNS_128BITS - stfd f1,0(r30) -- stfd f2,8(r30) -+ stfd f2,FPR_SIZE(r30) - b L(done_return_value) - - L(fd_return_value): - /* Do we have double to store? */ - bf 28,L(float_return_value) - stfd f1,0(r30) - b L(done_return_value) - - L(float_return_value): - /* We only have a float to store. */ - stfs f1,0(r30) - b L(done_return_value) - -+L(scalar_return_value): -+ bt 29,L(fp_return_value) ; FLAG_RETURNS_FP -+ ; ffi_arg is defined as unsigned long. -+ sg r3,0(r30) ; Save the reg. -+ bf 28,L(done_return_value) ; not FLAG_RETURNS_64BITS -+ -+#if defined(__ppc64__) -+L(maybe_return_128): -+ std r3,0(r30) -+ bf 31,L(done_return_value) ; not FLAG_RETURNS_128BITS -+ std r4,8(r30) -+#else -+ stw r4,4(r30) -+#endif -+ -+ /* Fall through. */ -+ /* We want this at the end to simplify eh epilog computation. */ -+ -+L(done_return_value): -+ /* Restore the registers we used and return. */ -+ lg r29,SAVED_LR_OFFSET(r28) -+ ; epilog -+ lg r31,-(1 * GPR_BYTES)(r28) -+ mtlr r29 -+ lg r30,-(2 * GPR_BYTES)(r28) -+ lg r29,-(3 * GPR_BYTES)(r28) -+ lg r28,-(4 * GPR_BYTES)(r28) -+ lg r1,0(r1) -+ blr - LFE1: -+ .align 1 - /* END(_ffi_call_DARWIN) */ - - /* Provide a null definition of _ffi_call_AIX. */ --.text -- .align 2 --.globl _ffi_call_AIX --.text -+ .text -+ .globl _ffi_call_AIX - .align 2 - _ffi_call_AIX: - blr - /* END(_ffi_call_AIX) */ - --.data --.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms -+/* EH stuff. */ -+ -+#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78) -+ -+ .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support - EH_frame1: - .set L$set$0,LECIE1-LSCIE1 - .long L$set$0 ; Length of Common Information Entry - LSCIE1: - .long 0x0 ; CIE Identifier Tag - .byte 0x1 ; CIE Version - .ascii "zR\0" ; CIE Augmentation - .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor -- .byte 0x7c ; sleb128 -4; CIE Data Alignment Factor -+ .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor - .byte 0x41 ; CIE RA Column - .byte 0x1 ; uleb128 0x1; Augmentation size -- .byte 0x90 ; FDE Encoding (indirect pcrel) -+ .byte 0x10 ; FDE Encoding (pcrel) - .byte 0xc ; DW_CFA_def_cfa - .byte 0x1 ; uleb128 0x1 - .byte 0x0 ; uleb128 0x0 - .align LOG2_GPR_BYTES - LECIE1: --.globl _ffi_call_DARWIN.eh -+ -+ .globl _ffi_call_DARWIN.eh - _ffi_call_DARWIN.eh: - LSFDE1: - .set L$set$1,LEFDE1-LASFDE1 - .long L$set$1 ; FDE Length - LASFDE1: - .long LASFDE1-EH_frame1 ; FDE CIE offset -- .g_long LLFB0$non_lazy_ptr-. ; FDE initial location -- .set L$set$3,LFE1-LFB0 -+ .g_long Lstartcode-. ; FDE initial location -+ .set L$set$3,LFE1-Lstartcode - .g_long L$set$3 ; FDE address range - .byte 0x0 ; uleb128 0x0; Augmentation size - .byte 0x4 ; DW_CFA_advance_loc4 -- .set L$set$4,LCFI0-LFB1 -+ .set L$set$4,LCFI0-Lstartcode - .long L$set$4 - .byte 0xd ; DW_CFA_def_cfa_register - .byte 0x08 ; uleb128 0x08 - .byte 0x4 ; DW_CFA_advance_loc4 - .set L$set$5,LCFI1-LCFI0 - .long L$set$5 - .byte 0x11 ; DW_CFA_offset_extended_sf - .byte 0x41 ; uleb128 0x41 -@@ -234,12 +369,10 @@ LASFDE1: - .byte 0x4 ; uleb128 0x4 - .byte 0x4 ; DW_CFA_advance_loc4 - .set L$set$6,LCFI2-LCFI1 - .long L$set$6 - .byte 0xd ; DW_CFA_def_cfa_register - .byte 0x1c ; uleb128 0x1c - .align LOG2_GPR_BYTES - LEFDE1: --.data -- .align LOG2_GPR_BYTES --LLFB0$non_lazy_ptr: -- .g_long LFB0 -+ .align 1 -+ -diff --git a/js/src/ctypes/libffi/src/powerpc/darwin_closure.S b/js/src/ctypes/libffi/src/powerpc/darwin_closure.S ---- a/js/src/ctypes/libffi/src/powerpc/darwin_closure.S -+++ b/js/src/ctypes/libffi/src/powerpc/darwin_closure.S -@@ -1,11 +1,12 @@ - /* ----------------------------------------------------------------------- -- darwin_closure.S - Copyright (c) 2002, 2003, 2004, Free Software Foundation, -- Inc. based on ppc_closure.S -+ darwin_closure.S - Copyright (c) 2002, 2003, 2004, 2010, -+ Free Software Foundation, Inc. -+ based on ppc_closure.S - - PowerPC Assembly glue. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -28,101 +29,187 @@ - #define L(x) x - - #if defined(__ppc64__) - #define MODE_CHOICE(x, y) y - #else - #define MODE_CHOICE(x, y) x - #endif - --#define lgu MODE_CHOICE(lwzu, ldu) -+#define machine_choice MODE_CHOICE(ppc7400,ppc64) - --#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */ -+; Define some pseudo-opcodes for size-independent load & store of GPRs ... -+#define lgu MODE_CHOICE(lwzu, ldu) -+#define lg MODE_CHOICE(lwz,ld) -+#define sg MODE_CHOICE(stw,std) -+#define sgu MODE_CHOICE(stwu,stdu) - --#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */ -+; ... and the size of GPRs and their storage indicator. -+#define GPR_BYTES MODE_CHOICE(4,8) -+#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */ -+#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */ -+ -+; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04. -+#define LINKAGE_SIZE MODE_CHOICE(24,48) -+#define PARAM_AREA MODE_CHOICE(32,64) -+ -+#define SAVED_CR_OFFSET MODE_CHOICE(4,8) /* save position for CR */ -+#define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* save position for lr */ -+ -+/* WARNING: if ffi_type is changed... here be monsters. -+ Offsets of items within the result type. */ -+#define FFI_TYPE_TYPE MODE_CHOICE(6,10) -+#define FFI_TYPE_ELEM MODE_CHOICE(8,16) -+ -+#define SAVED_FPR_COUNT 13 -+#define FPR_SIZE 8 -+/* biggest m64 struct ret is 8GPRS + 13FPRS = 168 bytes - rounded to 16bytes = 176. */ -+#define RESULT_BYTES MODE_CHOICE(16,176) -+ -+; The whole stack frame **MUST** be 16byte-aligned. -+#define SAVE_SIZE (((LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES)+15) & -16LL) -+#define PAD_SIZE (SAVE_SIZE-(LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES)) -+ -+#define PARENT_PARM_BASE (SAVE_SIZE+LINKAGE_SIZE) -+#define FP_SAVE_BASE (LINKAGE_SIZE+PARAM_AREA) -+ -+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050 -+; We no longer need the pic symbol stub for Darwin >= 9. -+#define BLCLS_HELP _ffi_closure_helper_DARWIN -+#define STRUCT_RETVALUE_P _darwin64_struct_ret_by_value_p -+#define PASS_STR_FLOATS _darwin64_pass_struct_floats -+#undef WANT_STUB -+#else -+#define BLCLS_HELP L_ffi_closure_helper_DARWIN$stub -+#define STRUCT_RETVALUE_P L_darwin64_struct_ret_by_value_p$stub -+#define PASS_STR_FLOATS L_darwin64_pass_struct_floats$stub -+#define WANT_STUB -+#endif -+ -+/* m32/m64 -+ -+ The stack layout looks like this: -+ -+ | Additional params... | | Higher address -+ ~ ~ ~ -+ | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS -+ |--------------------------------------------| | -+ | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | -+ |--------------------------------------------| | -+ | Reserved 2*4/8 | | -+ |--------------------------------------------| | -+ | Space for callee`s LR 4/8 | | -+ |--------------------------------------------| | -+ | Saved CR [low word for m64] 4/8 | | -+ |--------------------------------------------| | -+ | Current backchain pointer 4/8 |-/ Parent`s frame. -+ |--------------------------------------------| <+ <<< on entry to -+ | Result Bytes 16/176 | | -+ |--------------------------------------------| | -+ ~ padding to 16-byte alignment ~ ~ -+ |--------------------------------------------| | -+ | NUM_FPR_ARG_REGISTERS slots | | -+ | here fp13 .. fp1 13*8 | | -+ |--------------------------------------------| | -+ | R3..R10 8*4/8=32/64 | | NUM_GPR_ARG_REGISTERS -+ |--------------------------------------------| | -+ | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | -+ |--------------------------------------------| | stack | -+ | Reserved [compiler,binder] 2*4/8 | | grows | -+ |--------------------------------------------| | down V -+ | Space for callees LR 4/8 | | -+ |--------------------------------------------| | lower addresses -+ | Saved CR [low word for m64] 4/8 | | -+ |--------------------------------------------| | stack pointer here -+ | Current backchain pointer 4/8 |-/ during -+ |--------------------------------------------| <<< call. -+ -+*/ - - .file "darwin_closure.S" --.text -- .align LOG2_GPR_BYTES --.globl _ffi_closure_ASM - --.text -+ .machine machine_choice -+ -+ .text -+ .globl _ffi_closure_ASM - .align LOG2_GPR_BYTES - _ffi_closure_ASM: - LFB1: -- mflr r0 /* extract return address */ -- stw r0,8(r1) /* save the return address */ -+Lstartcode: -+ mflr r0 /* extract return address */ -+ sg r0,SAVED_LR_OFFSET(r1) /* save the return address */ - LCFI0: -- /* 24 Bytes (Linkage Area) -- 32 Bytes (outgoing parameter area, always reserved) -- 104 Bytes (13*8 from FPR) -- 16 Bytes (result) -- 176 Bytes */ -- -- stwu r1,-176(r1) /* skip over caller save area -- keep stack aligned to 16. */ -+ sgu r1,-SAVE_SIZE(r1) /* skip over caller save area -+ keep stack aligned to 16. */ - LCFI1: - /* We want to build up an area for the parameters passed - in registers. (both floating point and integer) */ - -- /* We store gpr 3 to gpr 10 (aligned to 4) -- in the parents outgoing area. */ -- stw r3,200(r1) -- stw r4,204(r1) -- stw r5,208(r1) -- stw r6,212(r1) -- stw r7,216(r1) -- stw r8,220(r1) -- stw r9,224(r1) -- stw r10,228(r1) -+ /* Put gpr 3 to gpr 10 in the parents outgoing area... -+ ... the remainder of any params that overflowed the regs will -+ follow here. */ -+ sg r3, (PARENT_PARM_BASE )(r1) -+ sg r4, (PARENT_PARM_BASE + GPR_BYTES )(r1) -+ sg r5, (PARENT_PARM_BASE + GPR_BYTES * 2)(r1) -+ sg r6, (PARENT_PARM_BASE + GPR_BYTES * 3)(r1) -+ sg r7, (PARENT_PARM_BASE + GPR_BYTES * 4)(r1) -+ sg r8, (PARENT_PARM_BASE + GPR_BYTES * 5)(r1) -+ sg r9, (PARENT_PARM_BASE + GPR_BYTES * 6)(r1) -+ sg r10,(PARENT_PARM_BASE + GPR_BYTES * 7)(r1) - -- /* We save fpr 1 to fpr 13. (aligned to 8) */ -- stfd f1,56(r1) -- stfd f2,64(r1) -- stfd f3,72(r1) -- stfd f4,80(r1) -- stfd f5,88(r1) -- stfd f6,96(r1) -- stfd f7,104(r1) -- stfd f8,112(r1) -- stfd f9,120(r1) -- stfd f10,128(r1) -- stfd f11,136(r1) -- stfd f12,144(r1) -- stfd f13,152(r1) -+ /* We save fpr 1 to fpr 14 in our own save frame. */ -+ stfd f1, (FP_SAVE_BASE )(r1) -+ stfd f2, (FP_SAVE_BASE + FPR_SIZE )(r1) -+ stfd f3, (FP_SAVE_BASE + FPR_SIZE * 2 )(r1) -+ stfd f4, (FP_SAVE_BASE + FPR_SIZE * 3 )(r1) -+ stfd f5, (FP_SAVE_BASE + FPR_SIZE * 4 )(r1) -+ stfd f6, (FP_SAVE_BASE + FPR_SIZE * 5 )(r1) -+ stfd f7, (FP_SAVE_BASE + FPR_SIZE * 6 )(r1) -+ stfd f8, (FP_SAVE_BASE + FPR_SIZE * 7 )(r1) -+ stfd f9, (FP_SAVE_BASE + FPR_SIZE * 8 )(r1) -+ stfd f10,(FP_SAVE_BASE + FPR_SIZE * 9 )(r1) -+ stfd f11,(FP_SAVE_BASE + FPR_SIZE * 10)(r1) -+ stfd f12,(FP_SAVE_BASE + FPR_SIZE * 11)(r1) -+ stfd f13,(FP_SAVE_BASE + FPR_SIZE * 12)(r1) - - /* Set up registers for the routine that actually does the work - get the context pointer from the trampoline. */ -- mr r3,r11 -+ mr r3,r11 - - /* Now load up the pointer to the result storage. */ -- addi r4,r1,160 -+ addi r4,r1,(SAVE_SIZE-RESULT_BYTES) - - /* Now load up the pointer to the saved gpr registers. */ -- addi r5,r1,200 -+ addi r5,r1,PARENT_PARM_BASE - - /* Now load up the pointer to the saved fpr registers. */ -- addi r6,r1,56 -+ addi r6,r1,FP_SAVE_BASE - - /* Make the call. */ -- bl Lffi_closure_helper_DARWIN$stub -+ bl BLCLS_HELP - -- /* Now r3 contains the return type -- so use it to look up in a table -+ /* r3 contains the rtype pointer... save it since we will need -+ it later. */ -+ sg r3,LINKAGE_SIZE(r1) ; ffi_type * result_type -+ lg r0,0(r3) ; size => r0 -+ lhz r3,FFI_TYPE_TYPE(r3) ; type => r3 -+ -+ /* The helper will have intercepted structure returns and inserted -+ the caller`s destination address for structs returned by ref. */ -+ -+ /* r3 contains the return type so use it to look up in a table - so we know how to deal with each type. */ - -- /* Look up the proper starting point in table -- by using return type as offset. */ -- addi r5,r1,160 /* Get pointer to results area. */ -- bl Lget_ret_type0_addr /* Get pointer to Lret_type0 into LR. */ -- mflr r4 /* Move to r4. */ -- slwi r3,r3,4 /* Now multiply return type by 16. */ -- add r3,r3,r4 /* Add contents of table to table address. */ -- mtctr r3 -- bctr /* Jump to it. */ -+ addi r5,r1,(SAVE_SIZE-RESULT_BYTES) /* Otherwise, our return is here. */ -+ bl Lget_ret_type0_addr /* Get pointer to Lret_type0 into LR. */ -+ mflr r4 /* Move to r4. */ -+ slwi r3,r3,4 /* Now multiply return type by 16. */ -+ add r3,r3,r4 /* Add contents of table to table address. */ -+ mtctr r3 -+ bctr /* Jump to it. */ - LFE1: - /* Each of the ret_typeX code fragments has to be exactly 16 bytes long - (4 instructions). For cache effectiveness we align to a 16 byte boundary - first. */ - - .align 4 - - nop -@@ -135,17 +222,17 @@ Lget_ret_type0_addr: - Lret_type0: - b Lfinish - nop - nop - nop - - /* case FFI_TYPE_INT */ - Lret_type1: -- lwz r3,0(r5) -+ lg r3,0(r5) - b Lfinish - nop - nop - - /* case FFI_TYPE_FLOAT */ - Lret_type2: - lfs f1,0(r5) - b Lfinish -@@ -163,155 +250,322 @@ Lret_type3: - Lret_type4: - lfd f1,0(r5) - lfd f2,8(r5) - b Lfinish - nop - - /* case FFI_TYPE_UINT8 */ - Lret_type5: -+#if defined(__ppc64__) -+ lbz r3,7(r5) -+#else - lbz r3,3(r5) -+#endif - b Lfinish - nop - nop - - /* case FFI_TYPE_SINT8 */ - Lret_type6: -+#if defined(__ppc64__) -+ lbz r3,7(r5) -+#else - lbz r3,3(r5) -+#endif - extsb r3,r3 - b Lfinish - nop - - /* case FFI_TYPE_UINT16 */ - Lret_type7: -+#if defined(__ppc64__) -+ lhz r3,6(r5) -+#else - lhz r3,2(r5) -+#endif - b Lfinish - nop - nop - - /* case FFI_TYPE_SINT16 */ - Lret_type8: -+#if defined(__ppc64__) -+ lha r3,6(r5) -+#else - lha r3,2(r5) -+#endif - b Lfinish - nop - nop - - /* case FFI_TYPE_UINT32 */ - Lret_type9: -+#if defined(__ppc64__) -+ lwz r3,4(r5) -+#else - lwz r3,0(r5) -+#endif - b Lfinish - nop - nop - - /* case FFI_TYPE_SINT32 */ - Lret_type10: -+#if defined(__ppc64__) -+ lwz r3,4(r5) -+#else - lwz r3,0(r5) -+#endif - b Lfinish - nop - nop - - /* case FFI_TYPE_UINT64 */ - Lret_type11: -+#if defined(__ppc64__) -+ lg r3,0(r5) -+ b Lfinish -+ nop -+#else - lwz r3,0(r5) - lwz r4,4(r5) - b Lfinish -+#endif - nop - - /* case FFI_TYPE_SINT64 */ - Lret_type12: -+#if defined(__ppc64__) -+ lg r3,0(r5) -+ b Lfinish -+ nop -+#else - lwz r3,0(r5) - lwz r4,4(r5) - b Lfinish -+#endif - nop - - /* case FFI_TYPE_STRUCT */ - Lret_type13: -+#if defined(__ppc64__) -+ lg r3,0(r5) ; we need at least this... -+ cmpi 0,r0,4 -+ bgt Lstructend ; not a special small case -+ b Lsmallstruct ; see if we need more. -+#else -+ cmpi 0,r0,4 -+ bgt Lfinish ; not by value -+ lg r3,0(r5) -+ b Lfinish -+#endif -+/* case FFI_TYPE_POINTER */ -+Lret_type14: -+ lg r3,0(r5) - b Lfinish - nop - nop -- nop - --/* case FFI_TYPE_POINTER */ --Lret_type14: -- lwz r3,0(r5) -- b Lfinish -- nop -- nop -+#if defined(__ppc64__) -+Lsmallstruct: -+ beq Lfour ; continuation of Lret13. -+ cmpi 0,r0,3 -+ beq Lfinish ; don`t adjust this - can`t be any floats here... -+ srdi r3,r3,48 -+ cmpi 0,r0,2 -+ beq Lfinish ; .. or here .. -+ srdi r3,r3,8 -+ b Lfinish ; .. or here. -+ -+Lfour: -+ lg r6,LINKAGE_SIZE(r1) ; get the result type -+ lg r6,FFI_TYPE_ELEM(r6) ; elements array pointer -+ lg r6,0(r6) ; first element -+ lhz r0,FFI_TYPE_TYPE(r6) ; OK go the type -+ cmpi 0,r0,2 ; FFI_TYPE_FLOAT -+ bne Lfourint -+ lfs f1,0(r5) ; just one float in the struct. -+ b Lfinish -+ -+Lfourint: -+ srdi r3,r3,32 ; four bytes. -+ b Lfinish -+ -+Lstructend: -+ lg r3,LINKAGE_SIZE(r1) ; get the result type -+ bl STRUCT_RETVALUE_P -+ cmpi 0,r3,0 -+ beq Lfinish ; nope. -+ /* Recover a pointer to the results. */ -+ addi r11,r1,(SAVE_SIZE-RESULT_BYTES) -+ lg r3,0(r11) ; we need at least this... -+ lg r4,8(r11) -+ cmpi 0,r0,16 -+ beq Lfinish ; special case 16 bytes we don't consider floats. -+ -+ /* OK, frustratingly, the process of saving the struct to mem might have -+ messed with the FPRs, so we have to re-load them :(. -+ We`ll use our FPRs space again - calling: -+ void darwin64_pass_struct_floats (ffi_type *s, char *src, -+ unsigned *nfpr, double **fprs) -+ We`ll temporarily pinch the first two slots of the param area for local -+ vars used by the routine. */ -+ xor r6,r6,r6 -+ addi r5,r1,PARENT_PARM_BASE ; some space -+ sg r6,0(r5) ; *nfpr zeroed. -+ addi r6,r5,8 ; **fprs -+ addi r3,r1,FP_SAVE_BASE ; pointer to FPRs space -+ sg r3,0(r6) -+ mr r4,r11 ; the struct is here... -+ lg r3,LINKAGE_SIZE(r1) ; ffi_type * result_type. -+ bl PASS_STR_FLOATS ; get struct floats into FPR save space. -+ /* See if we used any floats */ -+ lwz r0,(SAVE_SIZE-RESULT_BYTES)(r1) -+ cmpi 0,r0,0 -+ beq Lstructints ; nope. -+ /* OK load `em up... */ -+ lfd f1, (FP_SAVE_BASE )(r1) -+ lfd f2, (FP_SAVE_BASE + FPR_SIZE )(r1) -+ lfd f3, (FP_SAVE_BASE + FPR_SIZE * 2 )(r1) -+ lfd f4, (FP_SAVE_BASE + FPR_SIZE * 3 )(r1) -+ lfd f5, (FP_SAVE_BASE + FPR_SIZE * 4 )(r1) -+ lfd f6, (FP_SAVE_BASE + FPR_SIZE * 5 )(r1) -+ lfd f7, (FP_SAVE_BASE + FPR_SIZE * 6 )(r1) -+ lfd f8, (FP_SAVE_BASE + FPR_SIZE * 7 )(r1) -+ lfd f9, (FP_SAVE_BASE + FPR_SIZE * 8 )(r1) -+ lfd f10,(FP_SAVE_BASE + FPR_SIZE * 9 )(r1) -+ lfd f11,(FP_SAVE_BASE + FPR_SIZE * 10)(r1) -+ lfd f12,(FP_SAVE_BASE + FPR_SIZE * 11)(r1) -+ lfd f13,(FP_SAVE_BASE + FPR_SIZE * 12)(r1) -+ -+ /* point back at our saved struct. */ -+Lstructints: -+ addi r11,r1,(SAVE_SIZE-RESULT_BYTES) -+ lg r3,0(r11) ; we end up picking the -+ lg r4,8(r11) ; first two again. -+ lg r5,16(r11) -+ lg r6,24(r11) -+ lg r7,32(r11) -+ lg r8,40(r11) -+ lg r9,48(r11) -+ lg r10,56(r11) -+#endif - - /* case done */ - Lfinish: -- addi r1,r1,176 /* Restore stack pointer. */ -- lwz r0,8(r1) /* Get return address. */ -- mtlr r0 /* Reset link register. */ -+ addi r1,r1,SAVE_SIZE /* Restore stack pointer. */ -+ lg r0,SAVED_LR_OFFSET(r1) /* Get return address. */ -+ mtlr r0 /* Reset link register. */ - blr -- -+Lendcode: -+ .align 1 -+ - /* END(ffi_closure_ASM) */ - --.data --.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support -+/* EH frame stuff. */ -+#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78) -+/* 176, 400 */ -+#define EH_FRAME_OFFSETA MODE_CHOICE(176,0x90) -+#define EH_FRAME_OFFSETB MODE_CHOICE(1,3) -+ -+ .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support - EH_frame1: - .set L$set$0,LECIE1-LSCIE1 - .long L$set$0 ; Length of Common Information Entry - LSCIE1: - .long 0x0 ; CIE Identifier Tag - .byte 0x1 ; CIE Version - .ascii "zR\0" ; CIE Augmentation - .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor -- .byte 0x7c ; sleb128 -4; CIE Data Alignment Factor -+ .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor - .byte 0x41 ; CIE RA Column - .byte 0x1 ; uleb128 0x1; Augmentation size -- .byte 0x90 ; FDE Encoding (indirect pcrel) -+ .byte 0x10 ; FDE Encoding (pcrel) - .byte 0xc ; DW_CFA_def_cfa - .byte 0x1 ; uleb128 0x1 - .byte 0x0 ; uleb128 0x0 - .align LOG2_GPR_BYTES - LECIE1: --.globl _ffi_closure_ASM.eh -+ .globl _ffi_closure_ASM.eh - _ffi_closure_ASM.eh: - LSFDE1: - .set L$set$1,LEFDE1-LASFDE1 - .long L$set$1 ; FDE Length - - LASFDE1: - .long LASFDE1-EH_frame1 ; FDE CIE offset -- .g_long LLFB1$non_lazy_ptr-. ; FDE initial location -- .set L$set$3,LFE1-LFB1 -+ .g_long Lstartcode-. ; FDE initial location -+ .set L$set$3,LFE1-Lstartcode - .g_long L$set$3 ; FDE address range - .byte 0x0 ; uleb128 0x0; Augmentation size - .byte 0x4 ; DW_CFA_advance_loc4 - .set L$set$3,LCFI1-LCFI0 - .long L$set$3 - .byte 0xe ; DW_CFA_def_cfa_offset -- .byte 176,1 ; uleb128 176 -+ .byte EH_FRAME_OFFSETA,EH_FRAME_OFFSETB ; uleb128 176,1/190,3 - .byte 0x4 ; DW_CFA_advance_loc4 -- .set L$set$4,LCFI0-LFB1 -+ .set L$set$4,LCFI0-Lstartcode - .long L$set$4 - .byte 0x11 ; DW_CFA_offset_extended_sf - .byte 0x41 ; uleb128 0x41 - .byte 0x7e ; sleb128 -2 - .align LOG2_GPR_BYTES - LEFDE1: --.data -- .align LOG2_GPR_BYTES --LDFCM0: --.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 -- .align LOG2_GPR_BYTES --Lffi_closure_helper_DARWIN$stub: --#if 1 -+ .align 1 -+ -+#ifdef WANT_STUB -+ .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 -+ .align 5 -+L_ffi_closure_helper_DARWIN$stub: - .indirect_symbol _ffi_closure_helper_DARWIN -- mflr r0 -- bcl 20,31,LO$ffi_closure_helper_DARWIN --LO$ffi_closure_helper_DARWIN: -- mflr r11 -- addis r11,r11,ha16(L_ffi_closure_helper_DARWIN$lazy_ptr - LO$ffi_closure_helper_DARWIN) -- mtlr r0 -- lgu r12,lo16(L_ffi_closure_helper_DARWIN$lazy_ptr - LO$ffi_closure_helper_DARWIN)(r11) -- mtctr r12 -+ mflr r0 -+ bcl 20,31,"L1$spb" -+"L1$spb": -+ mflr r11 -+ addis r11,r11,ha16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb") -+ mtlr r0 -+ lwzu r12,lo16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb")(r11) -+ mtctr r12 - bctr --.lazy_symbol_pointer -+ .lazy_symbol_pointer - L_ffi_closure_helper_DARWIN$lazy_ptr: - .indirect_symbol _ffi_closure_helper_DARWIN -- .g_long dyld_stub_binding_helper -+ .g_long dyld_stub_binding_helper -+ -+#if defined(__ppc64__) -+ .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 -+ .align 5 -+L_darwin64_struct_ret_by_value_p$stub: -+ .indirect_symbol _darwin64_struct_ret_by_value_p -+ mflr r0 -+ bcl 20,31,"L2$spb" -+"L2$spb": -+ mflr r11 -+ addis r11,r11,ha16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb") -+ mtlr r0 -+ lwzu r12,lo16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb")(r11) -+ mtctr r12 -+ bctr -+ .lazy_symbol_pointer -+L_darwin64_struct_ret_by_value_p$lazy_ptr: -+ .indirect_symbol _darwin64_struct_ret_by_value_p -+ .g_long dyld_stub_binding_helper -+ -+ .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 -+ .align 5 -+L_darwin64_pass_struct_floats$stub: -+ .indirect_symbol _darwin64_pass_struct_floats -+ mflr r0 -+ bcl 20,31,"L3$spb" -+"L3$spb": -+ mflr r11 -+ addis r11,r11,ha16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb") -+ mtlr r0 -+ lwzu r12,lo16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb")(r11) -+ mtctr r12 -+ bctr -+ .lazy_symbol_pointer -+L_darwin64_pass_struct_floats$lazy_ptr: -+ .indirect_symbol _darwin64_pass_struct_floats -+ .g_long dyld_stub_binding_helper -+# endif - #endif --.data -- .align LOG2_GPR_BYTES --LLFB1$non_lazy_ptr: -- .g_long LFB1 -diff --git a/js/src/ctypes/libffi/src/powerpc/ffi.c b/js/src/ctypes/libffi/src/powerpc/ffi.c ---- a/js/src/ctypes/libffi/src/powerpc/ffi.c -+++ b/js/src/ctypes/libffi/src/powerpc/ffi.c -@@ -1,10 +1,11 @@ - /* ----------------------------------------------------------------------- -- ffi.c - Copyright (C) 2011 Anthony Green -+ ffi.c - Copyright (C) 2013 IBM -+ Copyright (C) 2011 Anthony Green - Copyright (C) 2011 Kyle Moffett - Copyright (C) 2008 Red Hat, Inc - Copyright (C) 2007, 2008 Free Software Foundation, Inc - Copyright (c) 1998 Geoffrey Keating - - PowerPC Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining -@@ -22,1784 +23,119 @@ - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------------------------------------- */ - --#include --#include -+#include "ffi.h" -+#include "ffi_common.h" -+#include "ffi_powerpc.h" - --#include --#include -- -- --extern void ffi_closure_SYSV (void); --extern void FFI_HIDDEN ffi_closure_LINUX64 (void); -- --enum { -- /* The assembly depends on these exact flags. */ -- FLAG_RETURNS_SMST = 1 << (31-31), /* Used for FFI_SYSV small structs. */ -- FLAG_RETURNS_NOTHING = 1 << (31-30), /* These go in cr7 */ --#ifndef __NO_FPRS__ -- FLAG_RETURNS_FP = 1 << (31-29), --#endif -- FLAG_RETURNS_64BITS = 1 << (31-28), -- -- FLAG_RETURNS_128BITS = 1 << (31-27), /* cr6 */ -- -- FLAG_ARG_NEEDS_COPY = 1 << (31- 7), -- FLAG_ARG_NEEDS_PSAVE = FLAG_ARG_NEEDS_COPY, /* Used by ELFv2 */ --#ifndef __NO_FPRS__ -- FLAG_FP_ARGUMENTS = 1 << (31- 6), /* cr1.eq; specified by ABI */ --#endif -- FLAG_4_GPR_ARGUMENTS = 1 << (31- 5), -- FLAG_RETVAL_REFERENCE = 1 << (31- 4) --}; -- --/* About the SYSV ABI. */ --#define ASM_NEEDS_REGISTERS 4 --#define NUM_GPR_ARG_REGISTERS 8 --#ifndef __NO_FPRS__ --# define NUM_FPR_ARG_REGISTERS 8 --#endif -- --/* ffi_prep_args_SYSV is called by the assembly routine once stack space -- has been allocated for the function's arguments. -- -- The stack layout we want looks like this: -- -- | Return address from ffi_call_SYSV 4bytes | higher addresses -- |--------------------------------------------| -- | Previous backchain pointer 4 | stack pointer here -- |--------------------------------------------|<+ <<< on entry to -- | Saved r28-r31 4*4 | | ffi_call_SYSV -- |--------------------------------------------| | -- | GPR registers r3-r10 8*4 | | ffi_call_SYSV -- |--------------------------------------------| | -- | FPR registers f1-f8 (optional) 8*8 | | -- |--------------------------------------------| | stack | -- | Space for copied structures | | grows | -- |--------------------------------------------| | down V -- | Parameters that didn't fit in registers | | -- |--------------------------------------------| | lower addresses -- | Space for callee's LR 4 | | -- |--------------------------------------------| | stack pointer here -- | Current backchain pointer 4 |-/ during -- |--------------------------------------------| <<< ffi_call_SYSV -- --*/ -- --void --ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack) -+#if HAVE_LONG_DOUBLE_VARIANT -+/* Adjust ffi_type_longdouble. */ -+void FFI_HIDDEN -+ffi_prep_types (ffi_abi abi) - { -- const unsigned bytes = ecif->cif->bytes; -- const unsigned flags = ecif->cif->flags; -- -- typedef union { -- char *c; -- unsigned *u; -- long long *ll; -- float *f; -- double *d; -- } valp; -- -- /* 'stacktop' points at the previous backchain pointer. */ -- valp stacktop; -- -- /* 'gpr_base' points at the space for gpr3, and grows upwards as -- we use GPR registers. */ -- valp gpr_base; -- int intarg_count; -- --#ifndef __NO_FPRS__ -- /* 'fpr_base' points at the space for fpr1, and grows upwards as -- we use FPR registers. */ -- valp fpr_base; -- int fparg_count; --#endif -- -- /* 'copy_space' grows down as we put structures in it. It should -- stay 16-byte aligned. */ -- valp copy_space; -- -- /* 'next_arg' grows up as we put parameters in it. */ -- valp next_arg; -- -- int i; -- ffi_type **ptr; --#ifndef __NO_FPRS__ -- double double_tmp; --#endif -- union { -- void **v; -- char **c; -- signed char **sc; -- unsigned char **uc; -- signed short **ss; -- unsigned short **us; -- unsigned int **ui; -- long long **ll; -- float **f; -- double **d; -- } p_argv; -- size_t struct_copy_size; -- unsigned gprvalue; -- -- stacktop.c = (char *) stack + bytes; -- gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS; -- intarg_count = 0; --#ifndef __NO_FPRS__ -- fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS; -- fparg_count = 0; -- copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c); --#else -- copy_space.c = gpr_base.c; --#endif -- next_arg.u = stack + 2; -- -- /* Check that everything starts aligned properly. */ -- FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0); -- FFI_ASSERT (((unsigned long) copy_space.c & 0xF) == 0); -- FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0); -- FFI_ASSERT ((bytes & 0xF) == 0); -- FFI_ASSERT (copy_space.c >= next_arg.c); -- -- /* Deal with return values that are actually pass-by-reference. */ -- if (flags & FLAG_RETVAL_REFERENCE) -- { -- *gpr_base.u++ = (unsigned long) (char *) ecif->rvalue; -- intarg_count++; -- } -- -- /* Now for the arguments. */ -- p_argv.v = ecif->avalue; -- for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs; -- i > 0; -- i--, ptr++, p_argv.v++) -- { -- unsigned short typenum = (*ptr)->type; -- -- /* We may need to handle some values depending on ABI */ -- if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT) { -- if (typenum == FFI_TYPE_FLOAT) -- typenum = FFI_TYPE_UINT32; -- if (typenum == FFI_TYPE_DOUBLE) -- typenum = FFI_TYPE_UINT64; -- if (typenum == FFI_TYPE_LONGDOUBLE) -- typenum = FFI_TYPE_UINT128; -- } else if (ecif->cif->abi != FFI_LINUX) { --#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- if (typenum == FFI_TYPE_LONGDOUBLE) -- typenum = FFI_TYPE_STRUCT; --#endif -- } -- -- /* Now test the translated value */ -- switch (typenum) { --#ifndef __NO_FPRS__ -- case FFI_TYPE_FLOAT: -- /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32. */ -- double_tmp = **p_argv.f; -- if (fparg_count >= NUM_FPR_ARG_REGISTERS) -- { -- *next_arg.f = (float) double_tmp; -- next_arg.u += 1; -- intarg_count++; -- } -- else -- *fpr_base.d++ = double_tmp; -- fparg_count++; -- FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); -- break; -- -- case FFI_TYPE_DOUBLE: -- /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64. */ -- double_tmp = **p_argv.d; -- -- if (fparg_count >= NUM_FPR_ARG_REGISTERS) -- { -- if (intarg_count >= NUM_GPR_ARG_REGISTERS -- && intarg_count % 2 != 0) -- { -- intarg_count++; -- next_arg.u++; -- } -- *next_arg.d = double_tmp; -- next_arg.u += 2; -- } -- else -- *fpr_base.d++ = double_tmp; -- fparg_count++; -- FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); -- break; -- --#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- case FFI_TYPE_LONGDOUBLE: -- double_tmp = (*p_argv.d)[0]; -- -- if (fparg_count >= NUM_FPR_ARG_REGISTERS - 1) -- { -- if (intarg_count >= NUM_GPR_ARG_REGISTERS -- && intarg_count % 2 != 0) -- { -- intarg_count++; -- next_arg.u++; -- } -- *next_arg.d = double_tmp; -- next_arg.u += 2; -- double_tmp = (*p_argv.d)[1]; -- *next_arg.d = double_tmp; -- next_arg.u += 2; -- } -- else -- { -- *fpr_base.d++ = double_tmp; -- double_tmp = (*p_argv.d)[1]; -- *fpr_base.d++ = double_tmp; -- } -- -- fparg_count += 2; -- FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); -- break; --#endif --#endif /* have FPRs */ -- -- /* -- * The soft float ABI for long doubles works like this, a long double -- * is passed in four consecutive GPRs if available. A maximum of 2 -- * long doubles can be passed in gprs. If we do not have 4 GPRs -- * left, the long double is passed on the stack, 4-byte aligned. -- */ -- case FFI_TYPE_UINT128: { -- unsigned int int_tmp = (*p_argv.ui)[0]; -- unsigned int ii; -- if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3) { -- if (intarg_count < NUM_GPR_ARG_REGISTERS) -- intarg_count += NUM_GPR_ARG_REGISTERS - intarg_count; -- *(next_arg.u++) = int_tmp; -- for (ii = 1; ii < 4; ii++) { -- int_tmp = (*p_argv.ui)[ii]; -- *(next_arg.u++) = int_tmp; -- } -- } else { -- *(gpr_base.u++) = int_tmp; -- for (ii = 1; ii < 4; ii++) { -- int_tmp = (*p_argv.ui)[ii]; -- *(gpr_base.u++) = int_tmp; -- } -- } -- intarg_count += 4; -- break; -- } -- -- case FFI_TYPE_UINT64: -- case FFI_TYPE_SINT64: -- if (intarg_count == NUM_GPR_ARG_REGISTERS-1) -- intarg_count++; -- if (intarg_count >= NUM_GPR_ARG_REGISTERS) -- { -- if (intarg_count % 2 != 0) -- { -- intarg_count++; -- next_arg.u++; -- } -- *next_arg.ll = **p_argv.ll; -- next_arg.u += 2; -- } -- else -- { -- /* whoops: abi states only certain register pairs -- * can be used for passing long long int -- * specifically (r3,r4), (r5,r6), (r7,r8), -- * (r9,r10) and if next arg is long long but -- * not correct starting register of pair then skip -- * until the proper starting register -- */ -- if (intarg_count % 2 != 0) -- { -- intarg_count ++; -- gpr_base.u++; -- } -- *gpr_base.ll++ = **p_argv.ll; -- } -- intarg_count += 2; -- break; -- -- case FFI_TYPE_STRUCT: -- struct_copy_size = ((*ptr)->size + 15) & ~0xF; -- copy_space.c -= struct_copy_size; -- memcpy (copy_space.c, *p_argv.c, (*ptr)->size); -- -- gprvalue = (unsigned long) copy_space.c; -- -- FFI_ASSERT (copy_space.c > next_arg.c); -- FFI_ASSERT (flags & FLAG_ARG_NEEDS_COPY); -- goto putgpr; -- -- case FFI_TYPE_UINT8: -- gprvalue = **p_argv.uc; -- goto putgpr; -- case FFI_TYPE_SINT8: -- gprvalue = **p_argv.sc; -- goto putgpr; -- case FFI_TYPE_UINT16: -- gprvalue = **p_argv.us; -- goto putgpr; -- case FFI_TYPE_SINT16: -- gprvalue = **p_argv.ss; -- goto putgpr; -- -- case FFI_TYPE_INT: -- case FFI_TYPE_UINT32: -- case FFI_TYPE_SINT32: -- case FFI_TYPE_POINTER: -- -- gprvalue = **p_argv.ui; -- -- putgpr: -- if (intarg_count >= NUM_GPR_ARG_REGISTERS) -- *next_arg.u++ = gprvalue; -- else -- *gpr_base.u++ = gprvalue; -- intarg_count++; -- break; -- } -- } -- -- /* Check that we didn't overrun the stack... */ -- FFI_ASSERT (copy_space.c >= next_arg.c); -- FFI_ASSERT (gpr_base.u <= stacktop.u - ASM_NEEDS_REGISTERS); -- /* The assert below is testing that the number of integer arguments agrees -- with the number found in ffi_prep_cif_machdep(). However, intarg_count -- is incremented whenever we place an FP arg on the stack, so account for -- that before our assert test. */ --#ifndef __NO_FPRS__ -- if (fparg_count > NUM_FPR_ARG_REGISTERS) -- intarg_count -= fparg_count - NUM_FPR_ARG_REGISTERS; -- FFI_ASSERT (fpr_base.u -- <= stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS); --#endif -- FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4); --} -- --/* About the LINUX64 ABI. */ --enum { -- NUM_GPR_ARG_REGISTERS64 = 8, -- NUM_FPR_ARG_REGISTERS64 = 13 --}; --enum { ASM_NEEDS_REGISTERS64 = 4 }; -- --#if _CALL_ELF == 2 --static unsigned int --discover_homogeneous_aggregate (const ffi_type *t, unsigned int *elnum) --{ -- switch (t->type) -- { -- case FFI_TYPE_FLOAT: -- case FFI_TYPE_DOUBLE: -- *elnum = 1; -- return (int) t->type; -- -- case FFI_TYPE_STRUCT:; -- { -- unsigned int base_elt = 0, total_elnum = 0; -- ffi_type **el = t->elements; -- while (*el) -- { -- unsigned int el_elt, el_elnum = 0; -- el_elt = discover_homogeneous_aggregate (*el, &el_elnum); -- if (el_elt == 0 -- || (base_elt && base_elt != el_elt)) -- return 0; -- base_elt = el_elt; -- total_elnum += el_elnum; -- if (total_elnum > 8) -- return 0; -- el++; -- } -- *elnum = total_elnum; -- return base_elt; -- } -- -- default: -- return 0; -- } -+# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+# ifdef POWERPC64 -+ ffi_prep_types_linux64 (abi); -+# else -+ ffi_prep_types_sysv (abi); -+# endif -+# endif - } - #endif - -- --/* ffi_prep_args64 is called by the assembly routine once stack space -- has been allocated for the function's arguments. -- -- The stack layout we want looks like this: -- -- | Ret addr from ffi_call_LINUX64 8bytes | higher addresses -- |--------------------------------------------| -- | CR save area 8bytes | -- |--------------------------------------------| -- | Previous backchain pointer 8 | stack pointer here -- |--------------------------------------------|<+ <<< on entry to -- | Saved r28-r31 4*8 | | ffi_call_LINUX64 -- |--------------------------------------------| | -- | GPR registers r3-r10 8*8 | | -- |--------------------------------------------| | -- | FPR registers f1-f13 (optional) 13*8 | | -- |--------------------------------------------| | -- | Parameter save area | | -- |--------------------------------------------| | -- | TOC save area 8 | | -- |--------------------------------------------| | stack | -- | Linker doubleword 8 | | grows | -- |--------------------------------------------| | down V -- | Compiler doubleword 8 | | -- |--------------------------------------------| | lower addresses -- | Space for callee's LR 8 | | -- |--------------------------------------------| | -- | CR save area 8 | | -- |--------------------------------------------| | stack pointer here -- | Current backchain pointer 8 |-/ during -- |--------------------------------------------| <<< ffi_call_LINUX64 -- --*/ -- --void FFI_HIDDEN --ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) -+/* Perform machine dependent cif processing */ -+ffi_status FFI_HIDDEN -+ffi_prep_cif_machdep (ffi_cif *cif) - { -- const unsigned long bytes = ecif->cif->bytes; -- const unsigned long flags = ecif->cif->flags; -- -- typedef union { -- char *c; -- unsigned long *ul; -- float *f; -- double *d; -- size_t p; -- } valp; -- -- /* 'stacktop' points at the previous backchain pointer. */ -- valp stacktop; -- -- /* 'next_arg' points at the space for gpr3, and grows upwards as -- we use GPR registers, then continues at rest. */ -- valp gpr_base; -- valp gpr_end; -- valp rest; -- valp next_arg; -- -- /* 'fpr_base' points at the space for fpr3, and grows upwards as -- we use FPR registers. */ -- valp fpr_base; -- unsigned int fparg_count; -- -- unsigned int i, words, nargs, nfixedargs; -- ffi_type **ptr; -- double double_tmp; -- union { -- void **v; -- char **c; -- signed char **sc; -- unsigned char **uc; -- signed short **ss; -- unsigned short **us; -- signed int **si; -- unsigned int **ui; -- unsigned long **ul; -- float **f; -- double **d; -- } p_argv; -- unsigned long gprvalue; --#ifdef __STRUCT_PARM_ALIGN__ -- unsigned long align; -+#ifdef POWERPC64 -+ return ffi_prep_cif_linux64 (cif); -+#else -+ return ffi_prep_cif_sysv (cif); - #endif -- -- stacktop.c = (char *) stack + bytes; -- gpr_base.ul = stacktop.ul - ASM_NEEDS_REGISTERS64 - NUM_GPR_ARG_REGISTERS64; -- gpr_end.ul = gpr_base.ul + NUM_GPR_ARG_REGISTERS64; --#if _CALL_ELF == 2 -- rest.ul = stack + 4 + NUM_GPR_ARG_REGISTERS64; --#else -- rest.ul = stack + 6 + NUM_GPR_ARG_REGISTERS64; --#endif -- fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS64; -- fparg_count = 0; -- next_arg.ul = gpr_base.ul; -- -- /* Check that everything starts aligned properly. */ -- FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0); -- FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0); -- FFI_ASSERT ((bytes & 0xF) == 0); -- -- /* Deal with return values that are actually pass-by-reference. */ -- if (flags & FLAG_RETVAL_REFERENCE) -- *next_arg.ul++ = (unsigned long) (char *) ecif->rvalue; -- -- /* Now for the arguments. */ -- p_argv.v = ecif->avalue; -- nargs = ecif->cif->nargs; -- nfixedargs = ecif->cif->nfixedargs; -- for (ptr = ecif->cif->arg_types, i = 0; -- i < nargs; -- i++, ptr++, p_argv.v++) -- { -- unsigned int elt, elnum; -- -- switch ((*ptr)->type) -- { -- case FFI_TYPE_FLOAT: -- double_tmp = **p_argv.f; -- if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) -- *fpr_base.d++ = double_tmp; -- else -- *next_arg.f = (float) double_tmp; -- if (++next_arg.ul == gpr_end.ul) -- next_arg.ul = rest.ul; -- fparg_count++; -- FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); -- break; -- -- case FFI_TYPE_DOUBLE: -- double_tmp = **p_argv.d; -- if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) -- *fpr_base.d++ = double_tmp; -- else -- *next_arg.d = double_tmp; -- if (++next_arg.ul == gpr_end.ul) -- next_arg.ul = rest.ul; -- fparg_count++; -- FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); -- break; -- --#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- case FFI_TYPE_LONGDOUBLE: -- double_tmp = (*p_argv.d)[0]; -- if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) -- *fpr_base.d++ = double_tmp; -- else -- *next_arg.d = double_tmp; -- if (++next_arg.ul == gpr_end.ul) -- next_arg.ul = rest.ul; -- fparg_count++; -- double_tmp = (*p_argv.d)[1]; -- if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) -- *fpr_base.d++ = double_tmp; -- else -- *next_arg.d = double_tmp; -- if (++next_arg.ul == gpr_end.ul) -- next_arg.ul = rest.ul; -- fparg_count++; -- FFI_ASSERT (__LDBL_MANT_DIG__ == 106); -- FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); -- break; --#endif -- -- case FFI_TYPE_STRUCT: --#ifdef __STRUCT_PARM_ALIGN__ -- align = (*ptr)->alignment; -- if (align > __STRUCT_PARM_ALIGN__) -- align = __STRUCT_PARM_ALIGN__; -- if (align > 1) -- next_arg.p = ALIGN (next_arg.p, align); --#endif -- elt = 0; --#if _CALL_ELF == 2 -- elt = discover_homogeneous_aggregate (*ptr, &elnum); --#endif -- if (elt) -- { -- union { -- void *v; -- float *f; -- double *d; -- } arg; -- -- arg.v = *p_argv.v; -- if (elt == FFI_TYPE_FLOAT) -- { -- do -- { -- double_tmp = *arg.f++; -- if (fparg_count < NUM_FPR_ARG_REGISTERS64 -- && i < nfixedargs) -- *fpr_base.d++ = double_tmp; -- else -- *next_arg.f = (float) double_tmp; -- if (++next_arg.f == gpr_end.f) -- next_arg.f = rest.f; -- fparg_count++; -- } -- while (--elnum != 0); -- if ((next_arg.p & 3) != 0) -- { -- if (++next_arg.f == gpr_end.f) -- next_arg.f = rest.f; -- } -- } -- else -- do -- { -- double_tmp = *arg.d++; -- if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) -- *fpr_base.d++ = double_tmp; -- else -- *next_arg.d = double_tmp; -- if (++next_arg.d == gpr_end.d) -- next_arg.d = rest.d; -- fparg_count++; -- } -- while (--elnum != 0); -- } -- else -- { -- words = ((*ptr)->size + 7) / 8; -- if (next_arg.ul >= gpr_base.ul && next_arg.ul + words > gpr_end.ul) -- { -- size_t first = gpr_end.c - next_arg.c; -- memcpy (next_arg.c, *p_argv.c, first); -- memcpy (rest.c, *p_argv.c + first, (*ptr)->size - first); -- next_arg.c = rest.c + words * 8 - first; -- } -- else -- { -- char *where = next_arg.c; -- --#ifndef __LITTLE_ENDIAN__ -- /* Structures with size less than eight bytes are passed -- left-padded. */ -- if ((*ptr)->size < 8) -- where += 8 - (*ptr)->size; --#endif -- memcpy (where, *p_argv.c, (*ptr)->size); -- next_arg.ul += words; -- if (next_arg.ul == gpr_end.ul) -- next_arg.ul = rest.ul; -- } -- } -- break; -- -- case FFI_TYPE_UINT8: -- gprvalue = **p_argv.uc; -- goto putgpr; -- case FFI_TYPE_SINT8: -- gprvalue = **p_argv.sc; -- goto putgpr; -- case FFI_TYPE_UINT16: -- gprvalue = **p_argv.us; -- goto putgpr; -- case FFI_TYPE_SINT16: -- gprvalue = **p_argv.ss; -- goto putgpr; -- case FFI_TYPE_UINT32: -- gprvalue = **p_argv.ui; -- goto putgpr; -- case FFI_TYPE_INT: -- case FFI_TYPE_SINT32: -- gprvalue = **p_argv.si; -- goto putgpr; -- -- case FFI_TYPE_UINT64: -- case FFI_TYPE_SINT64: -- case FFI_TYPE_POINTER: -- gprvalue = **p_argv.ul; -- putgpr: -- *next_arg.ul++ = gprvalue; -- if (next_arg.ul == gpr_end.ul) -- next_arg.ul = rest.ul; -- break; -- } -- } -- -- FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS -- || (next_arg.ul >= gpr_base.ul -- && next_arg.ul <= gpr_base.ul + 4)); - } - -- -- --/* Perform machine dependent cif processing */ --static ffi_status --ffi_prep_cif_machdep_core (ffi_cif *cif) --{ -- /* All this is for the SYSV and LINUX64 ABI. */ -- ffi_type **ptr; -- unsigned bytes; -- unsigned i, fparg_count = 0, intarg_count = 0; -- unsigned flags = cif->flags; -- unsigned struct_copy_size = 0; -- unsigned type = cif->rtype->type; -- unsigned size = cif->rtype->size; -- -- /* The machine-independent calculation of cif->bytes doesn't work -- for us. Redo the calculation. */ -- if (cif->abi != FFI_LINUX64) -- { -- /* Space for the frame pointer, callee's LR, and the asm's temp regs. */ -- bytes = (2 + ASM_NEEDS_REGISTERS) * sizeof (int); -- -- /* Space for the GPR registers. */ -- bytes += NUM_GPR_ARG_REGISTERS * sizeof (int); -- } -- else -- { -- /* 64-bit ABI. */ --#if _CALL_ELF == 2 -- /* Space for backchain, CR, LR, TOC and the asm's temp regs. */ -- bytes = (4 + ASM_NEEDS_REGISTERS64) * sizeof (long); -- -- /* Space for the general registers. */ -- bytes += NUM_GPR_ARG_REGISTERS64 * sizeof (long); --#else -- /* Space for backchain, CR, LR, cc/ld doubleword, TOC and the asm's temp -- regs. */ -- bytes = (6 + ASM_NEEDS_REGISTERS64) * sizeof (long); -- -- /* Space for the mandatory parm save area and general registers. */ -- bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long); --#endif -- } -- -- /* Return value handling. The rules for SYSV are as follows: -- - 32-bit (or less) integer values are returned in gpr3; -- - Structures of size <= 4 bytes also returned in gpr3; -- - 64-bit integer values and structures between 5 and 8 bytes are returned -- in gpr3 and gpr4; -- - Single/double FP values are returned in fpr1; -- - Larger structures are allocated space and a pointer is passed as -- the first argument. -- - long doubles (if not equivalent to double) are returned in -- fpr1,fpr2 for Linux and as for large structs for SysV. -- For LINUX64: -- - integer values in gpr3; -- - Structures/Unions by reference; -- - Single/double FP values in fpr1, long double in fpr1,fpr2. -- - soft-float float/doubles are treated as UINT32/UINT64 respectivley. -- - soft-float long doubles are returned in gpr3-gpr6. */ -- /* First translate for softfloat/nonlinux */ -- if (cif->abi == FFI_LINUX_SOFT_FLOAT) -- { -- if (type == FFI_TYPE_FLOAT) -- type = FFI_TYPE_UINT32; -- if (type == FFI_TYPE_DOUBLE) -- type = FFI_TYPE_UINT64; -- if (type == FFI_TYPE_LONGDOUBLE) -- type = FFI_TYPE_UINT128; -- } -- else if (cif->abi != FFI_LINUX -- && cif->abi != FFI_LINUX64) -- { --#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- if (type == FFI_TYPE_LONGDOUBLE) -- type = FFI_TYPE_STRUCT; --#endif -- } -- -- switch (type) -- { --#ifndef __NO_FPRS__ --#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- case FFI_TYPE_LONGDOUBLE: -- flags |= FLAG_RETURNS_128BITS; -- /* Fall through. */ --#endif -- case FFI_TYPE_DOUBLE: -- flags |= FLAG_RETURNS_64BITS; -- /* Fall through. */ -- case FFI_TYPE_FLOAT: -- flags |= FLAG_RETURNS_FP; -- break; --#endif -- -- case FFI_TYPE_UINT128: -- flags |= FLAG_RETURNS_128BITS; -- /* Fall through. */ -- case FFI_TYPE_UINT64: -- case FFI_TYPE_SINT64: -- flags |= FLAG_RETURNS_64BITS; -- break; -- -- case FFI_TYPE_STRUCT: -- /* -- * The final SYSV ABI says that structures smaller or equal 8 bytes -- * are returned in r3/r4. The FFI_GCC_SYSV ABI instead returns them -- * in memory. -- * -- * NOTE: The assembly code can safely assume that it just needs to -- * store both r3 and r4 into a 8-byte word-aligned buffer, as -- * we allocate a temporary buffer in ffi_call() if this flag is -- * set. -- */ -- if (cif->abi == FFI_SYSV && size <= 8) -- { -- flags |= FLAG_RETURNS_SMST; -- break; -- } --#if _CALL_ELF == 2 -- if (cif->abi == FFI_LINUX64) -- { -- unsigned int elt, elnum; -- elt = discover_homogeneous_aggregate (cif->rtype, &elnum); -- if (elt) -- { -- if (elt == FFI_TYPE_DOUBLE) -- flags |= FLAG_RETURNS_64BITS; -- flags |= FLAG_RETURNS_FP | FLAG_RETURNS_SMST; -- break; -- } -- if (size <= 16) -- { -- flags |= FLAG_RETURNS_SMST; -- break; -- } -- } --#endif -- intarg_count++; -- flags |= FLAG_RETVAL_REFERENCE; -- /* Fall through. */ -- case FFI_TYPE_VOID: -- flags |= FLAG_RETURNS_NOTHING; -- break; -- -- default: -- /* Returns 32-bit integer, or similar. Nothing to do here. */ -- break; -- } -- -- if (cif->abi != FFI_LINUX64) -- /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the -- first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest -- goes on the stack. Structures and long doubles (if not equivalent -- to double) are passed as a pointer to a copy of the structure. -- Stuff on the stack needs to keep proper alignment. */ -- for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) -- { -- unsigned short typenum = (*ptr)->type; -- -- /* We may need to handle some values depending on ABI */ -- if (cif->abi == FFI_LINUX_SOFT_FLOAT) { -- if (typenum == FFI_TYPE_FLOAT) -- typenum = FFI_TYPE_UINT32; -- if (typenum == FFI_TYPE_DOUBLE) -- typenum = FFI_TYPE_UINT64; -- if (typenum == FFI_TYPE_LONGDOUBLE) -- typenum = FFI_TYPE_UINT128; -- } else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) { --#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- if (typenum == FFI_TYPE_LONGDOUBLE) -- typenum = FFI_TYPE_STRUCT; --#endif -- } -- -- switch (typenum) { --#ifndef __NO_FPRS__ -- case FFI_TYPE_FLOAT: -- fparg_count++; -- /* floating singles are not 8-aligned on stack */ -- break; -- --#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- case FFI_TYPE_LONGDOUBLE: -- fparg_count++; -- /* Fall thru */ --#endif -- case FFI_TYPE_DOUBLE: -- fparg_count++; -- /* If this FP arg is going on the stack, it must be -- 8-byte-aligned. */ -- if (fparg_count > NUM_FPR_ARG_REGISTERS -- && intarg_count >= NUM_GPR_ARG_REGISTERS -- && intarg_count % 2 != 0) -- intarg_count++; -- break; --#endif -- case FFI_TYPE_UINT128: -- /* -- * A long double in FFI_LINUX_SOFT_FLOAT can use only a set -- * of four consecutive gprs. If we do not have enough, we -- * have to adjust the intarg_count value. -- */ -- if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3 -- && intarg_count < NUM_GPR_ARG_REGISTERS) -- intarg_count = NUM_GPR_ARG_REGISTERS; -- intarg_count += 4; -- break; -- -- case FFI_TYPE_UINT64: -- case FFI_TYPE_SINT64: -- /* 'long long' arguments are passed as two words, but -- either both words must fit in registers or both go -- on the stack. If they go on the stack, they must -- be 8-byte-aligned. -- -- Also, only certain register pairs can be used for -- passing long long int -- specifically (r3,r4), (r5,r6), -- (r7,r8), (r9,r10). -- */ -- if (intarg_count == NUM_GPR_ARG_REGISTERS-1 -- || intarg_count % 2 != 0) -- intarg_count++; -- intarg_count += 2; -- break; -- -- case FFI_TYPE_STRUCT: -- /* We must allocate space for a copy of these to enforce -- pass-by-value. Pad the space up to a multiple of 16 -- bytes (the maximum alignment required for anything under -- the SYSV ABI). */ -- struct_copy_size += ((*ptr)->size + 15) & ~0xF; -- /* Fall through (allocate space for the pointer). */ -- -- case FFI_TYPE_POINTER: -- case FFI_TYPE_INT: -- case FFI_TYPE_UINT32: -- case FFI_TYPE_SINT32: -- case FFI_TYPE_UINT16: -- case FFI_TYPE_SINT16: -- case FFI_TYPE_UINT8: -- case FFI_TYPE_SINT8: -- /* Everything else is passed as a 4-byte word in a GPR, either -- the object itself or a pointer to it. */ -- intarg_count++; -- break; -- default: -- FFI_ASSERT (0); -- } -- } -- else -- for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) -- { -- unsigned int elt, elnum; --#ifdef __STRUCT_PARM_ALIGN__ -- unsigned int align; --#endif -- -- switch ((*ptr)->type) -- { --#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- case FFI_TYPE_LONGDOUBLE: -- fparg_count += 2; -- intarg_count += 2; -- if (fparg_count > NUM_FPR_ARG_REGISTERS64) -- flags |= FLAG_ARG_NEEDS_PSAVE; -- break; --#endif -- case FFI_TYPE_FLOAT: -- case FFI_TYPE_DOUBLE: -- fparg_count++; -- intarg_count++; -- if (fparg_count > NUM_FPR_ARG_REGISTERS64) -- flags |= FLAG_ARG_NEEDS_PSAVE; -- break; -- -- case FFI_TYPE_STRUCT: --#ifdef __STRUCT_PARM_ALIGN__ -- align = (*ptr)->alignment; -- if (align > __STRUCT_PARM_ALIGN__) -- align = __STRUCT_PARM_ALIGN__; -- align = align / 8; -- if (align > 1) -- intarg_count = ALIGN (intarg_count, align); --#endif -- intarg_count += ((*ptr)->size + 7) / 8; -- elt = 0; --#if _CALL_ELF == 2 -- elt = discover_homogeneous_aggregate (*ptr, &elnum); --#endif -- if (elt) -- { -- fparg_count += elnum; -- if (fparg_count > NUM_FPR_ARG_REGISTERS64) -- flags |= FLAG_ARG_NEEDS_PSAVE; -- } -- else -- { -- if (intarg_count > NUM_GPR_ARG_REGISTERS64) -- flags |= FLAG_ARG_NEEDS_PSAVE; -- } -- break; -- -- case FFI_TYPE_POINTER: -- case FFI_TYPE_UINT64: -- case FFI_TYPE_SINT64: -- case FFI_TYPE_INT: -- case FFI_TYPE_UINT32: -- case FFI_TYPE_SINT32: -- case FFI_TYPE_UINT16: -- case FFI_TYPE_SINT16: -- case FFI_TYPE_UINT8: -- case FFI_TYPE_SINT8: -- /* Everything else is passed as a 8-byte word in a GPR, either -- the object itself or a pointer to it. */ -- intarg_count++; -- if (intarg_count > NUM_GPR_ARG_REGISTERS64) -- flags |= FLAG_ARG_NEEDS_PSAVE; -- break; -- default: -- FFI_ASSERT (0); -- } -- } -- --#ifndef __NO_FPRS__ -- if (fparg_count != 0) -- flags |= FLAG_FP_ARGUMENTS; --#endif -- if (intarg_count > 4) -- flags |= FLAG_4_GPR_ARGUMENTS; -- if (struct_copy_size != 0) -- flags |= FLAG_ARG_NEEDS_COPY; -- -- if (cif->abi != FFI_LINUX64) -- { --#ifndef __NO_FPRS__ -- /* Space for the FPR registers, if needed. */ -- if (fparg_count != 0) -- bytes += NUM_FPR_ARG_REGISTERS * sizeof (double); --#endif -- -- /* Stack space. */ -- if (intarg_count > NUM_GPR_ARG_REGISTERS) -- bytes += (intarg_count - NUM_GPR_ARG_REGISTERS) * sizeof (int); --#ifndef __NO_FPRS__ -- if (fparg_count > NUM_FPR_ARG_REGISTERS) -- bytes += (fparg_count - NUM_FPR_ARG_REGISTERS) * sizeof (double); --#endif -- } -- else -- { --#ifndef __NO_FPRS__ -- /* Space for the FPR registers, if needed. */ -- if (fparg_count != 0) -- bytes += NUM_FPR_ARG_REGISTERS64 * sizeof (double); --#endif -- -- /* Stack space. */ --#if _CALL_ELF == 2 -- if ((flags & FLAG_ARG_NEEDS_PSAVE) != 0) -- bytes += intarg_count * sizeof (long); --#else -- if (intarg_count > NUM_GPR_ARG_REGISTERS64) -- bytes += (intarg_count - NUM_GPR_ARG_REGISTERS64) * sizeof (long); --#endif -- } -- -- /* The stack space allocated needs to be a multiple of 16 bytes. */ -- bytes = (bytes + 15) & ~0xF; -- -- /* Add in the space for the copied structures. */ -- bytes += struct_copy_size; -- -- cif->flags = flags; -- cif->bytes = bytes; -- -- return FFI_OK; --} -- --ffi_status --ffi_prep_cif_machdep (ffi_cif *cif) --{ -- cif->nfixedargs = cif->nargs; -- return ffi_prep_cif_machdep_core (cif); --} -- --ffi_status -+ffi_status FFI_HIDDEN - ffi_prep_cif_machdep_var (ffi_cif *cif, -- unsigned int nfixedargs, -+ unsigned int nfixedargs MAYBE_UNUSED, - unsigned int ntotalargs MAYBE_UNUSED) - { -- cif->nfixedargs = nfixedargs; --#if _CALL_ELF == 2 -- if (cif->abi == FFI_LINUX64) -- cif->flags |= FLAG_ARG_NEEDS_PSAVE; -+#ifdef POWERPC64 -+ return ffi_prep_cif_linux64_var (cif, nfixedargs, ntotalargs); -+#else -+ return ffi_prep_cif_sysv (cif); - #endif -- return ffi_prep_cif_machdep_core (cif); - } - --extern void ffi_call_SYSV(extended_cif *, unsigned, unsigned, unsigned *, -- void (*fn)(void)); --extern void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, unsigned long, -- unsigned long, unsigned long *, -- void (*fn)(void)); -- - void - ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) - { -- /* -- * The final SYSV ABI says that structures smaller or equal 8 bytes -- * are returned in r3/r4. The FFI_GCC_SYSV ABI instead returns them -- * in memory. -- * -- * We bounce-buffer SYSV small struct return values so that sysv.S -- * can write r3 and r4 to memory without worrying about struct size. -- * -- * For ELFv2 ABI, use a bounce buffer for homogeneous structs too, -- * for similar reasons. -- */ -+ /* The final SYSV ABI says that structures smaller or equal 8 bytes -+ are returned in r3/r4. A draft ABI used by linux instead returns -+ them in memory. -+ -+ We bounce-buffer SYSV small struct return values so that sysv.S -+ can write r3 and r4 to memory without worrying about struct size. -+ -+ For ELFv2 ABI, use a bounce buffer for homogeneous structs too, -+ for similar reasons. */ - unsigned long smst_buffer[8]; - extended_cif ecif; - - ecif.cif = cif; - ecif.avalue = avalue; - - ecif.rvalue = rvalue; - if ((cif->flags & FLAG_RETURNS_SMST) != 0) - ecif.rvalue = smst_buffer; - /* Ensure that we have a valid struct return value. - FIXME: Isn't this just papering over a user problem? */ - else if (!rvalue && cif->rtype->type == FFI_TYPE_STRUCT) - ecif.rvalue = alloca (cif->rtype->size); - -- switch (cif->abi) -- { --#ifndef POWERPC64 --# ifndef __NO_FPRS__ -- case FFI_SYSV: -- case FFI_GCC_SYSV: -- case FFI_LINUX: --# endif -- case FFI_LINUX_SOFT_FLOAT: -- ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn); -- break; -+#ifdef POWERPC64 -+ ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn); - #else -- case FFI_LINUX64: -- ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn); -- break; -+ ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn); - #endif -- default: -- FFI_ASSERT (0); -- break; -- } - - /* Check for a bounce-buffered return value */ - if (rvalue && ecif.rvalue == smst_buffer) - { - unsigned int rsize = cif->rtype->size; - #ifndef __LITTLE_ENDIAN__ - /* The SYSV ABI returns a structure of up to 4 bytes in size - left-padded in r3. */ -- if (cif->abi == FFI_SYSV && rsize <= 4) -+# ifndef POWERPC64 -+ if (rsize <= 4) - memcpy (rvalue, (char *) smst_buffer + 4 - rsize, rsize); -- /* The SYSV ABI returns a structure of up to 8 bytes in size -- left-padded in r3/r4, and the ELFv2 ABI similarly returns a -- structure of up to 8 bytes in size left-padded in r3. */ -- else if (rsize <= 8) -- memcpy (rvalue, (char *) smst_buffer + 8 - rsize, rsize); - else -+# endif -+ /* The SYSV ABI returns a structure of up to 8 bytes in size -+ left-padded in r3/r4, and the ELFv2 ABI similarly returns a -+ structure of up to 8 bytes in size left-padded in r3. */ -+ if (rsize <= 8) -+ memcpy (rvalue, (char *) smst_buffer + 8 - rsize, rsize); -+ else - #endif -- memcpy (rvalue, smst_buffer, rsize); -+ memcpy (rvalue, smst_buffer, rsize); - } - } - - --#if !defined POWERPC64 || _CALL_ELF == 2 --#define MIN_CACHE_LINE_SIZE 8 -- --static void --flush_icache (char *wraddr, char *xaddr, int size) --{ -- int i; -- for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE) -- __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" -- : : "r" (xaddr + i), "r" (wraddr + i) : "memory"); -- __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;" -- : : "r"(xaddr + size - 1), "r"(wraddr + size - 1) -- : "memory"); --} --#endif -- - ffi_status - ffi_prep_closure_loc (ffi_closure *closure, - ffi_cif *cif, - void (*fun) (ffi_cif *, void *, void **, void *), - void *user_data, - void *codeloc) - { - #ifdef POWERPC64 --# if _CALL_ELF == 2 -- unsigned int *tramp = (unsigned int *) &closure->tramp[0]; -- -- if (cif->abi != FFI_LINUX64) -- return FFI_BAD_ABI; -- -- tramp[0] = 0xe96c0018; /* 0: ld 11,2f-0b(12) */ -- tramp[1] = 0xe98c0010; /* ld 12,1f-0b(12) */ -- tramp[2] = 0x7d8903a6; /* mtctr 12 */ -- tramp[3] = 0x4e800420; /* bctr */ -- /* 1: .quad function_addr */ -- /* 2: .quad context */ -- *(void **) &tramp[4] = (void *) ffi_closure_LINUX64; -- *(void **) &tramp[6] = codeloc; -- flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE); --# else -- void **tramp = (void **) &closure->tramp[0]; -- -- if (cif->abi != FFI_LINUX64) -- return FFI_BAD_ABI; -- /* Copy function address and TOC from ffi_closure_LINUX64. */ -- memcpy (tramp, (char *) ffi_closure_LINUX64, 16); -- tramp[2] = codeloc; --# endif -+ return ffi_prep_closure_loc_linux64 (closure, cif, fun, user_data, codeloc); - #else -- unsigned int *tramp; -- -- if (! (cif->abi == FFI_GCC_SYSV -- || cif->abi == FFI_SYSV -- || cif->abi == FFI_LINUX -- || cif->abi == FFI_LINUX_SOFT_FLOAT)) -- return FFI_BAD_ABI; -- -- tramp = (unsigned int *) &closure->tramp[0]; -- tramp[0] = 0x7c0802a6; /* mflr r0 */ -- tramp[1] = 0x4800000d; /* bl 10 */ -- tramp[4] = 0x7d6802a6; /* mflr r11 */ -- tramp[5] = 0x7c0803a6; /* mtlr r0 */ -- tramp[6] = 0x800b0000; /* lwz r0,0(r11) */ -- tramp[7] = 0x816b0004; /* lwz r11,4(r11) */ -- tramp[8] = 0x7c0903a6; /* mtctr r0 */ -- tramp[9] = 0x4e800420; /* bctr */ -- *(void **) &tramp[2] = (void *) ffi_closure_SYSV; /* function */ -- *(void **) &tramp[3] = codeloc; /* context */ -- -- /* Flush the icache. */ -- flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE); -+ return ffi_prep_closure_loc_sysv (closure, cif, fun, user_data, codeloc); - #endif -- -- closure->cif = cif; -- closure->fun = fun; -- closure->user_data = user_data; -- -- return FFI_OK; - } -- --typedef union --{ -- float f; -- double d; --} ffi_dblfl; -- --int ffi_closure_helper_SYSV (ffi_closure *, void *, unsigned long *, -- ffi_dblfl *, unsigned long *); -- --/* Basically the trampoline invokes ffi_closure_SYSV, and on -- * entry, r11 holds the address of the closure. -- * After storing the registers that could possibly contain -- * parameters to be passed into the stack frame and setting -- * up space for a return value, ffi_closure_SYSV invokes the -- * following helper function to do most of the work -- */ -- --int --ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, -- unsigned long *pgr, ffi_dblfl *pfr, -- unsigned long *pst) --{ -- /* rvalue is the pointer to space for return value in closure assembly */ -- /* pgr is the pointer to where r3-r10 are stored in ffi_closure_SYSV */ -- /* pfr is the pointer to where f1-f8 are stored in ffi_closure_SYSV */ -- /* pst is the pointer to outgoing parameter stack in original caller */ -- -- void ** avalue; -- ffi_type ** arg_types; -- long i, avn; --#ifndef __NO_FPRS__ -- long nf = 0; /* number of floating registers already used */ --#endif -- long ng = 0; /* number of general registers already used */ -- -- ffi_cif *cif = closure->cif; -- unsigned size = cif->rtype->size; -- unsigned short rtypenum = cif->rtype->type; -- -- avalue = alloca (cif->nargs * sizeof (void *)); -- -- /* First translate for softfloat/nonlinux */ -- if (cif->abi == FFI_LINUX_SOFT_FLOAT) { -- if (rtypenum == FFI_TYPE_FLOAT) -- rtypenum = FFI_TYPE_UINT32; -- if (rtypenum == FFI_TYPE_DOUBLE) -- rtypenum = FFI_TYPE_UINT64; -- if (rtypenum == FFI_TYPE_LONGDOUBLE) -- rtypenum = FFI_TYPE_UINT128; -- } else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) { --#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- if (rtypenum == FFI_TYPE_LONGDOUBLE) -- rtypenum = FFI_TYPE_STRUCT; --#endif -- } -- -- -- /* Copy the caller's structure return value address so that the closure -- returns the data directly to the caller. -- For FFI_SYSV the result is passed in r3/r4 if the struct size is less -- or equal 8 bytes. */ -- if (rtypenum == FFI_TYPE_STRUCT && ((cif->abi != FFI_SYSV) || (size > 8))) { -- rvalue = (void *) *pgr; -- ng++; -- pgr++; -- } -- -- i = 0; -- avn = cif->nargs; -- arg_types = cif->arg_types; -- -- /* Grab the addresses of the arguments from the stack frame. */ -- while (i < avn) { -- unsigned short typenum = arg_types[i]->type; -- -- /* We may need to handle some values depending on ABI */ -- if (cif->abi == FFI_LINUX_SOFT_FLOAT) { -- if (typenum == FFI_TYPE_FLOAT) -- typenum = FFI_TYPE_UINT32; -- if (typenum == FFI_TYPE_DOUBLE) -- typenum = FFI_TYPE_UINT64; -- if (typenum == FFI_TYPE_LONGDOUBLE) -- typenum = FFI_TYPE_UINT128; -- } else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) { --#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- if (typenum == FFI_TYPE_LONGDOUBLE) -- typenum = FFI_TYPE_STRUCT; --#endif -- } -- -- switch (typenum) { --#ifndef __NO_FPRS__ -- case FFI_TYPE_FLOAT: -- /* unfortunately float values are stored as doubles -- * in the ffi_closure_SYSV code (since we don't check -- * the type in that routine). -- */ -- -- /* there are 8 64bit floating point registers */ -- -- if (nf < 8) -- { -- double temp = pfr->d; -- pfr->f = (float) temp; -- avalue[i] = pfr; -- nf++; -- pfr++; -- } -- else -- { -- /* FIXME? here we are really changing the values -- * stored in the original calling routines outgoing -- * parameter stack. This is probably a really -- * naughty thing to do but... -- */ -- avalue[i] = pst; -- pst += 1; -- } -- break; -- -- case FFI_TYPE_DOUBLE: -- /* On the outgoing stack all values are aligned to 8 */ -- /* there are 8 64bit floating point registers */ -- -- if (nf < 8) -- { -- avalue[i] = pfr; -- nf++; -- pfr++; -- } -- else -- { -- if (((long) pst) & 4) -- pst++; -- avalue[i] = pst; -- pst += 2; -- } -- break; -- --#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- case FFI_TYPE_LONGDOUBLE: -- if (nf < 7) -- { -- avalue[i] = pfr; -- pfr += 2; -- nf += 2; -- } -- else -- { -- if (((long) pst) & 4) -- pst++; -- avalue[i] = pst; -- pst += 4; -- nf = 8; -- } -- break; --#endif --#endif /* have FPRS */ -- -- case FFI_TYPE_UINT128: -- /* -- * Test if for the whole long double, 4 gprs are available. -- * otherwise the stuff ends up on the stack. -- */ -- if (ng < 5) { -- avalue[i] = pgr; -- pgr += 4; -- ng += 4; -- } else { -- avalue[i] = pst; -- pst += 4; -- ng = 8+4; -- } -- break; -- -- case FFI_TYPE_SINT8: -- case FFI_TYPE_UINT8: --#ifndef __LITTLE_ENDIAN__ -- /* there are 8 gpr registers used to pass values */ -- if (ng < 8) -- { -- avalue[i] = (char *) pgr + 3; -- ng++; -- pgr++; -- } -- else -- { -- avalue[i] = (char *) pst + 3; -- pst++; -- } -- break; --#endif -- -- case FFI_TYPE_SINT16: -- case FFI_TYPE_UINT16: --#ifndef __LITTLE_ENDIAN__ -- /* there are 8 gpr registers used to pass values */ -- if (ng < 8) -- { -- avalue[i] = (char *) pgr + 2; -- ng++; -- pgr++; -- } -- else -- { -- avalue[i] = (char *) pst + 2; -- pst++; -- } -- break; --#endif -- -- case FFI_TYPE_SINT32: -- case FFI_TYPE_UINT32: -- case FFI_TYPE_POINTER: -- /* there are 8 gpr registers used to pass values */ -- if (ng < 8) -- { -- avalue[i] = pgr; -- ng++; -- pgr++; -- } -- else -- { -- avalue[i] = pst; -- pst++; -- } -- break; -- -- case FFI_TYPE_STRUCT: -- /* Structs are passed by reference. The address will appear in a -- gpr if it is one of the first 8 arguments. */ -- if (ng < 8) -- { -- avalue[i] = (void *) *pgr; -- ng++; -- pgr++; -- } -- else -- { -- avalue[i] = (void *) *pst; -- pst++; -- } -- break; -- -- case FFI_TYPE_SINT64: -- case FFI_TYPE_UINT64: -- /* passing long long ints are complex, they must -- * be passed in suitable register pairs such as -- * (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10) -- * and if the entire pair aren't available then the outgoing -- * parameter stack is used for both but an alignment of 8 -- * must will be kept. So we must either look in pgr -- * or pst to find the correct address for this type -- * of parameter. -- */ -- if (ng < 7) -- { -- if (ng & 0x01) -- { -- /* skip r4, r6, r8 as starting points */ -- ng++; -- pgr++; -- } -- avalue[i] = pgr; -- ng += 2; -- pgr += 2; -- } -- else -- { -- if (((long) pst) & 4) -- pst++; -- avalue[i] = pst; -- pst += 2; -- ng = 8; -- } -- break; -- -- default: -- FFI_ASSERT (0); -- } -- -- i++; -- } -- -- -- (closure->fun) (cif, rvalue, avalue, closure->user_data); -- -- /* Tell ffi_closure_SYSV how to perform return type promotions. -- Because the FFI_SYSV ABI returns the structures <= 8 bytes in r3/r4 -- we have to tell ffi_closure_SYSV how to treat them. We combine the base -- type FFI_SYSV_TYPE_SMALL_STRUCT - 1 with the size of the struct. -- So a one byte struct gets the return type 16. Return type 1 to 15 are -- already used and we never have a struct with size zero. That is the reason -- for the subtraction of 1. See the comment in ffitarget.h about ordering. -- */ -- if (cif->abi == FFI_SYSV && rtypenum == FFI_TYPE_STRUCT && size <= 8) -- return (FFI_SYSV_TYPE_SMALL_STRUCT - 1) + size; -- return rtypenum; --} -- --int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *, void *, -- unsigned long *, ffi_dblfl *); -- --int FFI_HIDDEN --ffi_closure_helper_LINUX64 (ffi_closure *closure, void *rvalue, -- unsigned long *pst, ffi_dblfl *pfr) --{ -- /* rvalue is the pointer to space for return value in closure assembly */ -- /* pst is the pointer to parameter save area -- (r3-r10 are stored into its first 8 slots by ffi_closure_LINUX64) */ -- /* pfr is the pointer to where f1-f13 are stored in ffi_closure_LINUX64 */ -- -- void **avalue; -- ffi_type **arg_types; -- unsigned long i, avn, nfixedargs; -- ffi_cif *cif; -- ffi_dblfl *end_pfr = pfr + NUM_FPR_ARG_REGISTERS64; --#ifdef __STRUCT_PARM_ALIGN__ -- unsigned long align; --#endif -- -- cif = closure->cif; -- avalue = alloca (cif->nargs * sizeof (void *)); -- -- /* Copy the caller's structure return value address so that the -- closure returns the data directly to the caller. */ -- if (cif->rtype->type == FFI_TYPE_STRUCT -- && (cif->flags & FLAG_RETURNS_SMST) == 0) -- { -- rvalue = (void *) *pst; -- pst++; -- } -- -- i = 0; -- avn = cif->nargs; -- nfixedargs = cif->nfixedargs; -- arg_types = cif->arg_types; -- -- /* Grab the addresses of the arguments from the stack frame. */ -- while (i < avn) -- { -- unsigned int elt, elnum; -- -- switch (arg_types[i]->type) -- { -- case FFI_TYPE_SINT8: -- case FFI_TYPE_UINT8: --#ifndef __LITTLE_ENDIAN__ -- avalue[i] = (char *) pst + 7; -- pst++; -- break; --#endif -- -- case FFI_TYPE_SINT16: -- case FFI_TYPE_UINT16: --#ifndef __LITTLE_ENDIAN__ -- avalue[i] = (char *) pst + 6; -- pst++; -- break; --#endif -- -- case FFI_TYPE_SINT32: -- case FFI_TYPE_UINT32: --#ifndef __LITTLE_ENDIAN__ -- avalue[i] = (char *) pst + 4; -- pst++; -- break; --#endif -- -- case FFI_TYPE_SINT64: -- case FFI_TYPE_UINT64: -- case FFI_TYPE_POINTER: -- avalue[i] = pst; -- pst++; -- break; -- -- case FFI_TYPE_STRUCT: --#ifdef __STRUCT_PARM_ALIGN__ -- align = arg_types[i]->alignment; -- if (align > __STRUCT_PARM_ALIGN__) -- align = __STRUCT_PARM_ALIGN__; -- if (align > 1) -- pst = (unsigned long *) ALIGN ((size_t) pst, align); --#endif -- elt = 0; --#if _CALL_ELF == 2 -- elt = discover_homogeneous_aggregate (arg_types[i], &elnum); --#endif -- if (elt) -- { -- union { -- void *v; -- unsigned long *ul; -- float *f; -- double *d; -- size_t p; -- } to, from; -- -- /* Repackage the aggregate from its parts. The -- aggregate size is not greater than the space taken by -- the registers so store back to the register/parameter -- save arrays. */ -- if (pfr + elnum <= end_pfr) -- to.v = pfr; -- else -- to.v = pst; -- -- avalue[i] = to.v; -- from.ul = pst; -- if (elt == FFI_TYPE_FLOAT) -- { -- do -- { -- if (pfr < end_pfr && i < nfixedargs) -- { -- *to.f = (float) pfr->d; -- pfr++; -- } -- else -- *to.f = *from.f; -- to.f++; -- from.f++; -- } -- while (--elnum != 0); -- } -- else -- { -- do -- { -- if (pfr < end_pfr && i < nfixedargs) -- { -- *to.d = pfr->d; -- pfr++; -- } -- else -- *to.d = *from.d; -- to.d++; -- from.d++; -- } -- while (--elnum != 0); -- } -- } -- else -- { --#ifndef __LITTLE_ENDIAN__ -- /* Structures with size less than eight bytes are passed -- left-padded. */ -- if (arg_types[i]->size < 8) -- avalue[i] = (char *) pst + 8 - arg_types[i]->size; -- else --#endif -- avalue[i] = pst; -- } -- pst += (arg_types[i]->size + 7) / 8; -- break; -- -- case FFI_TYPE_FLOAT: -- /* unfortunately float values are stored as doubles -- * in the ffi_closure_LINUX64 code (since we don't check -- * the type in that routine). -- */ -- -- /* there are 13 64bit floating point registers */ -- -- if (pfr < end_pfr && i < nfixedargs) -- { -- double temp = pfr->d; -- pfr->f = (float) temp; -- avalue[i] = pfr; -- pfr++; -- } -- else -- avalue[i] = pst; -- pst++; -- break; -- -- case FFI_TYPE_DOUBLE: -- /* On the outgoing stack all values are aligned to 8 */ -- /* there are 13 64bit floating point registers */ -- -- if (pfr < end_pfr && i < nfixedargs) -- { -- avalue[i] = pfr; -- pfr++; -- } -- else -- avalue[i] = pst; -- pst++; -- break; -- --#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- case FFI_TYPE_LONGDOUBLE: -- if (pfr + 1 < end_pfr && i + 1 < nfixedargs) -- { -- avalue[i] = pfr; -- pfr += 2; -- } -- else -- { -- if (pfr < end_pfr && i < nfixedargs) -- { -- /* Passed partly in f13 and partly on the stack. -- Move it all to the stack. */ -- *pst = *(unsigned long *) pfr; -- pfr++; -- } -- avalue[i] = pst; -- } -- pst += 2; -- break; --#endif -- -- default: -- FFI_ASSERT (0); -- } -- -- i++; -- } -- -- -- (closure->fun) (cif, rvalue, avalue, closure->user_data); -- -- /* Tell ffi_closure_LINUX64 how to perform return type promotions. */ -- if ((cif->flags & FLAG_RETURNS_SMST) != 0) -- { -- if ((cif->flags & FLAG_RETURNS_FP) == 0) -- return FFI_V2_TYPE_SMALL_STRUCT + cif->rtype->size - 1; -- else if ((cif->flags & FLAG_RETURNS_64BITS) != 0) -- return FFI_V2_TYPE_DOUBLE_HOMOG; -- else -- return FFI_V2_TYPE_FLOAT_HOMOG; -- } -- return cif->rtype->type; --} -diff --git a/js/src/ctypes/libffi/src/powerpc/ffi_darwin.c b/js/src/ctypes/libffi/src/powerpc/ffi_darwin.c ---- a/js/src/ctypes/libffi/src/powerpc/ffi_darwin.c -+++ b/js/src/ctypes/libffi/src/powerpc/ffi_darwin.c -@@ -1,14 +1,14 @@ - /* ----------------------------------------------------------------------- - ffi_darwin.c - - Copyright (C) 1998 Geoffrey Keating - Copyright (C) 2001 John Hornkvist -- Copyright (C) 2002, 2006, 2007, 2009 Free Software Foundation, Inc. -+ Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. - - FFI support for Darwin and AIX. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -30,87 +30,112 @@ - #include - #include - - #include - - extern void ffi_closure_ASM (void); - - enum { -- /* The assembly depends on these exact flags. */ -- FLAG_RETURNS_NOTHING = 1 << (31-30), /* These go in cr7 */ -- FLAG_RETURNS_FP = 1 << (31-29), -- FLAG_RETURNS_64BITS = 1 << (31-28), -- FLAG_RETURNS_128BITS = 1 << (31-31), -+ /* The assembly depends on these exact flags. -+ For Darwin64 (when FLAG_RETURNS_STRUCT is set): -+ FLAG_RETURNS_FP indicates that the structure embeds FP data. -+ FLAG_RETURNS_128BITS signals a special struct size that is not -+ expanded for float content. */ -+ FLAG_RETURNS_128BITS = 1 << (31-31), /* These go in cr7 */ -+ FLAG_RETURNS_NOTHING = 1 << (31-30), -+ FLAG_RETURNS_FP = 1 << (31-29), -+ FLAG_RETURNS_64BITS = 1 << (31-28), -+ -+ FLAG_RETURNS_STRUCT = 1 << (31-27), /* This goes in cr6 */ - - FLAG_ARG_NEEDS_COPY = 1 << (31- 7), - FLAG_FP_ARGUMENTS = 1 << (31- 6), /* cr1.eq; specified by ABI */ - FLAG_4_GPR_ARGUMENTS = 1 << (31- 5), - FLAG_RETVAL_REFERENCE = 1 << (31- 4) - }; - - /* About the DARWIN ABI. */ - enum { - NUM_GPR_ARG_REGISTERS = 8, -- NUM_FPR_ARG_REGISTERS = 13 -+ NUM_FPR_ARG_REGISTERS = 13, -+ LINKAGE_AREA_GPRS = 6 - }; --enum { ASM_NEEDS_REGISTERS = 4 }; -+ -+enum { ASM_NEEDS_REGISTERS = 4 }; /* r28-r31 */ - - /* ffi_prep_args is called by the assembly routine once stack space - has been allocated for the function's arguments. -+ -+ m32/m64 - - The stack layout we want looks like this: - - | Return address from ffi_call_DARWIN | higher addresses - |--------------------------------------------| -- | Previous backchain pointer 4 | stack pointer here -+ | Previous backchain pointer 4/8 | stack pointer here - |--------------------------------------------|<+ <<< on entry to -- | Saved r28-r31 4*4 | | ffi_call_DARWIN -+ | ASM_NEEDS_REGISTERS=r28-r31 4*(4/8) | | ffi_call_DARWIN - |--------------------------------------------| | -- | Parameters (at least 8*4=32) | | -+ | When we have any FP activity... the | | -+ | FPRs occupy NUM_FPR_ARG_REGISTERS slots | | -+ | here fp13 .. fp1 from high to low addr. | | -+ ~ ~ ~ -+ | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS - |--------------------------------------------| | -- | Space for GPR2 4 | | -+ | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | - |--------------------------------------------| | stack | -- | Reserved 2*4 | | grows | -+ | Reserved 2*4/8 | | grows | - |--------------------------------------------| | down V -- | Space for callee's LR 4 | | -+ | Space for callee's LR 4/8 | | - |--------------------------------------------| | lower addresses -- | Saved CR 4 | | -+ | Saved CR [low word for m64] 4/8 | | - |--------------------------------------------| | stack pointer here -- | Current backchain pointer 4 |-/ during -+ | Current backchain pointer 4/8 |-/ during - |--------------------------------------------| <<< ffi_call_DARWIN - - */ - -+#if defined(POWERPC_DARWIN64) -+static void -+darwin64_pass_struct_by_value -+ (ffi_type *, char *, unsigned, unsigned *, double **, unsigned long **); -+#endif -+ -+/* This depends on GPR_SIZE = sizeof (unsigned long) */ -+ - void - ffi_prep_args (extended_cif *ecif, unsigned long *const stack) - { - const unsigned bytes = ecif->cif->bytes; - const unsigned flags = ecif->cif->flags; - const unsigned nargs = ecif->cif->nargs; -+#if !defined(POWERPC_DARWIN64) - const ffi_abi abi = ecif->cif->abi; -+#endif - - /* 'stacktop' points at the previous backchain pointer. */ - unsigned long *const stacktop = stack + (bytes / sizeof(unsigned long)); - - /* 'fpr_base' points at the space for fpr1, and grows upwards as - we use FPR registers. */ - double *fpr_base = (double *) (stacktop - ASM_NEEDS_REGISTERS) - NUM_FPR_ARG_REGISTERS; -- int fparg_count = 0; -- -+ int gp_count = 0, fparg_count = 0; - - /* 'next_arg' grows up as we put parameters in it. */ -- unsigned long *next_arg = stack + 6; /* 6 reserved positions. */ -+ unsigned long *next_arg = stack + LINKAGE_AREA_GPRS; /* 6 reserved positions. */ - - int i; - double double_tmp; - void **p_argv = ecif->avalue; - unsigned long gprvalue; - ffi_type** ptr = ecif->cif->arg_types; -+#if !defined(POWERPC_DARWIN64) - char *dest_cpy; -+#endif - unsigned size_al = 0; - - /* Check that everything starts aligned properly. */ - FFI_ASSERT(((unsigned) (char *) stack & 0xF) == 0); - FFI_ASSERT(((unsigned) (char *) stacktop & 0xF) == 0); - FFI_ASSERT((bytes & 0xF) == 0); - - /* Deal with return values that are actually pass-by-reference. -@@ -125,78 +150,95 @@ ffi_prep_args (extended_cif *ecif, unsig - { - switch ((*ptr)->type) - { - /* If a floating-point parameter appears before all of the general- - purpose registers are filled, the corresponding GPRs that match - the size of the floating-point parameter are skipped. */ - case FFI_TYPE_FLOAT: - double_tmp = *(float *) *p_argv; -- if (fparg_count >= NUM_FPR_ARG_REGISTERS) -- *(double *)next_arg = double_tmp; -- else -+ if (fparg_count < NUM_FPR_ARG_REGISTERS) - *fpr_base++ = double_tmp; -+#if defined(POWERPC_DARWIN) -+ *(float *)next_arg = *(float *) *p_argv; -+#else -+ *(double *)next_arg = double_tmp; -+#endif - next_arg++; -+ gp_count++; - fparg_count++; - FFI_ASSERT(flags & FLAG_FP_ARGUMENTS); - break; - - case FFI_TYPE_DOUBLE: - double_tmp = *(double *) *p_argv; -- if (fparg_count >= NUM_FPR_ARG_REGISTERS) -- *(double *)next_arg = double_tmp; -- else -+ if (fparg_count < NUM_FPR_ARG_REGISTERS) - *fpr_base++ = double_tmp; -+ *(double *)next_arg = double_tmp; - #ifdef POWERPC64 - next_arg++; -+ gp_count++; - #else - next_arg += 2; -+ gp_count += 2; - #endif - fparg_count++; - FFI_ASSERT(flags & FLAG_FP_ARGUMENTS); - break; - - #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE - - case FFI_TYPE_LONGDOUBLE: --#ifdef POWERPC64 -+# if defined(POWERPC64) && !defined(POWERPC_DARWIN64) -+ /* ??? This will exceed the regs count when the value starts at fp13 -+ and it will not put the extra bit on the stack. */ - if (fparg_count < NUM_FPR_ARG_REGISTERS) - *(long double *) fpr_base++ = *(long double *) *p_argv; - else - *(long double *) next_arg = *(long double *) *p_argv; - next_arg += 2; - fparg_count += 2; --#else -+# else - double_tmp = ((double *) *p_argv)[0]; - if (fparg_count < NUM_FPR_ARG_REGISTERS) - *fpr_base++ = double_tmp; -- else -- *(double *) next_arg = double_tmp; -+ *(double *) next_arg = double_tmp; -+# if defined(POWERPC_DARWIN64) -+ next_arg++; -+ gp_count++; -+# else - next_arg += 2; -+ gp_count += 2; -+# endif - fparg_count++; -- - double_tmp = ((double *) *p_argv)[1]; - if (fparg_count < NUM_FPR_ARG_REGISTERS) - *fpr_base++ = double_tmp; -- else -- *(double *) next_arg = double_tmp; -+ *(double *) next_arg = double_tmp; -+# if defined(POWERPC_DARWIN64) -+ next_arg++; -+ gp_count++; -+# else - next_arg += 2; -+ gp_count += 2; -+# endif - fparg_count++; --#endif -+# endif - FFI_ASSERT(flags & FLAG_FP_ARGUMENTS); - break; - #endif - case FFI_TYPE_UINT64: - case FFI_TYPE_SINT64: - #ifdef POWERPC64 - gprvalue = *(long long *) *p_argv; - goto putgpr; - #else - *(long long *) next_arg = *(long long *) *p_argv; - next_arg += 2; -+ gp_count += 2; - #endif - break; - case FFI_TYPE_POINTER: - gprvalue = *(unsigned long *) *p_argv; - goto putgpr; - case FFI_TYPE_UINT8: - gprvalue = *(unsigned char *) *p_argv; - goto putgpr; -@@ -206,101 +248,373 @@ ffi_prep_args (extended_cif *ecif, unsig - case FFI_TYPE_UINT16: - gprvalue = *(unsigned short *) *p_argv; - goto putgpr; - case FFI_TYPE_SINT16: - gprvalue = *(signed short *) *p_argv; - goto putgpr; - - case FFI_TYPE_STRUCT: --#ifdef POWERPC64 -- dest_cpy = (char *) next_arg; - size_al = (*ptr)->size; -- if ((*ptr)->elements[0]->type == 3) -- size_al = ALIGN((*ptr)->size, 8); -- if (size_al < 3 && abi == FFI_DARWIN) -- dest_cpy += 4 - size_al; -- -- memcpy ((char *) dest_cpy, (char *) *p_argv, size_al); -- next_arg += (size_al + 7) / 8; -+#if defined(POWERPC_DARWIN64) -+ next_arg = (unsigned long *)ALIGN((char *)next_arg, (*ptr)->alignment); -+ darwin64_pass_struct_by_value (*ptr, (char *) *p_argv, -+ (unsigned) size_al, -+ (unsigned int *) &fparg_count, -+ &fpr_base, &next_arg); - #else - dest_cpy = (char *) next_arg; - -+ /* If the first member of the struct is a double, then include enough -+ padding in the struct size to align it to double-word. */ -+ if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE) -+ size_al = ALIGN((*ptr)->size, 8); -+ -+# if defined(POWERPC64) -+ FFI_ASSERT (abi != FFI_DARWIN); -+ memcpy ((char *) dest_cpy, (char *) *p_argv, size_al); -+ next_arg += (size_al + 7) / 8; -+# else - /* Structures that match the basic modes (QI 1 byte, HI 2 bytes, - SI 4 bytes) are aligned as if they were those modes. - Structures with 3 byte in size are padded upwards. */ -- size_al = (*ptr)->size; -- /* If the first member of the struct is a double, then align -- the struct to double-word. */ -- if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE) -- size_al = ALIGN((*ptr)->size, 8); - if (size_al < 3 && abi == FFI_DARWIN) - dest_cpy += 4 - size_al; - - memcpy((char *) dest_cpy, (char *) *p_argv, size_al); - next_arg += (size_al + 3) / 4; -+# endif - #endif - break; - - case FFI_TYPE_INT: - case FFI_TYPE_SINT32: - gprvalue = *(signed int *) *p_argv; - goto putgpr; - - case FFI_TYPE_UINT32: - gprvalue = *(unsigned int *) *p_argv; - putgpr: - *next_arg++ = gprvalue; -+ gp_count++; - break; - default: - break; - } - } - - /* Check that we didn't overrun the stack... */ -- //FFI_ASSERT(gpr_base <= stacktop - ASM_NEEDS_REGISTERS); -- //FFI_ASSERT((unsigned *)fpr_base -- // <= stacktop - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS); -- //FFI_ASSERT(flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4); -+ /* FFI_ASSERT(gpr_base <= stacktop - ASM_NEEDS_REGISTERS); -+ FFI_ASSERT((unsigned *)fpr_base -+ <= stacktop - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS); -+ FFI_ASSERT(flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4); */ - } - -+#if defined(POWERPC_DARWIN64) -+ -+/* See if we can put some of the struct into fprs. -+ This should not be called for structures of size 16 bytes, since these are not -+ broken out this way. */ -+static void -+darwin64_scan_struct_for_floats (ffi_type *s, unsigned *nfpr) -+{ -+ int i; -+ -+ FFI_ASSERT (s->type == FFI_TYPE_STRUCT) -+ -+ for (i = 0; s->elements[i] != NULL; i++) -+ { -+ ffi_type *p = s->elements[i]; -+ switch (p->type) -+ { -+ case FFI_TYPE_STRUCT: -+ darwin64_scan_struct_for_floats (p, nfpr); -+ break; -+ case FFI_TYPE_LONGDOUBLE: -+ (*nfpr) += 2; -+ break; -+ case FFI_TYPE_DOUBLE: -+ case FFI_TYPE_FLOAT: -+ (*nfpr) += 1; -+ break; -+ default: -+ break; -+ } -+ } -+} -+ -+static int -+darwin64_struct_size_exceeds_gprs_p (ffi_type *s, char *src, unsigned *nfpr) -+{ -+ unsigned struct_offset=0, i; -+ -+ for (i = 0; s->elements[i] != NULL; i++) -+ { -+ char *item_base; -+ ffi_type *p = s->elements[i]; -+ /* Find the start of this item (0 for the first one). */ -+ if (i > 0) -+ struct_offset = ALIGN(struct_offset, p->alignment); -+ -+ item_base = src + struct_offset; -+ -+ switch (p->type) -+ { -+ case FFI_TYPE_STRUCT: -+ if (darwin64_struct_size_exceeds_gprs_p (p, item_base, nfpr)) -+ return 1; -+ break; -+ case FFI_TYPE_LONGDOUBLE: -+ if (*nfpr >= NUM_FPR_ARG_REGISTERS) -+ return 1; -+ (*nfpr) += 1; -+ item_base += 8; -+ /* FALL THROUGH */ -+ case FFI_TYPE_DOUBLE: -+ if (*nfpr >= NUM_FPR_ARG_REGISTERS) -+ return 1; -+ (*nfpr) += 1; -+ break; -+ case FFI_TYPE_FLOAT: -+ if (*nfpr >= NUM_FPR_ARG_REGISTERS) -+ return 1; -+ (*nfpr) += 1; -+ break; -+ default: -+ /* If we try and place any item, that is non-float, once we've -+ exceeded the 8 GPR mark, then we can't fit the struct. */ -+ if ((unsigned long)item_base >= 8*8) -+ return 1; -+ break; -+ } -+ /* now count the size of what we just used. */ -+ struct_offset += p->size; -+ } -+ return 0; -+} -+ -+/* Can this struct be returned by value? */ -+int -+darwin64_struct_ret_by_value_p (ffi_type *s) -+{ -+ unsigned nfp = 0; -+ -+ FFI_ASSERT (s && s->type == FFI_TYPE_STRUCT); -+ -+ /* The largest structure we can return is 8long + 13 doubles. */ -+ if (s->size > 168) -+ return 0; -+ -+ /* We can't pass more than 13 floats. */ -+ darwin64_scan_struct_for_floats (s, &nfp); -+ if (nfp > 13) -+ return 0; -+ -+ /* If there are not too many floats, and the struct is -+ small enough to accommodate in the GPRs, then it must be OK. */ -+ if (s->size <= 64) -+ return 1; -+ -+ /* Well, we have to look harder. */ -+ nfp = 0; -+ if (darwin64_struct_size_exceeds_gprs_p (s, NULL, &nfp)) -+ return 0; -+ -+ return 1; -+} -+ -+void -+darwin64_pass_struct_floats (ffi_type *s, char *src, -+ unsigned *nfpr, double **fprs) -+{ -+ int i; -+ double *fpr_base = *fprs; -+ unsigned struct_offset = 0; -+ -+ /* We don't assume anything about the alignment of the source. */ -+ for (i = 0; s->elements[i] != NULL; i++) -+ { -+ char *item_base; -+ ffi_type *p = s->elements[i]; -+ /* Find the start of this item (0 for the first one). */ -+ if (i > 0) -+ struct_offset = ALIGN(struct_offset, p->alignment); -+ item_base = src + struct_offset; -+ -+ switch (p->type) -+ { -+ case FFI_TYPE_STRUCT: -+ darwin64_pass_struct_floats (p, item_base, nfpr, -+ &fpr_base); -+ break; -+ case FFI_TYPE_LONGDOUBLE: -+ if (*nfpr < NUM_FPR_ARG_REGISTERS) -+ *fpr_base++ = *(double *)item_base; -+ (*nfpr) += 1; -+ item_base += 8; -+ /* FALL THROUGH */ -+ case FFI_TYPE_DOUBLE: -+ if (*nfpr < NUM_FPR_ARG_REGISTERS) -+ *fpr_base++ = *(double *)item_base; -+ (*nfpr) += 1; -+ break; -+ case FFI_TYPE_FLOAT: -+ if (*nfpr < NUM_FPR_ARG_REGISTERS) -+ *fpr_base++ = (double) *(float *)item_base; -+ (*nfpr) += 1; -+ break; -+ default: -+ break; -+ } -+ /* now count the size of what we just used. */ -+ struct_offset += p->size; -+ } -+ /* Update the scores. */ -+ *fprs = fpr_base; -+} -+ -+/* Darwin64 special rules. -+ Break out a struct into params and float registers. */ -+static void -+darwin64_pass_struct_by_value (ffi_type *s, char *src, unsigned size, -+ unsigned *nfpr, double **fprs, unsigned long **arg) -+{ -+ unsigned long *next_arg = *arg; -+ char *dest_cpy = (char *)next_arg; -+ -+ FFI_ASSERT (s->type == FFI_TYPE_STRUCT) -+ -+ if (!size) -+ return; -+ -+ /* First... special cases. */ -+ if (size < 3 -+ || (size == 4 -+ && s->elements[0] -+ && s->elements[0]->type != FFI_TYPE_FLOAT)) -+ { -+ /* Must be at least one GPR, padding is unspecified in value, -+ let's make it zero. */ -+ *next_arg = 0UL; -+ dest_cpy += 8 - size; -+ memcpy ((char *) dest_cpy, src, size); -+ next_arg++; -+ } -+ else if (size == 16) -+ { -+ memcpy ((char *) dest_cpy, src, size); -+ next_arg += 2; -+ } -+ else -+ { -+ /* now the general case, we consider embedded floats. */ -+ memcpy ((char *) dest_cpy, src, size); -+ darwin64_pass_struct_floats (s, src, nfpr, fprs); -+ next_arg += (size+7)/8; -+ } -+ -+ *arg = next_arg; -+} -+ -+double * -+darwin64_struct_floats_to_mem (ffi_type *s, char *dest, double *fprs, unsigned *nf) -+{ -+ int i; -+ unsigned struct_offset = 0; -+ -+ /* We don't assume anything about the alignment of the source. */ -+ for (i = 0; s->elements[i] != NULL; i++) -+ { -+ char *item_base; -+ ffi_type *p = s->elements[i]; -+ /* Find the start of this item (0 for the first one). */ -+ if (i > 0) -+ struct_offset = ALIGN(struct_offset, p->alignment); -+ item_base = dest + struct_offset; -+ -+ switch (p->type) -+ { -+ case FFI_TYPE_STRUCT: -+ fprs = darwin64_struct_floats_to_mem (p, item_base, fprs, nf); -+ break; -+ case FFI_TYPE_LONGDOUBLE: -+ if (*nf < NUM_FPR_ARG_REGISTERS) -+ { -+ *(double *)item_base = *fprs++ ; -+ (*nf) += 1; -+ } -+ item_base += 8; -+ /* FALL THROUGH */ -+ case FFI_TYPE_DOUBLE: -+ if (*nf < NUM_FPR_ARG_REGISTERS) -+ { -+ *(double *)item_base = *fprs++ ; -+ (*nf) += 1; -+ } -+ break; -+ case FFI_TYPE_FLOAT: -+ if (*nf < NUM_FPR_ARG_REGISTERS) -+ { -+ *(float *)item_base = (float) *fprs++ ; -+ (*nf) += 1; -+ } -+ break; -+ default: -+ break; -+ } -+ /* now count the size of what we just used. */ -+ struct_offset += p->size; -+ } -+ return fprs; -+} -+ -+#endif -+ - /* Adjust the size of S to be correct for Darwin. -- On Darwin, the first field of a structure has natural alignment. */ -+ On Darwin m32, the first field of a structure has natural alignment. -+ On Darwin m64, all fields have natural alignment. */ - - static void - darwin_adjust_aggregate_sizes (ffi_type *s) - { - int i; - - if (s->type != FFI_TYPE_STRUCT) - return; - - s->size = 0; - for (i = 0; s->elements[i] != NULL; i++) - { - ffi_type *p; - int align; - - p = s->elements[i]; -- darwin_adjust_aggregate_sizes (p); -- if (i == 0 -- && (p->type == FFI_TYPE_UINT64 -- || p->type == FFI_TYPE_SINT64 -- || p->type == FFI_TYPE_DOUBLE -- || p->alignment == 8)) -- align = 8; -+ if (p->type == FFI_TYPE_STRUCT) -+ darwin_adjust_aggregate_sizes (p); -+#if defined(POWERPC_DARWIN64) -+ /* Natural alignment for all items. */ -+ align = p->alignment; -+#else -+ /* Natural alignment for the first item... */ -+ if (i == 0) -+ align = p->alignment; - else if (p->alignment == 16 || p->alignment < 4) -+ /* .. subsequent items with vector or align < 4 have natural align. */ - align = p->alignment; - else -+ /* .. or align is 4. */ - align = 4; -+#endif -+ /* Pad, if necessary, before adding the current item. */ - s->size = ALIGN(s->size, align) + p->size; - } - - s->size = ALIGN(s->size, s->alignment); - -+ /* This should not be necessary on m64, but harmless. */ - if (s->elements[0]->type == FFI_TYPE_UINT64 - || s->elements[0]->type == FFI_TYPE_SINT64 - || s->elements[0]->type == FFI_TYPE_DOUBLE - || s->elements[0]->alignment == 8) - s->alignment = s->alignment > 8 ? s->alignment : 8; - /* Do not add additional tail padding. */ - } - -@@ -342,17 +656,17 @@ aix_adjust_aggregate_sizes (ffi_type *s) - /* Perform machine dependent cif processing. */ - ffi_status - ffi_prep_cif_machdep (ffi_cif *cif) - { - /* All this is for the DARWIN ABI. */ - unsigned i; - ffi_type **ptr; - unsigned bytes; -- int fparg_count = 0, intarg_count = 0; -+ unsigned fparg_count = 0, intarg_count = 0; - unsigned flags = 0; - unsigned size_al = 0; - - /* All the machine-independent calculation of cif->bytes will be wrong. - All the calculation of structure sizes will also be wrong. - Redo the calculation for DARWIN. */ - - if (cif->abi == FFI_DARWIN) -@@ -367,26 +681,35 @@ ffi_prep_cif_machdep (ffi_cif *cif) - aix_adjust_aggregate_sizes (cif->rtype); - for (i = 0; i < cif->nargs; i++) - aix_adjust_aggregate_sizes (cif->arg_types[i]); - } - - /* Space for the frame pointer, callee's LR, CR, etc, and for - the asm's temp regs. */ - -- bytes = (6 + ASM_NEEDS_REGISTERS) * sizeof(long); -+ bytes = (LINKAGE_AREA_GPRS + ASM_NEEDS_REGISTERS) * sizeof(unsigned long); - -- /* Return value handling. The rules are as follows: -+ /* Return value handling. -+ The rules m32 are as follows: - - 32-bit (or less) integer values are returned in gpr3; -- - Structures of size <= 4 bytes also returned in gpr3; -- - 64-bit integer values and structures between 5 and 8 bytes are returned -- in gpr3 and gpr4; -+ - structures of size <= 4 bytes also returned in gpr3; -+ - 64-bit integer values [??? and structures between 5 and 8 bytes] are -+ returned in gpr3 and gpr4; - - Single/double FP values are returned in fpr1; - - Long double FP (if not equivalent to double) values are returned in - fpr1 and fpr2; -+ m64: -+ - 64-bit or smaller integral values are returned in GPR3 -+ - Single/double FP values are returned in fpr1; -+ - Long double FP values are returned in fpr1 and fpr2; -+ m64 Structures: -+ - If the structure could be accommodated in registers were it to be the -+ first argument to a routine, then it is returned in those registers. -+ m32/m64 structures otherwise: - - Larger structures values are allocated space and a pointer is passed - as the first argument. */ - switch (cif->rtype->type) - { - - #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE - case FFI_TYPE_LONGDOUBLE: - flags |= FLAG_RETURNS_128BITS; -@@ -405,124 +728,193 @@ ffi_prep_cif_machdep (ffi_cif *cif) - case FFI_TYPE_SINT64: - #ifdef POWERPC64 - case FFI_TYPE_POINTER: - #endif - flags |= FLAG_RETURNS_64BITS; - break; - - case FFI_TYPE_STRUCT: -+#if defined(POWERPC_DARWIN64) -+ { -+ /* Can we fit the struct into regs? */ -+ if (darwin64_struct_ret_by_value_p (cif->rtype)) -+ { -+ unsigned nfpr = 0; -+ flags |= FLAG_RETURNS_STRUCT; -+ if (cif->rtype->size != 16) -+ darwin64_scan_struct_for_floats (cif->rtype, &nfpr) ; -+ else -+ flags |= FLAG_RETURNS_128BITS; -+ /* Will be 0 for 16byte struct. */ -+ if (nfpr) -+ flags |= FLAG_RETURNS_FP; -+ } -+ else /* By ref. */ -+ { -+ flags |= FLAG_RETVAL_REFERENCE; -+ flags |= FLAG_RETURNS_NOTHING; -+ intarg_count++; -+ } -+ } -+#elif defined(DARWIN_PPC) -+ if (cif->rtype->size <= 4) -+ flags |= FLAG_RETURNS_STRUCT; -+ else /* else by reference. */ -+ { -+ flags |= FLAG_RETVAL_REFERENCE; -+ flags |= FLAG_RETURNS_NOTHING; -+ intarg_count++; -+ } -+#else /* assume we pass by ref. */ - flags |= FLAG_RETVAL_REFERENCE; - flags |= FLAG_RETURNS_NOTHING; - intarg_count++; -+#endif - break; - case FFI_TYPE_VOID: - flags |= FLAG_RETURNS_NOTHING; - break; - - default: - /* Returns 32-bit integer, or similar. Nothing to do here. */ - break; - } - - /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the - first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest -- goes on the stack. Structures are passed as a pointer to a copy of -- the structure. Stuff on the stack needs to keep proper alignment. */ -+ goes on the stack. -+ ??? Structures are passed as a pointer to a copy of the structure. -+ Stuff on the stack needs to keep proper alignment. -+ For m64 the count is effectively of half-GPRs. */ - for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) - { -+ unsigned align_words; - switch ((*ptr)->type) - { - case FFI_TYPE_FLOAT: - case FFI_TYPE_DOUBLE: - fparg_count++; -+#if !defined(POWERPC_DARWIN64) - /* If this FP arg is going on the stack, it must be - 8-byte-aligned. */ - if (fparg_count > NUM_FPR_ARG_REGISTERS -- && intarg_count%2 != 0) -+ && (intarg_count & 0x01) != 0) - intarg_count++; -+#endif - break; - - #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -- - case FFI_TYPE_LONGDOUBLE: - fparg_count += 2; - /* If this FP arg is going on the stack, it must be -- 8-byte-aligned. */ -- if (fparg_count > NUM_FPR_ARG_REGISTERS -- && intarg_count%2 != 0) -- intarg_count++; -- intarg_count +=2; -+ 16-byte-aligned. */ -+ if (fparg_count >= NUM_FPR_ARG_REGISTERS) -+#if defined (POWERPC64) -+ intarg_count = ALIGN(intarg_count, 2); -+#else -+ intarg_count = ALIGN(intarg_count, 4); -+#endif - break; - #endif - - case FFI_TYPE_UINT64: - case FFI_TYPE_SINT64: -+#if defined(POWERPC64) -+ intarg_count++; -+#else - /* 'long long' arguments are passed as two words, but - either both words must fit in registers or both go - on the stack. If they go on the stack, they must - be 8-byte-aligned. */ - if (intarg_count == NUM_GPR_ARG_REGISTERS-1 -- || (intarg_count >= NUM_GPR_ARG_REGISTERS && intarg_count%2 != 0)) -+ || (intarg_count >= NUM_GPR_ARG_REGISTERS -+ && (intarg_count & 0x01) != 0)) - intarg_count++; - intarg_count += 2; -+#endif - break; - - case FFI_TYPE_STRUCT: - size_al = (*ptr)->size; -+#if defined(POWERPC_DARWIN64) -+ align_words = (*ptr)->alignment >> 3; -+ if (align_words) -+ intarg_count = ALIGN(intarg_count, align_words); -+ /* Base size of the struct. */ -+ intarg_count += (size_al + 7) / 8; -+ /* If 16 bytes then don't worry about floats. */ -+ if (size_al != 16) -+ /* Scan through for floats to be placed in regs. */ -+ darwin64_scan_struct_for_floats (*ptr, &fparg_count) ; -+#else -+ align_words = (*ptr)->alignment >> 2; -+ if (align_words) -+ intarg_count = ALIGN(intarg_count, align_words); - /* If the first member of the struct is a double, then align -- the struct to double-word. */ -+ the struct to double-word. - if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE) -- size_al = ALIGN((*ptr)->size, 8); --#ifdef POWERPC64 -+ size_al = ALIGN((*ptr)->size, 8); */ -+# ifdef POWERPC64 - intarg_count += (size_al + 7) / 8; --#else -+# else - intarg_count += (size_al + 3) / 4; -+# endif - #endif - break; - - default: - /* Everything else is passed as a 4-byte word in a GPR, either - the object itself or a pointer to it. */ - intarg_count++; - break; - } - } - - if (fparg_count != 0) - flags |= FLAG_FP_ARGUMENTS; - -+#if defined(POWERPC_DARWIN64) -+ /* Space to image the FPR registers, if needed - which includes when they might be -+ used in a struct return. */ -+ if (fparg_count != 0 -+ || ((flags & FLAG_RETURNS_STRUCT) -+ && (flags & FLAG_RETURNS_FP))) -+ bytes += NUM_FPR_ARG_REGISTERS * sizeof(double); -+#else - /* Space for the FPR registers, if needed. */ - if (fparg_count != 0) - bytes += NUM_FPR_ARG_REGISTERS * sizeof(double); -+#endif - - /* Stack space. */ - #ifdef POWERPC64 - if ((intarg_count + fparg_count) > NUM_GPR_ARG_REGISTERS) - bytes += (intarg_count + fparg_count) * sizeof(long); - #else - if ((intarg_count + 2 * fparg_count) > NUM_GPR_ARG_REGISTERS) - bytes += (intarg_count + 2 * fparg_count) * sizeof(long); - #endif - else - bytes += NUM_GPR_ARG_REGISTERS * sizeof(long); - - /* The stack space allocated needs to be a multiple of 16 bytes. */ -- bytes = (bytes + 15) & ~0xF; -+ bytes = ALIGN(bytes, 16) ; - - cif->flags = flags; - cif->bytes = bytes; - - return FFI_OK; - } - - extern void ffi_call_AIX(extended_cif *, long, unsigned, unsigned *, - void (*fn)(void), void (*fn2)(void)); -+ - extern void ffi_call_DARWIN(extended_cif *, long, unsigned, unsigned *, -- void (*fn)(void), void (*fn2)(void)); -+ void (*fn)(void), void (*fn2)(void), ffi_type*); - - void - ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) - { - extended_cif ecif; - - ecif.cif = cif; - ecif.avalue = avalue; -@@ -541,17 +933,17 @@ ffi_call (ffi_cif *cif, void (*fn)(void) - switch (cif->abi) - { - case FFI_AIX: - ffi_call_AIX(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn, - FFI_FN(ffi_prep_args)); - break; - case FFI_DARWIN: - ffi_call_DARWIN(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn, -- FFI_FN(ffi_prep_args)); -+ FFI_FN(ffi_prep_args), cif->rtype); - break; - default: - FFI_ASSERT(0); - break; - } - } - - static void flush_icache(char *); -@@ -561,123 +953,127 @@ static void flush_range(char *, int); - points to one of these. */ - - typedef struct aix_fd_struct { - void *code_pointer; - void *toc; - } aix_fd; - - /* here I'd like to add the stack frame layout we use in darwin_closure.S -- and aix_clsoure.S -+ and aix_closure.S - -- SP previous -> +---------------------------------------+ <--- child frame -- | back chain to caller 4 | -- +---------------------------------------+ 4 -- | saved CR 4 | -- +---------------------------------------+ 8 -- | saved LR 4 | -- +---------------------------------------+ 12 -- | reserved for compilers 4 | -- +---------------------------------------+ 16 -- | reserved for binders 4 | -- +---------------------------------------+ 20 -- | saved TOC pointer 4 | -- +---------------------------------------+ 24 -- | always reserved 8*4=32 (previous GPRs)| -- | according to the linkage convention | -- | from AIX | -- +---------------------------------------+ 56 -- | our FPR area 13*8=104 | -- | f1 | -- | . | -- | f13 | -- +---------------------------------------+ 160 -- | result area 8 | -- +---------------------------------------+ 168 -- | alignement to the next multiple of 16 | --SP current --> +---------------------------------------+ 176 <- parent frame -- | back chain to caller 4 | -- +---------------------------------------+ 180 -- | saved CR 4 | -- +---------------------------------------+ 184 -- | saved LR 4 | -- +---------------------------------------+ 188 -- | reserved for compilers 4 | -- +---------------------------------------+ 192 -- | reserved for binders 4 | -- +---------------------------------------+ 196 -- | saved TOC pointer 4 | -- +---------------------------------------+ 200 -- | always reserved 8*4=32 we store our | -- | GPRs here | -- | r3 | -- | . | -- | r10 | -- +---------------------------------------+ 232 -- | overflow part | -- +---------------------------------------+ xxx -- | ???? | -- +---------------------------------------+ xxx -+ m32/m64 -+ -+ The stack layout looks like this: -+ -+ | Additional params... | | Higher address -+ ~ ~ ~ -+ | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS -+ |--------------------------------------------| | -+ | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | -+ |--------------------------------------------| | -+ | Reserved 2*4/8 | | -+ |--------------------------------------------| | -+ | Space for callee's LR 4/8 | | -+ |--------------------------------------------| | -+ | Saved CR [low word for m64] 4/8 | | -+ |--------------------------------------------| | -+ | Current backchain pointer 4/8 |-/ Parent's frame. -+ |--------------------------------------------| <+ <<< on entry to ffi_closure_ASM -+ | Result Bytes 16 | | -+ |--------------------------------------------| | -+ ~ padding to 16-byte alignment ~ ~ -+ |--------------------------------------------| | -+ | NUM_FPR_ARG_REGISTERS slots | | -+ | here fp13 .. fp1 13*8 | | -+ |--------------------------------------------| | -+ | R3..R10 8*4/8=32/64 | | NUM_GPR_ARG_REGISTERS -+ |--------------------------------------------| | -+ | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | -+ |--------------------------------------------| | stack | -+ | Reserved [compiler,binder] 2*4/8 | | grows | -+ |--------------------------------------------| | down V -+ | Space for callee's LR 4/8 | | -+ |--------------------------------------------| | lower addresses -+ | Saved CR [low word for m64] 4/8 | | -+ |--------------------------------------------| | stack pointer here -+ | Current backchain pointer 4/8 |-/ during -+ |--------------------------------------------| <<< ffi_closure_ASM. - - */ -+ - ffi_status - ffi_prep_closure_loc (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*, void*, void**, void*), - void *user_data, - void *codeloc) - { - unsigned int *tramp; - struct ffi_aix_trampoline_struct *tramp_aix; - aix_fd *fd; - - switch (cif->abi) - { -- case FFI_DARWIN: -+ case FFI_DARWIN: - -- FFI_ASSERT (cif->abi == FFI_DARWIN); -+ FFI_ASSERT (cif->abi == FFI_DARWIN); - -- tramp = (unsigned int *) &closure->tramp[0]; -- tramp[0] = 0x7c0802a6; /* mflr r0 */ -- tramp[1] = 0x429f000d; /* bcl- 20,4*cr7+so,0x10 */ -- tramp[4] = 0x7d6802a6; /* mflr r11 */ -- tramp[5] = 0x818b0000; /* lwz r12,0(r11) function address */ -- tramp[6] = 0x7c0803a6; /* mtlr r0 */ -- tramp[7] = 0x7d8903a6; /* mtctr r12 */ -- tramp[8] = 0x816b0004; /* lwz r11,4(r11) static chain */ -- tramp[9] = 0x4e800420; /* bctr */ -- tramp[2] = (unsigned long) ffi_closure_ASM; /* function */ -- tramp[3] = (unsigned long) codeloc; /* context */ -+ tramp = (unsigned int *) &closure->tramp[0]; -+#if defined(POWERPC_DARWIN64) -+ tramp[0] = 0x7c0802a6; /* mflr r0 */ -+ tramp[1] = 0x429f0015; /* bcl- 20,4*cr7+so, +0x18 (L1) */ -+ /* We put the addresses here. */ -+ tramp[6] = 0x7d6802a6; /*L1: mflr r11 */ -+ tramp[7] = 0xe98b0000; /* ld r12,0(r11) function address */ -+ tramp[8] = 0x7c0803a6; /* mtlr r0 */ -+ tramp[9] = 0x7d8903a6; /* mtctr r12 */ -+ tramp[10] = 0xe96b0008; /* lwz r11,8(r11) static chain */ -+ tramp[11] = 0x4e800420; /* bctr */ - -- closure->cif = cif; -- closure->fun = fun; -- closure->user_data = user_data; -+ *((unsigned long *)&tramp[2]) = (unsigned long) ffi_closure_ASM; /* function */ -+ *((unsigned long *)&tramp[4]) = (unsigned long) codeloc; /* context */ -+#else -+ tramp[0] = 0x7c0802a6; /* mflr r0 */ -+ tramp[1] = 0x429f000d; /* bcl- 20,4*cr7+so,0x10 */ -+ tramp[4] = 0x7d6802a6; /* mflr r11 */ -+ tramp[5] = 0x818b0000; /* lwz r12,0(r11) function address */ -+ tramp[6] = 0x7c0803a6; /* mtlr r0 */ -+ tramp[7] = 0x7d8903a6; /* mtctr r12 */ -+ tramp[8] = 0x816b0004; /* lwz r11,4(r11) static chain */ -+ tramp[9] = 0x4e800420; /* bctr */ -+ tramp[2] = (unsigned long) ffi_closure_ASM; /* function */ -+ tramp[3] = (unsigned long) codeloc; /* context */ -+#endif -+ closure->cif = cif; -+ closure->fun = fun; -+ closure->user_data = user_data; - -- /* Flush the icache. Only necessary on Darwin. */ -- flush_range(codeloc, FFI_TRAMPOLINE_SIZE); -+ /* Flush the icache. Only necessary on Darwin. */ -+ flush_range(codeloc, FFI_TRAMPOLINE_SIZE); - -- break; -+ break; - - case FFI_AIX: - - tramp_aix = (struct ffi_aix_trampoline_struct *) (closure->tramp); - fd = (aix_fd *)(void *)ffi_closure_ASM; - - FFI_ASSERT (cif->abi == FFI_AIX); - - tramp_aix->code_pointer = fd->code_pointer; - tramp_aix->toc = fd->toc; - tramp_aix->static_chain = codeloc; - closure->cif = cif; - closure->fun = fun; - closure->user_data = user_data; -+ break; - - default: -- -- FFI_ASSERT(0); -+ return FFI_BAD_ABI; - break; - } - return FFI_OK; - } - - static void - flush_icache(char *addr) - { -@@ -703,28 +1099,28 @@ flush_range(char * addr1, int size) - } - - typedef union - { - float f; - double d; - } ffi_dblfl; - --int -+ffi_type * - ffi_closure_helper_DARWIN (ffi_closure *, void *, - unsigned long *, ffi_dblfl *); - - /* Basically the trampoline invokes ffi_closure_ASM, and on - entry, r11 holds the address of the closure. - After storing the registers that could possibly contain - parameters to be passed into the stack frame and setting - up space for a return value, ffi_closure_ASM invokes the - following helper function to do most of the work. */ - --int -+ffi_type * - ffi_closure_helper_DARWIN (ffi_closure *closure, void *rvalue, - unsigned long *pgr, ffi_dblfl *pfr) - { - /* rvalue is the pointer to space for return value in closure assembly - pgr is the pointer to where r3-r10 are stored in ffi_closure_ASM - pfr is the pointer to where f1-f13 are stored in ffi_closure_ASM. */ - - typedef double ldbits[2]; -@@ -736,97 +1132,132 @@ ffi_closure_helper_DARWIN (ffi_closure * - }; - - void ** avalue; - ffi_type ** arg_types; - long i, avn; - ffi_cif * cif; - ffi_dblfl * end_pfr = pfr + NUM_FPR_ARG_REGISTERS; - unsigned size_al; -+#if defined(POWERPC_DARWIN64) -+ unsigned fpsused = 0; -+#endif - - cif = closure->cif; - avalue = alloca (cif->nargs * sizeof(void *)); - -- /* Copy the caller's structure return value address so that the closure -- returns the data directly to the caller. */ - if (cif->rtype->type == FFI_TYPE_STRUCT) - { -+#if defined(POWERPC_DARWIN64) -+ if (!darwin64_struct_ret_by_value_p (cif->rtype)) -+ { -+ /* Won't fit into the regs - return by ref. */ -+ rvalue = (void *) *pgr; -+ pgr++; -+ } -+#elif defined(DARWIN_PPC) -+ if (cif->rtype->size > 4) -+ { -+ rvalue = (void *) *pgr; -+ pgr++; -+ } -+#else /* assume we return by ref. */ - rvalue = (void *) *pgr; - pgr++; -+#endif - } - - i = 0; - avn = cif->nargs; - arg_types = cif->arg_types; - - /* Grab the addresses of the arguments from the stack frame. */ - while (i < avn) - { - switch (arg_types[i]->type) - { - case FFI_TYPE_SINT8: - case FFI_TYPE_UINT8: --#ifdef POWERPC64 -+#if defined(POWERPC64) - avalue[i] = (char *) pgr + 7; - #else - avalue[i] = (char *) pgr + 3; - #endif - pgr++; - break; - - case FFI_TYPE_SINT16: - case FFI_TYPE_UINT16: --#ifdef POWERPC64 -+#if defined(POWERPC64) - avalue[i] = (char *) pgr + 6; - #else - avalue[i] = (char *) pgr + 2; - #endif - pgr++; - break; - - case FFI_TYPE_SINT32: - case FFI_TYPE_UINT32: --#ifdef POWERPC64 -+#if defined(POWERPC64) - avalue[i] = (char *) pgr + 4; - #else - case FFI_TYPE_POINTER: - avalue[i] = pgr; - #endif - pgr++; - break; - - case FFI_TYPE_STRUCT: --#ifdef POWERPC64 - size_al = arg_types[i]->size; -- if (arg_types[i]->elements[0]->type == FFI_TYPE_DOUBLE) -- size_al = ALIGN (arg_types[i]->size, 8); -- if (size_al < 3 && cif->abi == FFI_DARWIN) -- avalue[i] = (char *) pgr + 8 - size_al; -- else -- avalue[i] = pgr; -+#if defined(POWERPC_DARWIN64) -+ pgr = (unsigned long *)ALIGN((char *)pgr, arg_types[i]->alignment); -+ if (size_al < 3 || size_al == 4) -+ { -+ avalue[i] = ((char *)pgr)+8-size_al; -+ if (arg_types[i]->elements[0]->type == FFI_TYPE_FLOAT -+ && fpsused < NUM_FPR_ARG_REGISTERS) -+ { -+ *(float *)pgr = (float) *(double *)pfr; -+ pfr++; -+ fpsused++; -+ } -+ } -+ else -+ { -+ if (size_al != 16) -+ pfr = (ffi_dblfl *) -+ darwin64_struct_floats_to_mem (arg_types[i], (char *)pgr, -+ (double *)pfr, &fpsused); -+ avalue[i] = pgr; -+ } - pgr += (size_al + 7) / 8; - #else -- /* Structures that match the basic modes (QI 1 byte, HI 2 bytes, -- SI 4 bytes) are aligned as if they were those modes. */ -- size_al = arg_types[i]->size; - /* If the first member of the struct is a double, then align - the struct to double-word. */ - if (arg_types[i]->elements[0]->type == FFI_TYPE_DOUBLE) - size_al = ALIGN(arg_types[i]->size, 8); -+# if defined(POWERPC64) -+ FFI_ASSERT (cif->abi != FFI_DARWIN); -+ avalue[i] = pgr; -+ pgr += (size_al + 7) / 8; -+# else -+ /* Structures that match the basic modes (QI 1 byte, HI 2 bytes, -+ SI 4 bytes) are aligned as if they were those modes. */ - if (size_al < 3 && cif->abi == FFI_DARWIN) - avalue[i] = (char*) pgr + 4 - size_al; - else - avalue[i] = pgr; - pgr += (size_al + 3) / 4; -+# endif - #endif - break; - - case FFI_TYPE_SINT64: - case FFI_TYPE_UINT64: --#ifdef POWERPC64 -+#if defined(POWERPC64) - case FFI_TYPE_POINTER: - avalue[i] = pgr; - pgr++; - break; - #else - /* Long long ints are passed in two gpr's. */ - avalue[i] = pgr; - pgr += 2; -@@ -919,10 +1350,10 @@ ffi_closure_helper_DARWIN (ffi_closure * - FFI_ASSERT(0); - } - i++; - } - - (closure->fun) (cif, rvalue, avalue, closure->user_data); - - /* Tell ffi_closure_ASM to perform return type promotions. */ -- return cif->rtype->type; -+ return cif->rtype; - } -diff --git a/js/src/ctypes/libffi/src/powerpc/ffi_linux64.c b/js/src/ctypes/libffi/src/powerpc/ffi_linux64.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/powerpc/ffi_linux64.c -@@ -0,0 +1,943 @@ -+/* ----------------------------------------------------------------------- -+ ffi_linux64.c - Copyright (C) 2013 IBM -+ Copyright (C) 2011 Anthony Green -+ Copyright (C) 2011 Kyle Moffett -+ Copyright (C) 2008 Red Hat, Inc -+ Copyright (C) 2007, 2008 Free Software Foundation, Inc -+ Copyright (c) 1998 Geoffrey Keating -+ -+ PowerPC Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#include "ffi.h" -+ -+#ifdef POWERPC64 -+#include "ffi_common.h" -+#include "ffi_powerpc.h" -+ -+ -+/* About the LINUX64 ABI. */ -+enum { -+ NUM_GPR_ARG_REGISTERS64 = 8, -+ NUM_FPR_ARG_REGISTERS64 = 13 -+}; -+enum { ASM_NEEDS_REGISTERS64 = 4 }; -+ -+ -+#if HAVE_LONG_DOUBLE_VARIANT && FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+/* Adjust size of ffi_type_longdouble. */ -+void FFI_HIDDEN -+ffi_prep_types_linux64 (ffi_abi abi) -+{ -+ if ((abi & (FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128)) == FFI_LINUX) -+ { -+ ffi_type_longdouble.size = 8; -+ ffi_type_longdouble.alignment = 8; -+ } -+ else -+ { -+ ffi_type_longdouble.size = 16; -+ ffi_type_longdouble.alignment = 16; -+ } -+} -+#endif -+ -+ -+#if _CALL_ELF == 2 -+static unsigned int -+discover_homogeneous_aggregate (const ffi_type *t, unsigned int *elnum) -+{ -+ switch (t->type) -+ { -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_DOUBLE: -+ *elnum = 1; -+ return (int) t->type; -+ -+ case FFI_TYPE_STRUCT:; -+ { -+ unsigned int base_elt = 0, total_elnum = 0; -+ ffi_type **el = t->elements; -+ while (*el) -+ { -+ unsigned int el_elt, el_elnum = 0; -+ el_elt = discover_homogeneous_aggregate (*el, &el_elnum); -+ if (el_elt == 0 -+ || (base_elt && base_elt != el_elt)) -+ return 0; -+ base_elt = el_elt; -+ total_elnum += el_elnum; -+ if (total_elnum > 8) -+ return 0; -+ el++; -+ } -+ *elnum = total_elnum; -+ return base_elt; -+ } -+ -+ default: -+ return 0; -+ } -+} -+#endif -+ -+ -+/* Perform machine dependent cif processing */ -+static ffi_status -+ffi_prep_cif_linux64_core (ffi_cif *cif) -+{ -+ ffi_type **ptr; -+ unsigned bytes; -+ unsigned i, fparg_count = 0, intarg_count = 0; -+ unsigned flags = cif->flags; -+#if _CALL_ELF == 2 -+ unsigned int elt, elnum; -+#endif -+ -+#if FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE -+ /* If compiled without long double support.. */ -+ if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) -+ return FFI_BAD_ABI; -+#endif -+ -+ /* The machine-independent calculation of cif->bytes doesn't work -+ for us. Redo the calculation. */ -+#if _CALL_ELF == 2 -+ /* Space for backchain, CR, LR, TOC and the asm's temp regs. */ -+ bytes = (4 + ASM_NEEDS_REGISTERS64) * sizeof (long); -+ -+ /* Space for the general registers. */ -+ bytes += NUM_GPR_ARG_REGISTERS64 * sizeof (long); -+#else -+ /* Space for backchain, CR, LR, cc/ld doubleword, TOC and the asm's temp -+ regs. */ -+ bytes = (6 + ASM_NEEDS_REGISTERS64) * sizeof (long); -+ -+ /* Space for the mandatory parm save area and general registers. */ -+ bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long); -+#endif -+ -+ /* Return value handling. */ -+ switch (cif->rtype->type) -+ { -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) -+ flags |= FLAG_RETURNS_128BITS; -+ /* Fall through. */ -+#endif -+ case FFI_TYPE_DOUBLE: -+ flags |= FLAG_RETURNS_64BITS; -+ /* Fall through. */ -+ case FFI_TYPE_FLOAT: -+ flags |= FLAG_RETURNS_FP; -+ break; -+ -+ case FFI_TYPE_UINT128: -+ flags |= FLAG_RETURNS_128BITS; -+ /* Fall through. */ -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ flags |= FLAG_RETURNS_64BITS; -+ break; -+ -+ case FFI_TYPE_STRUCT: -+#if _CALL_ELF == 2 -+ elt = discover_homogeneous_aggregate (cif->rtype, &elnum); -+ if (elt) -+ { -+ if (elt == FFI_TYPE_DOUBLE) -+ flags |= FLAG_RETURNS_64BITS; -+ flags |= FLAG_RETURNS_FP | FLAG_RETURNS_SMST; -+ break; -+ } -+ if (cif->rtype->size <= 16) -+ { -+ flags |= FLAG_RETURNS_SMST; -+ break; -+ } -+#endif -+ intarg_count++; -+ flags |= FLAG_RETVAL_REFERENCE; -+ /* Fall through. */ -+ case FFI_TYPE_VOID: -+ flags |= FLAG_RETURNS_NOTHING; -+ break; -+ -+ default: -+ /* Returns 32-bit integer, or similar. Nothing to do here. */ -+ break; -+ } -+ -+ for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) -+ { -+ unsigned int align; -+ -+ switch ((*ptr)->type) -+ { -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) -+ { -+ fparg_count++; -+ intarg_count++; -+ } -+ /* Fall through. */ -+#endif -+ case FFI_TYPE_DOUBLE: -+ case FFI_TYPE_FLOAT: -+ fparg_count++; -+ intarg_count++; -+ if (fparg_count > NUM_FPR_ARG_REGISTERS64) -+ flags |= FLAG_ARG_NEEDS_PSAVE; -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ if ((cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0) -+ { -+ align = (*ptr)->alignment; -+ if (align > 16) -+ align = 16; -+ align = align / 8; -+ if (align > 1) -+ intarg_count = ALIGN (intarg_count, align); -+ } -+ intarg_count += ((*ptr)->size + 7) / 8; -+#if _CALL_ELF == 2 -+ elt = discover_homogeneous_aggregate (*ptr, &elnum); -+ if (elt) -+ { -+ fparg_count += elnum; -+ if (fparg_count > NUM_FPR_ARG_REGISTERS64) -+ flags |= FLAG_ARG_NEEDS_PSAVE; -+ } -+ else -+#endif -+ { -+ if (intarg_count > NUM_GPR_ARG_REGISTERS64) -+ flags |= FLAG_ARG_NEEDS_PSAVE; -+ } -+ break; -+ -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT8: -+ /* Everything else is passed as a 8-byte word in a GPR, either -+ the object itself or a pointer to it. */ -+ intarg_count++; -+ if (intarg_count > NUM_GPR_ARG_REGISTERS64) -+ flags |= FLAG_ARG_NEEDS_PSAVE; -+ break; -+ default: -+ FFI_ASSERT (0); -+ } -+ } -+ -+ if (fparg_count != 0) -+ flags |= FLAG_FP_ARGUMENTS; -+ if (intarg_count > 4) -+ flags |= FLAG_4_GPR_ARGUMENTS; -+ -+ /* Space for the FPR registers, if needed. */ -+ if (fparg_count != 0) -+ bytes += NUM_FPR_ARG_REGISTERS64 * sizeof (double); -+ -+ /* Stack space. */ -+#if _CALL_ELF == 2 -+ if ((flags & FLAG_ARG_NEEDS_PSAVE) != 0) -+ bytes += intarg_count * sizeof (long); -+#else -+ if (intarg_count > NUM_GPR_ARG_REGISTERS64) -+ bytes += (intarg_count - NUM_GPR_ARG_REGISTERS64) * sizeof (long); -+#endif -+ -+ /* The stack space allocated needs to be a multiple of 16 bytes. */ -+ bytes = (bytes + 15) & ~0xF; -+ -+ cif->flags = flags; -+ cif->bytes = bytes; -+ -+ return FFI_OK; -+} -+ -+ffi_status FFI_HIDDEN -+ffi_prep_cif_linux64 (ffi_cif *cif) -+{ -+ if ((cif->abi & FFI_LINUX) != 0) -+ cif->nfixedargs = cif->nargs; -+#if _CALL_ELF != 2 -+ else if (cif->abi == FFI_COMPAT_LINUX64) -+ { -+ /* This call is from old code. Don't touch cif->nfixedargs -+ since old code will be using a smaller cif. */ -+ cif->flags |= FLAG_COMPAT; -+ /* Translate to new abi value. */ -+ cif->abi = FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128; -+ } -+#endif -+ else -+ return FFI_BAD_ABI; -+ return ffi_prep_cif_linux64_core (cif); -+} -+ -+ffi_status FFI_HIDDEN -+ffi_prep_cif_linux64_var (ffi_cif *cif, -+ unsigned int nfixedargs, -+ unsigned int ntotalargs MAYBE_UNUSED) -+{ -+ if ((cif->abi & FFI_LINUX) != 0) -+ cif->nfixedargs = nfixedargs; -+#if _CALL_ELF != 2 -+ else if (cif->abi == FFI_COMPAT_LINUX64) -+ { -+ /* This call is from old code. Don't touch cif->nfixedargs -+ since old code will be using a smaller cif. */ -+ cif->flags |= FLAG_COMPAT; -+ /* Translate to new abi value. */ -+ cif->abi = FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128; -+ } -+#endif -+ else -+ return FFI_BAD_ABI; -+#if _CALL_ELF == 2 -+ cif->flags |= FLAG_ARG_NEEDS_PSAVE; -+#endif -+ return ffi_prep_cif_linux64_core (cif); -+} -+ -+ -+/* ffi_prep_args64 is called by the assembly routine once stack space -+ has been allocated for the function's arguments. -+ -+ The stack layout we want looks like this: -+ -+ | Ret addr from ffi_call_LINUX64 8bytes | higher addresses -+ |--------------------------------------------| -+ | CR save area 8bytes | -+ |--------------------------------------------| -+ | Previous backchain pointer 8 | stack pointer here -+ |--------------------------------------------|<+ <<< on entry to -+ | Saved r28-r31 4*8 | | ffi_call_LINUX64 -+ |--------------------------------------------| | -+ | GPR registers r3-r10 8*8 | | -+ |--------------------------------------------| | -+ | FPR registers f1-f13 (optional) 13*8 | | -+ |--------------------------------------------| | -+ | Parameter save area | | -+ |--------------------------------------------| | -+ | TOC save area 8 | | -+ |--------------------------------------------| | stack | -+ | Linker doubleword 8 | | grows | -+ |--------------------------------------------| | down V -+ | Compiler doubleword 8 | | -+ |--------------------------------------------| | lower addresses -+ | Space for callee's LR 8 | | -+ |--------------------------------------------| | -+ | CR save area 8 | | -+ |--------------------------------------------| | stack pointer here -+ | Current backchain pointer 8 |-/ during -+ |--------------------------------------------| <<< ffi_call_LINUX64 -+ -+*/ -+ -+void FFI_HIDDEN -+ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) -+{ -+ const unsigned long bytes = ecif->cif->bytes; -+ const unsigned long flags = ecif->cif->flags; -+ -+ typedef union -+ { -+ char *c; -+ unsigned long *ul; -+ float *f; -+ double *d; -+ size_t p; -+ } valp; -+ -+ /* 'stacktop' points at the previous backchain pointer. */ -+ valp stacktop; -+ -+ /* 'next_arg' points at the space for gpr3, and grows upwards as -+ we use GPR registers, then continues at rest. */ -+ valp gpr_base; -+ valp gpr_end; -+ valp rest; -+ valp next_arg; -+ -+ /* 'fpr_base' points at the space for fpr3, and grows upwards as -+ we use FPR registers. */ -+ valp fpr_base; -+ unsigned int fparg_count; -+ -+ unsigned int i, words, nargs, nfixedargs; -+ ffi_type **ptr; -+ double double_tmp; -+ union -+ { -+ void **v; -+ char **c; -+ signed char **sc; -+ unsigned char **uc; -+ signed short **ss; -+ unsigned short **us; -+ signed int **si; -+ unsigned int **ui; -+ unsigned long **ul; -+ float **f; -+ double **d; -+ } p_argv; -+ unsigned long gprvalue; -+ unsigned long align; -+ -+ stacktop.c = (char *) stack + bytes; -+ gpr_base.ul = stacktop.ul - ASM_NEEDS_REGISTERS64 - NUM_GPR_ARG_REGISTERS64; -+ gpr_end.ul = gpr_base.ul + NUM_GPR_ARG_REGISTERS64; -+#if _CALL_ELF == 2 -+ rest.ul = stack + 4 + NUM_GPR_ARG_REGISTERS64; -+#else -+ rest.ul = stack + 6 + NUM_GPR_ARG_REGISTERS64; -+#endif -+ fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS64; -+ fparg_count = 0; -+ next_arg.ul = gpr_base.ul; -+ -+ /* Check that everything starts aligned properly. */ -+ FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0); -+ FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0); -+ FFI_ASSERT ((bytes & 0xF) == 0); -+ -+ /* Deal with return values that are actually pass-by-reference. */ -+ if (flags & FLAG_RETVAL_REFERENCE) -+ *next_arg.ul++ = (unsigned long) (char *) ecif->rvalue; -+ -+ /* Now for the arguments. */ -+ p_argv.v = ecif->avalue; -+ nargs = ecif->cif->nargs; -+#if _CALL_ELF != 2 -+ nfixedargs = (unsigned) -1; -+ if ((flags & FLAG_COMPAT) == 0) -+#endif -+ nfixedargs = ecif->cif->nfixedargs; -+ for (ptr = ecif->cif->arg_types, i = 0; -+ i < nargs; -+ i++, ptr++, p_argv.v++) -+ { -+#if _CALL_ELF == 2 -+ unsigned int elt, elnum; -+#endif -+ -+ switch ((*ptr)->type) -+ { -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ if ((ecif->cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) -+ { -+ double_tmp = (*p_argv.d)[0]; -+ if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) -+ { -+ *fpr_base.d++ = double_tmp; -+# if _CALL_ELF != 2 -+ if ((flags & FLAG_COMPAT) != 0) -+ *next_arg.d = double_tmp; -+# endif -+ } -+ else -+ *next_arg.d = double_tmp; -+ if (++next_arg.ul == gpr_end.ul) -+ next_arg.ul = rest.ul; -+ fparg_count++; -+ double_tmp = (*p_argv.d)[1]; -+ if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) -+ { -+ *fpr_base.d++ = double_tmp; -+# if _CALL_ELF != 2 -+ if ((flags & FLAG_COMPAT) != 0) -+ *next_arg.d = double_tmp; -+# endif -+ } -+ else -+ *next_arg.d = double_tmp; -+ if (++next_arg.ul == gpr_end.ul) -+ next_arg.ul = rest.ul; -+ fparg_count++; -+ FFI_ASSERT (__LDBL_MANT_DIG__ == 106); -+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); -+ break; -+ } -+ /* Fall through. */ -+#endif -+ case FFI_TYPE_DOUBLE: -+ double_tmp = **p_argv.d; -+ if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) -+ { -+ *fpr_base.d++ = double_tmp; -+#if _CALL_ELF != 2 -+ if ((flags & FLAG_COMPAT) != 0) -+ *next_arg.d = double_tmp; -+#endif -+ } -+ else -+ *next_arg.d = double_tmp; -+ if (++next_arg.ul == gpr_end.ul) -+ next_arg.ul = rest.ul; -+ fparg_count++; -+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); -+ break; -+ -+ case FFI_TYPE_FLOAT: -+ double_tmp = **p_argv.f; -+ if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) -+ { -+ *fpr_base.d++ = double_tmp; -+#if _CALL_ELF != 2 -+ if ((flags & FLAG_COMPAT) != 0) -+ *next_arg.f = (float) double_tmp; -+#endif -+ } -+ else -+ *next_arg.f = (float) double_tmp; -+ if (++next_arg.ul == gpr_end.ul) -+ next_arg.ul = rest.ul; -+ fparg_count++; -+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ if ((ecif->cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0) -+ { -+ align = (*ptr)->alignment; -+ if (align > 16) -+ align = 16; -+ if (align > 1) -+ next_arg.p = ALIGN (next_arg.p, align); -+ } -+#if _CALL_ELF == 2 -+ elt = discover_homogeneous_aggregate (*ptr, &elnum); -+ if (elt) -+ { -+ union { -+ void *v; -+ float *f; -+ double *d; -+ } arg; -+ -+ arg.v = *p_argv.v; -+ if (elt == FFI_TYPE_FLOAT) -+ { -+ do -+ { -+ double_tmp = *arg.f++; -+ if (fparg_count < NUM_FPR_ARG_REGISTERS64 -+ && i < nfixedargs) -+ *fpr_base.d++ = double_tmp; -+ else -+ *next_arg.f = (float) double_tmp; -+ if (++next_arg.f == gpr_end.f) -+ next_arg.f = rest.f; -+ fparg_count++; -+ } -+ while (--elnum != 0); -+ if ((next_arg.p & 3) != 0) -+ { -+ if (++next_arg.f == gpr_end.f) -+ next_arg.f = rest.f; -+ } -+ } -+ else -+ do -+ { -+ double_tmp = *arg.d++; -+ if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) -+ *fpr_base.d++ = double_tmp; -+ else -+ *next_arg.d = double_tmp; -+ if (++next_arg.d == gpr_end.d) -+ next_arg.d = rest.d; -+ fparg_count++; -+ } -+ while (--elnum != 0); -+ } -+ else -+#endif -+ { -+ words = ((*ptr)->size + 7) / 8; -+ if (next_arg.ul >= gpr_base.ul && next_arg.ul + words > gpr_end.ul) -+ { -+ size_t first = gpr_end.c - next_arg.c; -+ memcpy (next_arg.c, *p_argv.c, first); -+ memcpy (rest.c, *p_argv.c + first, (*ptr)->size - first); -+ next_arg.c = rest.c + words * 8 - first; -+ } -+ else -+ { -+ char *where = next_arg.c; -+ -+#ifndef __LITTLE_ENDIAN__ -+ /* Structures with size less than eight bytes are passed -+ left-padded. */ -+ if ((*ptr)->size < 8) -+ where += 8 - (*ptr)->size; -+#endif -+ memcpy (where, *p_argv.c, (*ptr)->size); -+ next_arg.ul += words; -+ if (next_arg.ul == gpr_end.ul) -+ next_arg.ul = rest.ul; -+ } -+ } -+ break; -+ -+ case FFI_TYPE_UINT8: -+ gprvalue = **p_argv.uc; -+ goto putgpr; -+ case FFI_TYPE_SINT8: -+ gprvalue = **p_argv.sc; -+ goto putgpr; -+ case FFI_TYPE_UINT16: -+ gprvalue = **p_argv.us; -+ goto putgpr; -+ case FFI_TYPE_SINT16: -+ gprvalue = **p_argv.ss; -+ goto putgpr; -+ case FFI_TYPE_UINT32: -+ gprvalue = **p_argv.ui; -+ goto putgpr; -+ case FFI_TYPE_INT: -+ case FFI_TYPE_SINT32: -+ gprvalue = **p_argv.si; -+ goto putgpr; -+ -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_POINTER: -+ gprvalue = **p_argv.ul; -+ putgpr: -+ *next_arg.ul++ = gprvalue; -+ if (next_arg.ul == gpr_end.ul) -+ next_arg.ul = rest.ul; -+ break; -+ } -+ } -+ -+ FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS -+ || (next_arg.ul >= gpr_base.ul -+ && next_arg.ul <= gpr_base.ul + 4)); -+} -+ -+ -+#if _CALL_ELF == 2 -+#define MIN_CACHE_LINE_SIZE 8 -+ -+static void -+flush_icache (char *wraddr, char *xaddr, int size) -+{ -+ int i; -+ for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE) -+ __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" -+ : : "r" (xaddr + i), "r" (wraddr + i) : "memory"); -+ __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;" -+ : : "r"(xaddr + size - 1), "r"(wraddr + size - 1) -+ : "memory"); -+} -+#endif -+ -+ffi_status -+ffi_prep_closure_loc_linux64 (ffi_closure *closure, -+ ffi_cif *cif, -+ void (*fun) (ffi_cif *, void *, void **, void *), -+ void *user_data, -+ void *codeloc) -+{ -+#if _CALL_ELF == 2 -+ unsigned int *tramp = (unsigned int *) &closure->tramp[0]; -+ -+ if (cif->abi < FFI_LINUX || cif->abi >= FFI_LAST_ABI) -+ return FFI_BAD_ABI; -+ -+ tramp[0] = 0xe96c0018; /* 0: ld 11,2f-0b(12) */ -+ tramp[1] = 0xe98c0010; /* ld 12,1f-0b(12) */ -+ tramp[2] = 0x7d8903a6; /* mtctr 12 */ -+ tramp[3] = 0x4e800420; /* bctr */ -+ /* 1: .quad function_addr */ -+ /* 2: .quad context */ -+ *(void **) &tramp[4] = (void *) ffi_closure_LINUX64; -+ *(void **) &tramp[6] = codeloc; -+ flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE); -+#else -+ void **tramp = (void **) &closure->tramp[0]; -+ -+ if (cif->abi < FFI_LINUX || cif->abi >= FFI_LAST_ABI) -+ return FFI_BAD_ABI; -+ -+ /* Copy function address and TOC from ffi_closure_LINUX64. */ -+ memcpy (tramp, (char *) ffi_closure_LINUX64, 16); -+ tramp[2] = tramp[1]; -+ tramp[1] = codeloc; -+#endif -+ -+ closure->cif = cif; -+ closure->fun = fun; -+ closure->user_data = user_data; -+ -+ return FFI_OK; -+} -+ -+ -+int FFI_HIDDEN -+ffi_closure_helper_LINUX64 (ffi_closure *closure, void *rvalue, -+ unsigned long *pst, ffi_dblfl *pfr) -+{ -+ /* rvalue is the pointer to space for return value in closure assembly */ -+ /* pst is the pointer to parameter save area -+ (r3-r10 are stored into its first 8 slots by ffi_closure_LINUX64) */ -+ /* pfr is the pointer to where f1-f13 are stored in ffi_closure_LINUX64 */ -+ -+ void **avalue; -+ ffi_type **arg_types; -+ unsigned long i, avn, nfixedargs; -+ ffi_cif *cif; -+ ffi_dblfl *end_pfr = pfr + NUM_FPR_ARG_REGISTERS64; -+ unsigned long align; -+ -+ cif = closure->cif; -+ avalue = alloca (cif->nargs * sizeof (void *)); -+ -+ /* Copy the caller's structure return value address so that the -+ closure returns the data directly to the caller. */ -+ if (cif->rtype->type == FFI_TYPE_STRUCT -+ && (cif->flags & FLAG_RETURNS_SMST) == 0) -+ { -+ rvalue = (void *) *pst; -+ pst++; -+ } -+ -+ i = 0; -+ avn = cif->nargs; -+#if _CALL_ELF != 2 -+ nfixedargs = (unsigned) -1; -+ if ((cif->flags & FLAG_COMPAT) == 0) -+#endif -+ nfixedargs = cif->nfixedargs; -+ arg_types = cif->arg_types; -+ -+ /* Grab the addresses of the arguments from the stack frame. */ -+ while (i < avn) -+ { -+ unsigned int elt, elnum; -+ -+ switch (arg_types[i]->type) -+ { -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT8: -+#ifndef __LITTLE_ENDIAN__ -+ avalue[i] = (char *) pst + 7; -+ pst++; -+ break; -+#endif -+ -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT16: -+#ifndef __LITTLE_ENDIAN__ -+ avalue[i] = (char *) pst + 6; -+ pst++; -+ break; -+#endif -+ -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_UINT32: -+#ifndef __LITTLE_ENDIAN__ -+ avalue[i] = (char *) pst + 4; -+ pst++; -+ break; -+#endif -+ -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_POINTER: -+ avalue[i] = pst; -+ pst++; -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ if ((cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0) -+ { -+ align = arg_types[i]->alignment; -+ if (align > 16) -+ align = 16; -+ if (align > 1) -+ pst = (unsigned long *) ALIGN ((size_t) pst, align); -+ } -+ elt = 0; -+#if _CALL_ELF == 2 -+ elt = discover_homogeneous_aggregate (arg_types[i], &elnum); -+#endif -+ if (elt) -+ { -+ union { -+ void *v; -+ unsigned long *ul; -+ float *f; -+ double *d; -+ size_t p; -+ } to, from; -+ -+ /* Repackage the aggregate from its parts. The -+ aggregate size is not greater than the space taken by -+ the registers so store back to the register/parameter -+ save arrays. */ -+ if (pfr + elnum <= end_pfr) -+ to.v = pfr; -+ else -+ to.v = pst; -+ -+ avalue[i] = to.v; -+ from.ul = pst; -+ if (elt == FFI_TYPE_FLOAT) -+ { -+ do -+ { -+ if (pfr < end_pfr && i < nfixedargs) -+ { -+ *to.f = (float) pfr->d; -+ pfr++; -+ } -+ else -+ *to.f = *from.f; -+ to.f++; -+ from.f++; -+ } -+ while (--elnum != 0); -+ } -+ else -+ { -+ do -+ { -+ if (pfr < end_pfr && i < nfixedargs) -+ { -+ *to.d = pfr->d; -+ pfr++; -+ } -+ else -+ *to.d = *from.d; -+ to.d++; -+ from.d++; -+ } -+ while (--elnum != 0); -+ } -+ } -+ else -+ { -+#ifndef __LITTLE_ENDIAN__ -+ /* Structures with size less than eight bytes are passed -+ left-padded. */ -+ if (arg_types[i]->size < 8) -+ avalue[i] = (char *) pst + 8 - arg_types[i]->size; -+ else -+#endif -+ avalue[i] = pst; -+ } -+ pst += (arg_types[i]->size + 7) / 8; -+ break; -+ -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) -+ { -+ if (pfr + 1 < end_pfr && i + 1 < nfixedargs) -+ { -+ avalue[i] = pfr; -+ pfr += 2; -+ } -+ else -+ { -+ if (pfr < end_pfr && i < nfixedargs) -+ { -+ /* Passed partly in f13 and partly on the stack. -+ Move it all to the stack. */ -+ *pst = *(unsigned long *) pfr; -+ pfr++; -+ } -+ avalue[i] = pst; -+ } -+ pst += 2; -+ break; -+ } -+ /* Fall through. */ -+#endif -+ case FFI_TYPE_DOUBLE: -+ /* On the outgoing stack all values are aligned to 8 */ -+ /* there are 13 64bit floating point registers */ -+ -+ if (pfr < end_pfr && i < nfixedargs) -+ { -+ avalue[i] = pfr; -+ pfr++; -+ } -+ else -+ avalue[i] = pst; -+ pst++; -+ break; -+ -+ case FFI_TYPE_FLOAT: -+ if (pfr < end_pfr && i < nfixedargs) -+ { -+ /* Float values are stored as doubles in the -+ ffi_closure_LINUX64 code. Fix them here. */ -+ pfr->f = (float) pfr->d; -+ avalue[i] = pfr; -+ pfr++; -+ } -+ else -+ avalue[i] = pst; -+ pst++; -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ } -+ -+ i++; -+ } -+ -+ -+ (closure->fun) (cif, rvalue, avalue, closure->user_data); -+ -+ /* Tell ffi_closure_LINUX64 how to perform return type promotions. */ -+ if ((cif->flags & FLAG_RETURNS_SMST) != 0) -+ { -+ if ((cif->flags & FLAG_RETURNS_FP) == 0) -+ return FFI_V2_TYPE_SMALL_STRUCT + cif->rtype->size - 1; -+ else if ((cif->flags & FLAG_RETURNS_64BITS) != 0) -+ return FFI_V2_TYPE_DOUBLE_HOMOG; -+ else -+ return FFI_V2_TYPE_FLOAT_HOMOG; -+ } -+ return cif->rtype->type; -+} -+#endif -diff --git a/js/src/ctypes/libffi/src/powerpc/ffi_powerpc.h b/js/src/ctypes/libffi/src/powerpc/ffi_powerpc.h -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/powerpc/ffi_powerpc.h -@@ -0,0 +1,77 @@ -+/* ----------------------------------------------------------------------- -+ ffi_powerpc.h - Copyright (C) 2013 IBM -+ Copyright (C) 2011 Anthony Green -+ Copyright (C) 2011 Kyle Moffett -+ Copyright (C) 2008 Red Hat, Inc -+ Copyright (C) 2007, 2008 Free Software Foundation, Inc -+ Copyright (c) 1998 Geoffrey Keating -+ -+ PowerPC Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+enum { -+ /* The assembly depends on these exact flags. */ -+ /* These go in cr7 */ -+ FLAG_RETURNS_SMST = 1 << (31-31), /* Used for FFI_SYSV small structs. */ -+ FLAG_RETURNS_NOTHING = 1 << (31-30), -+ FLAG_RETURNS_FP = 1 << (31-29), -+ FLAG_RETURNS_64BITS = 1 << (31-28), -+ -+ /* This goes in cr6 */ -+ FLAG_RETURNS_128BITS = 1 << (31-27), -+ -+ FLAG_COMPAT = 1 << (31- 8), /* Not used by assembly */ -+ -+ /* These go in cr1 */ -+ FLAG_ARG_NEEDS_COPY = 1 << (31- 7), /* Used by sysv code */ -+ FLAG_ARG_NEEDS_PSAVE = FLAG_ARG_NEEDS_COPY, /* Used by linux64 code */ -+ FLAG_FP_ARGUMENTS = 1 << (31- 6), /* cr1.eq; specified by ABI */ -+ FLAG_4_GPR_ARGUMENTS = 1 << (31- 5), -+ FLAG_RETVAL_REFERENCE = 1 << (31- 4) -+}; -+ -+typedef union -+{ -+ float f; -+ double d; -+} ffi_dblfl; -+ -+void FFI_HIDDEN ffi_closure_SYSV (void); -+void FFI_HIDDEN ffi_call_SYSV(extended_cif *, unsigned, unsigned, unsigned *, -+ void (*)(void)); -+ -+void FFI_HIDDEN ffi_prep_types_sysv (ffi_abi); -+ffi_status FFI_HIDDEN ffi_prep_cif_sysv (ffi_cif *); -+int FFI_HIDDEN ffi_closure_helper_SYSV (ffi_closure *, void *, unsigned long *, -+ ffi_dblfl *, unsigned long *); -+ -+void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, unsigned long, unsigned long, -+ unsigned long *, void (*)(void)); -+void FFI_HIDDEN ffi_closure_LINUX64 (void); -+ -+void FFI_HIDDEN ffi_prep_types_linux64 (ffi_abi); -+ffi_status FFI_HIDDEN ffi_prep_cif_linux64 (ffi_cif *); -+ffi_status FFI_HIDDEN ffi_prep_cif_linux64_var (ffi_cif *, unsigned int, -+ unsigned int); -+void FFI_HIDDEN ffi_prep_args64 (extended_cif *, unsigned long *const); -+int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *, void *, -+ unsigned long *, ffi_dblfl *); -diff --git a/js/src/ctypes/libffi/src/powerpc/ffi_sysv.c b/js/src/ctypes/libffi/src/powerpc/ffi_sysv.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/powerpc/ffi_sysv.c -@@ -0,0 +1,931 @@ -+/* ----------------------------------------------------------------------- -+ ffi_sysv.c - Copyright (C) 2013 IBM -+ Copyright (C) 2011 Anthony Green -+ Copyright (C) 2011 Kyle Moffett -+ Copyright (C) 2008 Red Hat, Inc -+ Copyright (C) 2007, 2008 Free Software Foundation, Inc -+ Copyright (c) 1998 Geoffrey Keating -+ -+ PowerPC Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#include "ffi.h" -+ -+#ifndef POWERPC64 -+#include "ffi_common.h" -+#include "ffi_powerpc.h" -+ -+ -+/* About the SYSV ABI. */ -+#define ASM_NEEDS_REGISTERS 4 -+#define NUM_GPR_ARG_REGISTERS 8 -+#define NUM_FPR_ARG_REGISTERS 8 -+ -+ -+#if HAVE_LONG_DOUBLE_VARIANT && FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+/* Adjust size of ffi_type_longdouble. */ -+void FFI_HIDDEN -+ffi_prep_types_sysv (ffi_abi abi) -+{ -+ if ((abi & (FFI_SYSV | FFI_SYSV_LONG_DOUBLE_128)) == FFI_SYSV) -+ { -+ ffi_type_longdouble.size = 8; -+ ffi_type_longdouble.alignment = 8; -+ } -+ else -+ { -+ ffi_type_longdouble.size = 16; -+ ffi_type_longdouble.alignment = 16; -+ } -+} -+#endif -+ -+/* Transform long double, double and float to other types as per abi. */ -+static int -+translate_float (int abi, int type) -+{ -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ if (type == FFI_TYPE_LONGDOUBLE -+ && (abi & FFI_SYSV_LONG_DOUBLE_128) == 0) -+ type = FFI_TYPE_DOUBLE; -+#endif -+ if ((abi & FFI_SYSV_SOFT_FLOAT) != 0) -+ { -+ if (type == FFI_TYPE_FLOAT) -+ type = FFI_TYPE_UINT32; -+ else if (type == FFI_TYPE_DOUBLE) -+ type = FFI_TYPE_UINT64; -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ else if (type == FFI_TYPE_LONGDOUBLE) -+ type = FFI_TYPE_UINT128; -+ } -+ else if ((abi & FFI_SYSV_IBM_LONG_DOUBLE) == 0) -+ { -+ if (type == FFI_TYPE_LONGDOUBLE) -+ type = FFI_TYPE_STRUCT; -+#endif -+ } -+ return type; -+} -+ -+/* Perform machine dependent cif processing */ -+static ffi_status -+ffi_prep_cif_sysv_core (ffi_cif *cif) -+{ -+ ffi_type **ptr; -+ unsigned bytes; -+ unsigned i, fparg_count = 0, intarg_count = 0; -+ unsigned flags = cif->flags; -+ unsigned struct_copy_size = 0; -+ unsigned type = cif->rtype->type; -+ unsigned size = cif->rtype->size; -+ -+ /* The machine-independent calculation of cif->bytes doesn't work -+ for us. Redo the calculation. */ -+ -+ /* Space for the frame pointer, callee's LR, and the asm's temp regs. */ -+ bytes = (2 + ASM_NEEDS_REGISTERS) * sizeof (int); -+ -+ /* Space for the GPR registers. */ -+ bytes += NUM_GPR_ARG_REGISTERS * sizeof (int); -+ -+ /* Return value handling. The rules for SYSV are as follows: -+ - 32-bit (or less) integer values are returned in gpr3; -+ - Structures of size <= 4 bytes also returned in gpr3; -+ - 64-bit integer values and structures between 5 and 8 bytes are returned -+ in gpr3 and gpr4; -+ - Larger structures are allocated space and a pointer is passed as -+ the first argument. -+ - Single/double FP values are returned in fpr1; -+ - long doubles (if not equivalent to double) are returned in -+ fpr1,fpr2 for Linux and as for large structs for SysV. */ -+ -+ type = translate_float (cif->abi, type); -+ -+ switch (type) -+ { -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ flags |= FLAG_RETURNS_128BITS; -+ /* Fall through. */ -+#endif -+ case FFI_TYPE_DOUBLE: -+ flags |= FLAG_RETURNS_64BITS; -+ /* Fall through. */ -+ case FFI_TYPE_FLOAT: -+ flags |= FLAG_RETURNS_FP; -+#ifdef __NO_FPRS__ -+ return FFI_BAD_ABI; -+#endif -+ break; -+ -+ case FFI_TYPE_UINT128: -+ flags |= FLAG_RETURNS_128BITS; -+ /* Fall through. */ -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ flags |= FLAG_RETURNS_64BITS; -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ /* The final SYSV ABI says that structures smaller or equal 8 bytes -+ are returned in r3/r4. A draft ABI used by linux instead -+ returns them in memory. */ -+ if ((cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8) -+ { -+ flags |= FLAG_RETURNS_SMST; -+ break; -+ } -+ intarg_count++; -+ flags |= FLAG_RETVAL_REFERENCE; -+ /* Fall through. */ -+ case FFI_TYPE_VOID: -+ flags |= FLAG_RETURNS_NOTHING; -+ break; -+ -+ default: -+ /* Returns 32-bit integer, or similar. Nothing to do here. */ -+ break; -+ } -+ -+ /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the -+ first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest -+ goes on the stack. Structures and long doubles (if not equivalent -+ to double) are passed as a pointer to a copy of the structure. -+ Stuff on the stack needs to keep proper alignment. */ -+ for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) -+ { -+ unsigned short typenum = (*ptr)->type; -+ -+ typenum = translate_float (cif->abi, typenum); -+ -+ switch (typenum) -+ { -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ fparg_count++; -+ /* Fall thru */ -+#endif -+ case FFI_TYPE_DOUBLE: -+ fparg_count++; -+ /* If this FP arg is going on the stack, it must be -+ 8-byte-aligned. */ -+ if (fparg_count > NUM_FPR_ARG_REGISTERS -+ && intarg_count >= NUM_GPR_ARG_REGISTERS -+ && intarg_count % 2 != 0) -+ intarg_count++; -+#ifdef __NO_FPRS__ -+ return FFI_BAD_ABI; -+#endif -+ break; -+ -+ case FFI_TYPE_FLOAT: -+ fparg_count++; -+#ifdef __NO_FPRS__ -+ return FFI_BAD_ABI; -+#endif -+ break; -+ -+ case FFI_TYPE_UINT128: -+ /* A long double in FFI_LINUX_SOFT_FLOAT can use only a set -+ of four consecutive gprs. If we do not have enough, we -+ have to adjust the intarg_count value. */ -+ if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3 -+ && intarg_count < NUM_GPR_ARG_REGISTERS) -+ intarg_count = NUM_GPR_ARG_REGISTERS; -+ intarg_count += 4; -+ break; -+ -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ /* 'long long' arguments are passed as two words, but -+ either both words must fit in registers or both go -+ on the stack. If they go on the stack, they must -+ be 8-byte-aligned. -+ -+ Also, only certain register pairs can be used for -+ passing long long int -- specifically (r3,r4), (r5,r6), -+ (r7,r8), (r9,r10). */ -+ if (intarg_count == NUM_GPR_ARG_REGISTERS-1 -+ || intarg_count % 2 != 0) -+ intarg_count++; -+ intarg_count += 2; -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ /* We must allocate space for a copy of these to enforce -+ pass-by-value. Pad the space up to a multiple of 16 -+ bytes (the maximum alignment required for anything under -+ the SYSV ABI). */ -+ struct_copy_size += ((*ptr)->size + 15) & ~0xF; -+ /* Fall through (allocate space for the pointer). */ -+ -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT8: -+ /* Everything else is passed as a 4-byte word in a GPR, either -+ the object itself or a pointer to it. */ -+ intarg_count++; -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ } -+ } -+ -+ if (fparg_count != 0) -+ flags |= FLAG_FP_ARGUMENTS; -+ if (intarg_count > 4) -+ flags |= FLAG_4_GPR_ARGUMENTS; -+ if (struct_copy_size != 0) -+ flags |= FLAG_ARG_NEEDS_COPY; -+ -+ /* Space for the FPR registers, if needed. */ -+ if (fparg_count != 0) -+ bytes += NUM_FPR_ARG_REGISTERS * sizeof (double); -+ -+ /* Stack space. */ -+ if (intarg_count > NUM_GPR_ARG_REGISTERS) -+ bytes += (intarg_count - NUM_GPR_ARG_REGISTERS) * sizeof (int); -+ if (fparg_count > NUM_FPR_ARG_REGISTERS) -+ bytes += (fparg_count - NUM_FPR_ARG_REGISTERS) * sizeof (double); -+ -+ /* The stack space allocated needs to be a multiple of 16 bytes. */ -+ bytes = (bytes + 15) & ~0xF; -+ -+ /* Add in the space for the copied structures. */ -+ bytes += struct_copy_size; -+ -+ cif->flags = flags; -+ cif->bytes = bytes; -+ -+ return FFI_OK; -+} -+ -+ffi_status FFI_HIDDEN -+ffi_prep_cif_sysv (ffi_cif *cif) -+{ -+ if ((cif->abi & FFI_SYSV) == 0) -+ { -+ /* This call is from old code. Translate to new ABI values. */ -+ cif->flags |= FLAG_COMPAT; -+ switch (cif->abi) -+ { -+ default: -+ return FFI_BAD_ABI; -+ -+ case FFI_COMPAT_SYSV: -+ cif->abi = FFI_SYSV | FFI_SYSV_STRUCT_RET | FFI_SYSV_LONG_DOUBLE_128; -+ break; -+ -+ case FFI_COMPAT_GCC_SYSV: -+ cif->abi = FFI_SYSV | FFI_SYSV_LONG_DOUBLE_128; -+ break; -+ -+ case FFI_COMPAT_LINUX: -+ cif->abi = (FFI_SYSV | FFI_SYSV_IBM_LONG_DOUBLE -+ | FFI_SYSV_LONG_DOUBLE_128); -+ break; -+ -+ case FFI_COMPAT_LINUX_SOFT_FLOAT: -+ cif->abi = (FFI_SYSV | FFI_SYSV_SOFT_FLOAT | FFI_SYSV_IBM_LONG_DOUBLE -+ | FFI_SYSV_LONG_DOUBLE_128); -+ break; -+ } -+ } -+ return ffi_prep_cif_sysv_core (cif); -+} -+ -+/* ffi_prep_args_SYSV is called by the assembly routine once stack space -+ has been allocated for the function's arguments. -+ -+ The stack layout we want looks like this: -+ -+ | Return address from ffi_call_SYSV 4bytes | higher addresses -+ |--------------------------------------------| -+ | Previous backchain pointer 4 | stack pointer here -+ |--------------------------------------------|<+ <<< on entry to -+ | Saved r28-r31 4*4 | | ffi_call_SYSV -+ |--------------------------------------------| | -+ | GPR registers r3-r10 8*4 | | ffi_call_SYSV -+ |--------------------------------------------| | -+ | FPR registers f1-f8 (optional) 8*8 | | -+ |--------------------------------------------| | stack | -+ | Space for copied structures | | grows | -+ |--------------------------------------------| | down V -+ | Parameters that didn't fit in registers | | -+ |--------------------------------------------| | lower addresses -+ | Space for callee's LR 4 | | -+ |--------------------------------------------| | stack pointer here -+ | Current backchain pointer 4 |-/ during -+ |--------------------------------------------| <<< ffi_call_SYSV -+ -+*/ -+ -+void FFI_HIDDEN -+ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack) -+{ -+ const unsigned bytes = ecif->cif->bytes; -+ const unsigned flags = ecif->cif->flags; -+ -+ typedef union -+ { -+ char *c; -+ unsigned *u; -+ long long *ll; -+ float *f; -+ double *d; -+ } valp; -+ -+ /* 'stacktop' points at the previous backchain pointer. */ -+ valp stacktop; -+ -+ /* 'gpr_base' points at the space for gpr3, and grows upwards as -+ we use GPR registers. */ -+ valp gpr_base; -+ int intarg_count; -+ -+#ifndef __NO_FPRS__ -+ /* 'fpr_base' points at the space for fpr1, and grows upwards as -+ we use FPR registers. */ -+ valp fpr_base; -+ int fparg_count; -+#endif -+ -+ /* 'copy_space' grows down as we put structures in it. It should -+ stay 16-byte aligned. */ -+ valp copy_space; -+ -+ /* 'next_arg' grows up as we put parameters in it. */ -+ valp next_arg; -+ -+ int i; -+ ffi_type **ptr; -+#ifndef __NO_FPRS__ -+ double double_tmp; -+#endif -+ union -+ { -+ void **v; -+ char **c; -+ signed char **sc; -+ unsigned char **uc; -+ signed short **ss; -+ unsigned short **us; -+ unsigned int **ui; -+ long long **ll; -+ float **f; -+ double **d; -+ } p_argv; -+ size_t struct_copy_size; -+ unsigned gprvalue; -+ -+ stacktop.c = (char *) stack + bytes; -+ gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS; -+ intarg_count = 0; -+#ifndef __NO_FPRS__ -+ fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS; -+ fparg_count = 0; -+ copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c); -+#else -+ copy_space.c = gpr_base.c; -+#endif -+ next_arg.u = stack + 2; -+ -+ /* Check that everything starts aligned properly. */ -+ FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0); -+ FFI_ASSERT (((unsigned long) copy_space.c & 0xF) == 0); -+ FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0); -+ FFI_ASSERT ((bytes & 0xF) == 0); -+ FFI_ASSERT (copy_space.c >= next_arg.c); -+ -+ /* Deal with return values that are actually pass-by-reference. */ -+ if (flags & FLAG_RETVAL_REFERENCE) -+ { -+ *gpr_base.u++ = (unsigned long) (char *) ecif->rvalue; -+ intarg_count++; -+ } -+ -+ /* Now for the arguments. */ -+ p_argv.v = ecif->avalue; -+ for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs; -+ i > 0; -+ i--, ptr++, p_argv.v++) -+ { -+ unsigned int typenum = (*ptr)->type; -+ -+ typenum = translate_float (ecif->cif->abi, typenum); -+ -+ /* Now test the translated value */ -+ switch (typenum) -+ { -+#ifndef __NO_FPRS__ -+# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ double_tmp = (*p_argv.d)[0]; -+ -+ if (fparg_count >= NUM_FPR_ARG_REGISTERS - 1) -+ { -+ if (intarg_count >= NUM_GPR_ARG_REGISTERS -+ && intarg_count % 2 != 0) -+ { -+ intarg_count++; -+ next_arg.u++; -+ } -+ *next_arg.d = double_tmp; -+ next_arg.u += 2; -+ double_tmp = (*p_argv.d)[1]; -+ *next_arg.d = double_tmp; -+ next_arg.u += 2; -+ } -+ else -+ { -+ *fpr_base.d++ = double_tmp; -+ double_tmp = (*p_argv.d)[1]; -+ *fpr_base.d++ = double_tmp; -+ } -+ -+ fparg_count += 2; -+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); -+ break; -+# endif -+ case FFI_TYPE_DOUBLE: -+ double_tmp = **p_argv.d; -+ -+ if (fparg_count >= NUM_FPR_ARG_REGISTERS) -+ { -+ if (intarg_count >= NUM_GPR_ARG_REGISTERS -+ && intarg_count % 2 != 0) -+ { -+ intarg_count++; -+ next_arg.u++; -+ } -+ *next_arg.d = double_tmp; -+ next_arg.u += 2; -+ } -+ else -+ *fpr_base.d++ = double_tmp; -+ fparg_count++; -+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); -+ break; -+ -+ case FFI_TYPE_FLOAT: -+ double_tmp = **p_argv.f; -+ if (fparg_count >= NUM_FPR_ARG_REGISTERS) -+ { -+ *next_arg.f = (float) double_tmp; -+ next_arg.u += 1; -+ intarg_count++; -+ } -+ else -+ *fpr_base.d++ = double_tmp; -+ fparg_count++; -+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); -+ break; -+#endif /* have FPRs */ -+ -+ case FFI_TYPE_UINT128: -+ /* The soft float ABI for long doubles works like this, a long double -+ is passed in four consecutive GPRs if available. A maximum of 2 -+ long doubles can be passed in gprs. If we do not have 4 GPRs -+ left, the long double is passed on the stack, 4-byte aligned. */ -+ { -+ unsigned int int_tmp; -+ unsigned int ii; -+ if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3) -+ { -+ if (intarg_count < NUM_GPR_ARG_REGISTERS) -+ intarg_count = NUM_GPR_ARG_REGISTERS; -+ for (ii = 0; ii < 4; ii++) -+ { -+ int_tmp = (*p_argv.ui)[ii]; -+ *next_arg.u++ = int_tmp; -+ } -+ } -+ else -+ { -+ for (ii = 0; ii < 4; ii++) -+ { -+ int_tmp = (*p_argv.ui)[ii]; -+ *gpr_base.u++ = int_tmp; -+ } -+ } -+ intarg_count += 4; -+ break; -+ } -+ -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ if (intarg_count == NUM_GPR_ARG_REGISTERS-1) -+ intarg_count++; -+ if (intarg_count >= NUM_GPR_ARG_REGISTERS) -+ { -+ if (intarg_count % 2 != 0) -+ { -+ intarg_count++; -+ next_arg.u++; -+ } -+ *next_arg.ll = **p_argv.ll; -+ next_arg.u += 2; -+ } -+ else -+ { -+ /* The abi states only certain register pairs can be -+ used for passing long long int specifically (r3,r4), -+ (r5,r6), (r7,r8), (r9,r10). If next arg is long long -+ but not correct starting register of pair then skip -+ until the proper starting register. */ -+ if (intarg_count % 2 != 0) -+ { -+ intarg_count ++; -+ gpr_base.u++; -+ } -+ *gpr_base.ll++ = **p_argv.ll; -+ } -+ intarg_count += 2; -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ struct_copy_size = ((*ptr)->size + 15) & ~0xF; -+ copy_space.c -= struct_copy_size; -+ memcpy (copy_space.c, *p_argv.c, (*ptr)->size); -+ -+ gprvalue = (unsigned long) copy_space.c; -+ -+ FFI_ASSERT (copy_space.c > next_arg.c); -+ FFI_ASSERT (flags & FLAG_ARG_NEEDS_COPY); -+ goto putgpr; -+ -+ case FFI_TYPE_UINT8: -+ gprvalue = **p_argv.uc; -+ goto putgpr; -+ case FFI_TYPE_SINT8: -+ gprvalue = **p_argv.sc; -+ goto putgpr; -+ case FFI_TYPE_UINT16: -+ gprvalue = **p_argv.us; -+ goto putgpr; -+ case FFI_TYPE_SINT16: -+ gprvalue = **p_argv.ss; -+ goto putgpr; -+ -+ case FFI_TYPE_INT: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_POINTER: -+ -+ gprvalue = **p_argv.ui; -+ -+ putgpr: -+ if (intarg_count >= NUM_GPR_ARG_REGISTERS) -+ *next_arg.u++ = gprvalue; -+ else -+ *gpr_base.u++ = gprvalue; -+ intarg_count++; -+ break; -+ } -+ } -+ -+ /* Check that we didn't overrun the stack... */ -+ FFI_ASSERT (copy_space.c >= next_arg.c); -+ FFI_ASSERT (gpr_base.u <= stacktop.u - ASM_NEEDS_REGISTERS); -+ /* The assert below is testing that the number of integer arguments agrees -+ with the number found in ffi_prep_cif_machdep(). However, intarg_count -+ is incremented whenever we place an FP arg on the stack, so account for -+ that before our assert test. */ -+#ifndef __NO_FPRS__ -+ if (fparg_count > NUM_FPR_ARG_REGISTERS) -+ intarg_count -= fparg_count - NUM_FPR_ARG_REGISTERS; -+ FFI_ASSERT (fpr_base.u -+ <= stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS); -+#endif -+ FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4); -+} -+ -+#define MIN_CACHE_LINE_SIZE 8 -+ -+static void -+flush_icache (char *wraddr, char *xaddr, int size) -+{ -+ int i; -+ for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE) -+ __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" -+ : : "r" (xaddr + i), "r" (wraddr + i) : "memory"); -+ __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;" -+ : : "r"(xaddr + size - 1), "r"(wraddr + size - 1) -+ : "memory"); -+} -+ -+ffi_status FFI_HIDDEN -+ffi_prep_closure_loc_sysv (ffi_closure *closure, -+ ffi_cif *cif, -+ void (*fun) (ffi_cif *, void *, void **, void *), -+ void *user_data, -+ void *codeloc) -+{ -+ unsigned int *tramp; -+ -+ if (cif->abi < FFI_SYSV || cif->abi >= FFI_LAST_ABI) -+ return FFI_BAD_ABI; -+ -+ tramp = (unsigned int *) &closure->tramp[0]; -+ tramp[0] = 0x7c0802a6; /* mflr r0 */ -+ tramp[1] = 0x4800000d; /* bl 10 */ -+ tramp[4] = 0x7d6802a6; /* mflr r11 */ -+ tramp[5] = 0x7c0803a6; /* mtlr r0 */ -+ tramp[6] = 0x800b0000; /* lwz r0,0(r11) */ -+ tramp[7] = 0x816b0004; /* lwz r11,4(r11) */ -+ tramp[8] = 0x7c0903a6; /* mtctr r0 */ -+ tramp[9] = 0x4e800420; /* bctr */ -+ *(void **) &tramp[2] = (void *) ffi_closure_SYSV; /* function */ -+ *(void **) &tramp[3] = codeloc; /* context */ -+ -+ /* Flush the icache. */ -+ flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE); -+ -+ closure->cif = cif; -+ closure->fun = fun; -+ closure->user_data = user_data; -+ -+ return FFI_OK; -+} -+ -+/* Basically the trampoline invokes ffi_closure_SYSV, and on -+ entry, r11 holds the address of the closure. -+ After storing the registers that could possibly contain -+ parameters to be passed into the stack frame and setting -+ up space for a return value, ffi_closure_SYSV invokes the -+ following helper function to do most of the work. */ -+ -+int -+ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, -+ unsigned long *pgr, ffi_dblfl *pfr, -+ unsigned long *pst) -+{ -+ /* rvalue is the pointer to space for return value in closure assembly */ -+ /* pgr is the pointer to where r3-r10 are stored in ffi_closure_SYSV */ -+ /* pfr is the pointer to where f1-f8 are stored in ffi_closure_SYSV */ -+ /* pst is the pointer to outgoing parameter stack in original caller */ -+ -+ void ** avalue; -+ ffi_type ** arg_types; -+ long i, avn; -+#ifndef __NO_FPRS__ -+ long nf = 0; /* number of floating registers already used */ -+#endif -+ long ng = 0; /* number of general registers already used */ -+ -+ ffi_cif *cif = closure->cif; -+ unsigned size = cif->rtype->size; -+ unsigned short rtypenum = cif->rtype->type; -+ -+ avalue = alloca (cif->nargs * sizeof (void *)); -+ -+ /* First translate for softfloat/nonlinux */ -+ rtypenum = translate_float (cif->abi, rtypenum); -+ -+ /* Copy the caller's structure return value address so that the closure -+ returns the data directly to the caller. -+ For FFI_SYSV the result is passed in r3/r4 if the struct size is less -+ or equal 8 bytes. */ -+ if (rtypenum == FFI_TYPE_STRUCT -+ && !((cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8)) -+ { -+ rvalue = (void *) *pgr; -+ ng++; -+ pgr++; -+ } -+ -+ i = 0; -+ avn = cif->nargs; -+ arg_types = cif->arg_types; -+ -+ /* Grab the addresses of the arguments from the stack frame. */ -+ while (i < avn) { -+ unsigned short typenum = arg_types[i]->type; -+ -+ /* We may need to handle some values depending on ABI. */ -+ typenum = translate_float (cif->abi, typenum); -+ -+ switch (typenum) -+ { -+#ifndef __NO_FPRS__ -+ case FFI_TYPE_FLOAT: -+ /* Unfortunately float values are stored as doubles -+ in the ffi_closure_SYSV code (since we don't check -+ the type in that routine). */ -+ if (nf < NUM_FPR_ARG_REGISTERS) -+ { -+ /* FIXME? here we are really changing the values -+ stored in the original calling routines outgoing -+ parameter stack. This is probably a really -+ naughty thing to do but... */ -+ double temp = pfr->d; -+ pfr->f = (float) temp; -+ avalue[i] = pfr; -+ nf++; -+ pfr++; -+ } -+ else -+ { -+ avalue[i] = pst; -+ pst += 1; -+ } -+ break; -+ -+ case FFI_TYPE_DOUBLE: -+ if (nf < NUM_FPR_ARG_REGISTERS) -+ { -+ avalue[i] = pfr; -+ nf++; -+ pfr++; -+ } -+ else -+ { -+ if (((long) pst) & 4) -+ pst++; -+ avalue[i] = pst; -+ pst += 2; -+ } -+ break; -+ -+# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ case FFI_TYPE_LONGDOUBLE: -+ if (nf < NUM_FPR_ARG_REGISTERS - 1) -+ { -+ avalue[i] = pfr; -+ pfr += 2; -+ nf += 2; -+ } -+ else -+ { -+ if (((long) pst) & 4) -+ pst++; -+ avalue[i] = pst; -+ pst += 4; -+ nf = 8; -+ } -+ break; -+# endif -+#endif -+ -+ case FFI_TYPE_UINT128: -+ /* Test if for the whole long double, 4 gprs are available. -+ otherwise the stuff ends up on the stack. */ -+ if (ng < NUM_GPR_ARG_REGISTERS - 3) -+ { -+ avalue[i] = pgr; -+ pgr += 4; -+ ng += 4; -+ } -+ else -+ { -+ avalue[i] = pst; -+ pst += 4; -+ ng = 8+4; -+ } -+ break; -+ -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT8: -+#ifndef __LITTLE_ENDIAN__ -+ if (ng < NUM_GPR_ARG_REGISTERS) -+ { -+ avalue[i] = (char *) pgr + 3; -+ ng++; -+ pgr++; -+ } -+ else -+ { -+ avalue[i] = (char *) pst + 3; -+ pst++; -+ } -+ break; -+#endif -+ -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT16: -+#ifndef __LITTLE_ENDIAN__ -+ if (ng < NUM_GPR_ARG_REGISTERS) -+ { -+ avalue[i] = (char *) pgr + 2; -+ ng++; -+ pgr++; -+ } -+ else -+ { -+ avalue[i] = (char *) pst + 2; -+ pst++; -+ } -+ break; -+#endif -+ -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_POINTER: -+ if (ng < NUM_GPR_ARG_REGISTERS) -+ { -+ avalue[i] = pgr; -+ ng++; -+ pgr++; -+ } -+ else -+ { -+ avalue[i] = pst; -+ pst++; -+ } -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ /* Structs are passed by reference. The address will appear in a -+ gpr if it is one of the first 8 arguments. */ -+ if (ng < NUM_GPR_ARG_REGISTERS) -+ { -+ avalue[i] = (void *) *pgr; -+ ng++; -+ pgr++; -+ } -+ else -+ { -+ avalue[i] = (void *) *pst; -+ pst++; -+ } -+ break; -+ -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_UINT64: -+ /* Passing long long ints are complex, they must -+ be passed in suitable register pairs such as -+ (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10) -+ and if the entire pair aren't available then the outgoing -+ parameter stack is used for both but an alignment of 8 -+ must will be kept. So we must either look in pgr -+ or pst to find the correct address for this type -+ of parameter. */ -+ if (ng < NUM_GPR_ARG_REGISTERS - 1) -+ { -+ if (ng & 1) -+ { -+ /* skip r4, r6, r8 as starting points */ -+ ng++; -+ pgr++; -+ } -+ avalue[i] = pgr; -+ ng += 2; -+ pgr += 2; -+ } -+ else -+ { -+ if (((long) pst) & 4) -+ pst++; -+ avalue[i] = pst; -+ pst += 2; -+ ng = NUM_GPR_ARG_REGISTERS; -+ } -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ } -+ -+ i++; -+ } -+ -+ (closure->fun) (cif, rvalue, avalue, closure->user_data); -+ -+ /* Tell ffi_closure_SYSV how to perform return type promotions. -+ Because the FFI_SYSV ABI returns the structures <= 8 bytes in -+ r3/r4 we have to tell ffi_closure_SYSV how to treat them. We -+ combine the base type FFI_SYSV_TYPE_SMALL_STRUCT with the size of -+ the struct less one. We never have a struct with size zero. -+ See the comment in ffitarget.h about ordering. */ -+ if (rtypenum == FFI_TYPE_STRUCT -+ && (cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8) -+ return FFI_SYSV_TYPE_SMALL_STRUCT - 1 + size; -+ return rtypenum; -+} -+#endif -diff --git a/js/src/ctypes/libffi/src/powerpc/ffitarget.h b/js/src/ctypes/libffi/src/powerpc/ffitarget.h ---- a/js/src/ctypes/libffi/src/powerpc/ffitarget.h -+++ b/js/src/ctypes/libffi/src/powerpc/ffitarget.h -@@ -35,72 +35,106 @@ - #endif - - /* ---- System specific configurations ----------------------------------- */ - - #if defined (POWERPC) && defined (__powerpc64__) /* linux64 */ - #ifndef POWERPC64 - #define POWERPC64 - #endif --#elif defined (POWERPC_DARWIN) && defined (__ppc64__) /* Darwin */ -+#elif defined (POWERPC_DARWIN) && defined (__ppc64__) /* Darwin64 */ - #ifndef POWERPC64 - #define POWERPC64 - #endif -+#ifndef POWERPC_DARWIN64 -+#define POWERPC_DARWIN64 -+#endif - #elif defined (POWERPC_AIX) && defined (__64BIT__) /* AIX64 */ - #ifndef POWERPC64 - #define POWERPC64 - #endif - #endif - - #ifndef LIBFFI_ASM - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, - --#ifdef POWERPC -- FFI_SYSV, -- FFI_GCC_SYSV, -- FFI_LINUX64, -- FFI_LINUX, -- FFI_LINUX_SOFT_FLOAT, --# if defined(POWERPC64) -- FFI_DEFAULT_ABI = FFI_LINUX64, --# elif defined(__NO_FPRS__) -- FFI_DEFAULT_ABI = FFI_LINUX_SOFT_FLOAT, --# elif (__LDBL_MANT_DIG__ == 106) -- FFI_DEFAULT_ABI = FFI_LINUX, -+#if defined (POWERPC_AIX) -+ FFI_AIX, -+ FFI_DARWIN, -+ FFI_DEFAULT_ABI = FFI_AIX, -+ FFI_LAST_ABI -+ -+#elif defined (POWERPC_DARWIN) -+ FFI_AIX, -+ FFI_DARWIN, -+ FFI_DEFAULT_ABI = FFI_DARWIN, -+ FFI_LAST_ABI -+ -+#else -+ /* The FFI_COMPAT values are used by old code. Since libffi may be -+ a shared library we have to support old values for backwards -+ compatibility. */ -+ FFI_COMPAT_SYSV, -+ FFI_COMPAT_GCC_SYSV, -+ FFI_COMPAT_LINUX64, -+ FFI_COMPAT_LINUX, -+ FFI_COMPAT_LINUX_SOFT_FLOAT, -+ -+# if defined (POWERPC64) -+ /* This bit, always set in new code, must not be set in any of the -+ old FFI_COMPAT values that might be used for 64-bit linux. We -+ only need worry about FFI_COMPAT_LINUX64, but to be safe avoid -+ all old values. */ -+ FFI_LINUX = 8, -+ /* This and following bits can reuse FFI_COMPAT values. */ -+ FFI_LINUX_STRUCT_ALIGN = 1, -+ FFI_LINUX_LONG_DOUBLE_128 = 2, -+ FFI_DEFAULT_ABI = (FFI_LINUX -+# ifdef __STRUCT_PARM_ALIGN__ -+ | FFI_LINUX_STRUCT_ALIGN -+# endif -+# ifdef __LONG_DOUBLE_128__ -+ | FFI_LINUX_LONG_DOUBLE_128 -+# endif -+ ), -+ FFI_LAST_ABI = 12 -+ - # else -- FFI_DEFAULT_ABI = FFI_GCC_SYSV, -+ /* This bit, always set in new code, must not be set in any of the -+ old FFI_COMPAT values that might be used for 32-bit linux/sysv/bsd. */ -+ FFI_SYSV = 8, -+ /* This and following bits can reuse FFI_COMPAT values. */ -+ FFI_SYSV_SOFT_FLOAT = 1, -+ FFI_SYSV_STRUCT_RET = 2, -+ FFI_SYSV_IBM_LONG_DOUBLE = 4, -+ FFI_SYSV_LONG_DOUBLE_128 = 16, -+ -+ FFI_DEFAULT_ABI = (FFI_SYSV -+# ifdef __NO_FPRS__ -+ | FFI_SYSV_SOFT_FLOAT -+# endif -+# if (defined (__SVR4_STRUCT_RETURN) \ -+ || defined (POWERPC_FREEBSD) && !defined (__AIX_STRUCT_RETURN)) -+ | FFI_SYSV_STRUCT_RET -+# endif -+# if __LDBL_MANT_DIG__ == 106 -+ | FFI_SYSV_IBM_LONG_DOUBLE -+# endif -+# ifdef __LONG_DOUBLE_128__ -+ | FFI_SYSV_LONG_DOUBLE_128 -+# endif -+ ), -+ FFI_LAST_ABI = 32 - # endif - #endif - --#ifdef POWERPC_AIX -- FFI_AIX, -- FFI_DARWIN, -- FFI_DEFAULT_ABI = FFI_AIX, --#endif -- --#ifdef POWERPC_DARWIN -- FFI_AIX, -- FFI_DARWIN, -- FFI_DEFAULT_ABI = FFI_DARWIN, --#endif -- --#ifdef POWERPC_FREEBSD -- FFI_SYSV, -- FFI_GCC_SYSV, -- FFI_LINUX64, -- FFI_LINUX, -- FFI_LINUX_SOFT_FLOAT, -- FFI_DEFAULT_ABI = FFI_SYSV, --#endif -- -- FFI_LAST_ABI - } ffi_abi; - #endif - - /* ---- Definitions for closures ----------------------------------------- */ - - #define FFI_CLOSURES 1 - #define FFI_NATIVE_RAW_API 0 - #if defined (POWERPC) || defined (POWERPC_FREEBSD) -@@ -109,31 +143,33 @@ typedef enum ffi_abi { - #endif - - /* For additional types like the below, take care about the order in - ppc_closures.S. They must follow after the FFI_TYPE_LAST. */ - - /* Needed for soft-float long-double-128 support. */ - #define FFI_TYPE_UINT128 (FFI_TYPE_LAST + 1) - --/* Needed for FFI_SYSV small structure returns. -- We use two flag bits, (FLAG_SYSV_SMST_R3, FLAG_SYSV_SMST_R4) which are -- defined in ffi.c, to determine the exact return type and its size. */ -+/* Needed for FFI_SYSV small structure returns. */ - #define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_TYPE_LAST + 2) - - /* Used by ELFv2 for homogenous structure returns. */ - #define FFI_V2_TYPE_FLOAT_HOMOG (FFI_TYPE_LAST + 1) - #define FFI_V2_TYPE_DOUBLE_HOMOG (FFI_TYPE_LAST + 2) - #define FFI_V2_TYPE_SMALL_STRUCT (FFI_TYPE_LAST + 3) - - #if _CALL_ELF == 2 - # define FFI_TRAMPOLINE_SIZE 32 - #else - # if defined(POWERPC64) || defined(POWERPC_AIX) --# define FFI_TRAMPOLINE_SIZE 24 -+# if defined(POWERPC_DARWIN64) -+# define FFI_TRAMPOLINE_SIZE 48 -+# else -+# define FFI_TRAMPOLINE_SIZE 24 -+# endif - # else /* POWERPC || POWERPC_AIX */ - # define FFI_TRAMPOLINE_SIZE 40 - # endif - #endif - - #ifndef LIBFFI_ASM - #if defined(POWERPC_DARWIN) || defined(POWERPC_AIX) - struct ffi_aix_trampoline_struct { -diff --git a/js/src/ctypes/libffi/src/powerpc/linux64.S b/js/src/ctypes/libffi/src/powerpc/linux64.S ---- a/js/src/ctypes/libffi/src/powerpc/linux64.S -+++ b/js/src/ctypes/libffi/src/powerpc/linux64.S -@@ -24,17 +24,17 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - ----------------------------------------------------------------------- */ - - #define LIBFFI_ASM - #include - #include - --#ifdef __powerpc64__ -+#ifdef POWERPC64 - .hidden ffi_call_LINUX64 - .globl ffi_call_LINUX64 - # if _CALL_ELF == 2 - .text - ffi_call_LINUX64: - addis %r2, %r12, .TOC.-ffi_call_LINUX64@ha - addi %r2, %r2, .TOC.-ffi_call_LINUX64@l - .localentry ffi_call_LINUX64, . - ffi_call_LINUX64 -diff --git a/js/src/ctypes/libffi/src/powerpc/linux64_closure.S b/js/src/ctypes/libffi/src/powerpc/linux64_closure.S ---- a/js/src/ctypes/libffi/src/powerpc/linux64_closure.S -+++ b/js/src/ctypes/libffi/src/powerpc/linux64_closure.S -@@ -25,17 +25,17 @@ - DEALINGS IN THE SOFTWARE. - ----------------------------------------------------------------------- */ - #define LIBFFI_ASM - #include - #include - - .file "linux64_closure.S" - --#ifdef __powerpc64__ -+#ifdef POWERPC64 - FFI_HIDDEN (ffi_closure_LINUX64) - .globl ffi_closure_LINUX64 - # if _CALL_ELF == 2 - .text - ffi_closure_LINUX64: - addis %r2, %r12, .TOC.-ffi_closure_LINUX64@ha - addi %r2, %r2, .TOC.-ffi_closure_LINUX64@l - .localentry ffi_closure_LINUX64, . - ffi_closure_LINUX64 -@@ -95,16 +95,20 @@ ffi_closure_LINUX64: - std %r7, 32(%r12) - std %r8, 40(%r12) - std %r9, 48(%r12) - std %r10, 56(%r12) - - # load up the pointer to the parm save area - mr %r5, %r12 - # else -+ # copy r2 to r11 and load TOC into r2 -+ mr %r11, %r2 -+ ld %r2, 16(%r11) -+ - mflr %r0 - # Save general regs into parm save area - # This is the parameter save area set up by our caller. - std %r3, PARMSAVE+0(%r1) - std %r4, PARMSAVE+8(%r1) - std %r5, PARMSAVE+16(%r1) - std %r6, PARMSAVE+24(%r1) - std %r7, PARMSAVE+32(%r1) -diff --git a/js/src/ctypes/libffi/src/powerpc/ppc_closure.S b/js/src/ctypes/libffi/src/powerpc/ppc_closure.S ---- a/js/src/ctypes/libffi/src/powerpc/ppc_closure.S -+++ b/js/src/ctypes/libffi/src/powerpc/ppc_closure.S -@@ -26,17 +26,17 @@ - ----------------------------------------------------------------------- */ - #define LIBFFI_ASM - #include - #include - #include - - .file "ppc_closure.S" - --#ifndef __powerpc64__ -+#ifndef POWERPC64 - - ENTRY(ffi_closure_SYSV) - .LFB1: - stwu %r1,-144(%r1) - .LCFI0: - mflr %r0 - .LCFI1: - stw %r0,148(%r1) -@@ -322,17 +322,17 @@ ENTRY(ffi_closure_SYSV) - blr - #endif - - .Luint128: - lwz %r6,112+12(%r1) - mtlr %r0 - addi %r1,%r1,144 - blr -- -+ - END(ffi_closure_SYSV) - - .section ".eh_frame",EH_FRAME_FLAGS,@progbits - .Lframe1: - .4byte .LECIE1-.LSCIE1 # Length of Common Information Entry - .LSCIE1: - .4byte 0x0 # CIE Identifier Tag - .byte 0x1 # CIE Version -@@ -373,13 +373,12 @@ END(ffi_closure_SYSV) - .byte 0x4 # DW_CFA_advance_loc4 - .4byte .LCFI1-.LCFI0 - .byte 0x11 # DW_CFA_offset_extended_sf - .uleb128 0x41 - .sleb128 -1 - .align 2 - .LEFDE1: - --#endif -- - #if defined __ELF__ && defined __linux__ - .section .note.GNU-stack,"",@progbits - #endif -+#endif -diff --git a/js/src/ctypes/libffi/src/powerpc/sysv.S b/js/src/ctypes/libffi/src/powerpc/sysv.S ---- a/js/src/ctypes/libffi/src/powerpc/sysv.S -+++ b/js/src/ctypes/libffi/src/powerpc/sysv.S -@@ -25,17 +25,17 @@ - DEALINGS IN THE SOFTWARE. - ----------------------------------------------------------------------- */ - - #define LIBFFI_ASM - #include - #include - #include - --#ifndef __powerpc64__ -+#ifndef POWERPC64 - .globl ffi_prep_args_SYSV - ENTRY(ffi_call_SYSV) - .LFB1: - /* Save the old stack pointer as AP. */ - mr %r8,%r1 - - .LCFI0: - /* Allocate the stack space we need. */ -@@ -208,13 +208,13 @@ END(ffi_call_SYSV) - .byte 0x9c /* DW_CFA_offset, column 0x1c */ - .uleb128 0x4 - .byte 0x4 /* DW_CFA_advance_loc4 */ - .4byte .LCFI6-.LCFI5 - .byte 0xd /* DW_CFA_def_cfa_register */ - .uleb128 0x1c - .align 2 - .LEFDE1: --#endif - - #if defined __ELF__ && defined __linux__ - .section .note.GNU-stack,"",@progbits - #endif -+#endif -diff --git a/js/src/ctypes/libffi/src/prep_cif.c b/js/src/ctypes/libffi/src/prep_cif.c ---- a/js/src/ctypes/libffi/src/prep_cif.c -+++ b/js/src/ctypes/libffi/src/prep_cif.c -@@ -1,10 +1,11 @@ - /* ----------------------------------------------------------------------- -- prep_cif.c - Copyright (c) 1996, 1998, 2007 Red Hat, Inc. -+ prep_cif.c - Copyright (c) 2011, 2012 Anthony Green -+ Copyright (c) 1996, 1998, 2007 Red Hat, Inc. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: -@@ -32,27 +33,31 @@ - - /* Perform machine independent initialization of aggregate type - specifications. */ - - static ffi_status initialize_aggregate(ffi_type *arg) - { - ffi_type **ptr; - -- FFI_ASSERT(arg != NULL); -+ if (UNLIKELY(arg == NULL || arg->elements == NULL)) -+ return FFI_BAD_TYPEDEF; - -- FFI_ASSERT(arg->elements != NULL); -- FFI_ASSERT(arg->size == 0); -- FFI_ASSERT(arg->alignment == 0); -+ arg->size = 0; -+ arg->alignment = 0; - - ptr = &(arg->elements[0]); - -+ if (UNLIKELY(ptr == 0)) -+ return FFI_BAD_TYPEDEF; -+ - while ((*ptr) != NULL) - { -- if (((*ptr)->size == 0) && (initialize_aggregate((*ptr)) != FFI_OK)) -+ if (UNLIKELY(((*ptr)->size == 0) -+ && (initialize_aggregate((*ptr)) != FFI_OK))) - return FFI_BAD_TYPEDEF; - - /* Perform a sanity check on the argument type */ - FFI_ASSERT_VALID_TYPE(*ptr); - - arg->size = ALIGN(arg->size, (*ptr)->alignment); - arg->size += (*ptr)->size; - -@@ -66,61 +71,95 @@ static ffi_status initialize_aggregate(f - structures that fit in one register on ABIs like the PowerPC64 - Linux ABI that right justify small structs in a register. - It's also needed for nested structure layout, for example - struct A { long a; char b; }; struct B { struct A x; char y; }; - should find y at an offset of 2*sizeof(long) and result in a - total size of 3*sizeof(long). */ - arg->size = ALIGN (arg->size, arg->alignment); - -+ /* On some targets, the ABI defines that structures have an additional -+ alignment beyond the "natural" one based on their elements. */ -+#ifdef FFI_AGGREGATE_ALIGNMENT -+ if (FFI_AGGREGATE_ALIGNMENT > arg->alignment) -+ arg->alignment = FFI_AGGREGATE_ALIGNMENT; -+#endif -+ - if (arg->size == 0) - return FFI_BAD_TYPEDEF; - else - return FFI_OK; - } - - #ifndef __CRIS__ - /* The CRIS ABI specifies structure elements to have byte - alignment only, so it completely overrides this functions, - which assumes "natural" alignment and padding. */ - - /* Perform machine independent ffi_cif preparation, then call - machine dependent routine. */ - --ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, -- ffi_type *rtype, ffi_type **atypes) -+/* For non variadic functions isvariadic should be 0 and -+ nfixedargs==ntotalargs. -+ -+ For variadic calls, isvariadic should be 1 and nfixedargs -+ and ntotalargs set as appropriate. nfixedargs must always be >=1 */ -+ -+ -+ffi_status FFI_HIDDEN ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi, -+ unsigned int isvariadic, -+ unsigned int nfixedargs, -+ unsigned int ntotalargs, -+ ffi_type *rtype, ffi_type **atypes) - { - unsigned bytes = 0; - unsigned int i; - ffi_type **ptr; - - FFI_ASSERT(cif != NULL); -- FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI); -+ FFI_ASSERT((!isvariadic) || (nfixedargs >= 1)); -+ FFI_ASSERT(nfixedargs <= ntotalargs); -+ -+ if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI)) -+ return FFI_BAD_ABI; - - cif->abi = abi; - cif->arg_types = atypes; -- cif->nargs = nargs; -+ cif->nargs = ntotalargs; - cif->rtype = rtype; - - cif->flags = 0; - -+#if HAVE_LONG_DOUBLE_VARIANT -+ ffi_prep_types (abi); -+#endif -+ - /* Initialize the return type if necessary */ - if ((cif->rtype->size == 0) && (initialize_aggregate(cif->rtype) != FFI_OK)) - return FFI_BAD_TYPEDEF; - - /* Perform a sanity check on the return type */ - FFI_ASSERT_VALID_TYPE(cif->rtype); - - /* x86, x86-64 and s390 stack space allocation is handled in prep_machdep. */ - #if !defined M68K && !defined X86_ANY && !defined S390 && !defined PA - /* Make space for the return structure pointer */ - if (cif->rtype->type == FFI_TYPE_STRUCT - #ifdef SPARC - && (cif->abi != FFI_V9 || cif->rtype->size > 32) - #endif -+#ifdef TILE -+ && (cif->rtype->size > 10 * FFI_SIZEOF_ARG) -+#endif -+#ifdef XTENSA -+ && (cif->rtype->size > 16) -+#endif -+#ifdef NIOS2 -+ && (cif->rtype->size > 8) -+#endif - ) - bytes = STACK_ARG_SIZE(sizeof(void*)); - #endif - - for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) - { - - /* Initialize any uninitialized aggregate type definitions */ -@@ -138,30 +177,65 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff - || ((*ptr)->type == FFI_TYPE_LONGDOUBLE - && cif->abi != FFI_V9)) - bytes += sizeof(void*); - else - #endif - { - /* Add any padding if necessary */ - if (((*ptr)->alignment - 1) & bytes) -- bytes = ALIGN(bytes, (*ptr)->alignment); -+ bytes = (unsigned)ALIGN(bytes, (*ptr)->alignment); -+ -+#ifdef TILE -+ if (bytes < 10 * FFI_SIZEOF_ARG && -+ bytes + STACK_ARG_SIZE((*ptr)->size) > 10 * FFI_SIZEOF_ARG) -+ { -+ /* An argument is never split between the 10 parameter -+ registers and the stack. */ -+ bytes = 10 * FFI_SIZEOF_ARG; -+ } -+#endif -+#ifdef XTENSA -+ if (bytes <= 6*4 && bytes + STACK_ARG_SIZE((*ptr)->size) > 6*4) -+ bytes = 6*4; -+#endif - - bytes += STACK_ARG_SIZE((*ptr)->size); - } - #endif - } - - cif->bytes = bytes; - - /* Perform machine dependent cif processing */ -+#ifdef FFI_TARGET_SPECIFIC_VARIADIC -+ if (isvariadic) -+ return ffi_prep_cif_machdep_var(cif, nfixedargs, ntotalargs); -+#endif -+ - return ffi_prep_cif_machdep(cif); - } - #endif /* not __CRIS__ */ - -+ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, -+ ffi_type *rtype, ffi_type **atypes) -+{ -+ return ffi_prep_cif_core(cif, abi, 0, nargs, nargs, rtype, atypes); -+} -+ -+ffi_status ffi_prep_cif_var(ffi_cif *cif, -+ ffi_abi abi, -+ unsigned int nfixedargs, -+ unsigned int ntotalargs, -+ ffi_type *rtype, -+ ffi_type **atypes) -+{ -+ return ffi_prep_cif_core(cif, abi, 1, nfixedargs, ntotalargs, rtype, atypes); -+} -+ - #if FFI_CLOSURES - - ffi_status - ffi_prep_closure (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data) - { -diff --git a/js/src/ctypes/libffi/src/s390/ffi.c b/js/src/ctypes/libffi/src/s390/ffi.c ---- a/js/src/ctypes/libffi/src/s390/ffi.c -+++ b/js/src/ctypes/libffi/src/s390/ffi.c -@@ -745,17 +745,18 @@ ffi_closure_helper_SYSV (ffi_closure *cl - - ffi_status - ffi_prep_closure_loc (ffi_closure *closure, - ffi_cif *cif, - void (*fun) (ffi_cif *, void *, void **, void *), - void *user_data, - void *codeloc) - { -- FFI_ASSERT (cif->abi == FFI_SYSV); -+ if (cif->abi != FFI_SYSV) -+ return FFI_BAD_ABI; - - #ifndef __s390x__ - *(short *)&closure->tramp [0] = 0x0d10; /* basr %r1,0 */ - *(short *)&closure->tramp [2] = 0x9801; /* lm %r0,%r1,6(%r1) */ - *(short *)&closure->tramp [4] = 0x1006; - *(short *)&closure->tramp [6] = 0x07f1; /* br %r1 */ - *(long *)&closure->tramp [8] = (long)codeloc; - *(long *)&closure->tramp[12] = (long)&ffi_closure_SYSV; -diff --git a/js/src/ctypes/libffi/src/s390/ffitarget.h b/js/src/ctypes/libffi/src/s390/ffitarget.h ---- a/js/src/ctypes/libffi/src/s390/ffitarget.h -+++ b/js/src/ctypes/libffi/src/s390/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1996-2003 Red Hat, Inc. - Target configuration macros for S390. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,16 +23,20 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - #if defined (__s390x__) - #ifndef S390X - #define S390X - #endif - #endif - - /* ---- System specific configurations ----------------------------------- */ - -diff --git a/js/src/ctypes/libffi/src/sh/ffi.c b/js/src/ctypes/libffi/src/sh/ffi.c ---- a/js/src/ctypes/libffi/src/sh/ffi.c -+++ b/js/src/ctypes/libffi/src/sh/ffi.c -@@ -1,10 +1,10 @@ - /* ----------------------------------------------------------------------- -- ffi.c - Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Kaz Kojima -+ ffi.c - Copyright (c) 2002-2008, 2012 Kaz Kojima - Copyright (c) 2008 Red Hat, Inc. - - SuperH Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, -@@ -36,17 +36,17 @@ - #endif - - #if defined(__HITACHI__) - #define STRUCT_VALUE_ADDRESS_WITH_ARG 1 - #else - #define STRUCT_VALUE_ADDRESS_WITH_ARG 0 - #endif - --/* If the structure has essentialy an unique element, return its type. */ -+/* If the structure has essentially an unique element, return its type. */ - static int - simple_type (ffi_type *arg) - { - if (arg->type != FFI_TYPE_STRUCT) - return arg->type; - else if (arg->elements[1]) - return FFI_TYPE_STRUCT; - -@@ -458,17 +458,18 @@ ffi_prep_closure_loc (ffi_closure* closu - ffi_cif* cif, - void (*fun)(ffi_cif*, void*, void**, void*), - void *user_data, - void *codeloc) - { - unsigned int *tramp; - unsigned int insn; - -- FFI_ASSERT (cif->abi == FFI_GCC_SYSV); -+ if (cif->abi != FFI_SYSV) -+ return FFI_BAD_ABI; - - tramp = (unsigned int *) &closure->tramp[0]; - /* Set T bit if the function returns a struct pointed with R2. */ - insn = (return_type (cif->rtype) == FFI_TYPE_STRUCT - ? 0x0018 /* sett */ - : 0x0008 /* clrt */); - - #ifdef __LITTLE_ENDIAN__ -diff --git a/js/src/ctypes/libffi/src/sh/ffitarget.h b/js/src/ctypes/libffi/src/sh/ffitarget.h ---- a/js/src/ctypes/libffi/src/sh/ffitarget.h -+++ b/js/src/ctypes/libffi/src/sh/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1996-2003 Red Hat, Inc. - Target configuration macros for SuperH. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,16 +23,20 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - /* ---- Generic type definitions ----------------------------------------- */ - - #ifndef LIBFFI_ASM - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, -diff --git a/js/src/ctypes/libffi/src/sh64/ffi.c b/js/src/ctypes/libffi/src/sh64/ffi.c ---- a/js/src/ctypes/libffi/src/sh64/ffi.c -+++ b/js/src/ctypes/libffi/src/sh64/ffi.c -@@ -1,10 +1,10 @@ - /* ----------------------------------------------------------------------- -- ffi.c - Copyright (c) 2003, 2004, 2006, 2007 Kaz Kojima -+ ffi.c - Copyright (c) 2003, 2004, 2006, 2007, 2012 Kaz Kojima - Copyright (c) 2008 Anthony Green - - SuperH SHmedia Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, -@@ -297,17 +297,18 @@ ffi_status - ffi_prep_closure_loc (ffi_closure *closure, - ffi_cif *cif, - void (*fun)(ffi_cif*, void*, void**, void*), - void *user_data, - void *codeloc) - { - unsigned int *tramp; - -- FFI_ASSERT (cif->abi == FFI_GCC_SYSV); -+ if (cif->abi != FFI_SYSV) -+ return FFI_BAD_ABI; - - tramp = (unsigned int *) &closure->tramp[0]; - /* Since ffi_closure is an aligned object, the ffi trampoline is - called as an SHcompact code. Sigh. - SHcompact part: - mova @(1,pc),r0; add #1,r0; jmp @r0; nop; - SHmedia part: - movi fnaddr >> 16,r1; shori fnaddr,r1; ptabs/l r1,tr0 -diff --git a/js/src/ctypes/libffi/src/sh64/ffitarget.h b/js/src/ctypes/libffi/src/sh64/ffitarget.h ---- a/js/src/ctypes/libffi/src/sh64/ffitarget.h -+++ b/js/src/ctypes/libffi/src/sh64/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1996-2003 Red Hat, Inc. - Target configuration macros for SuperH - SHmedia. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,16 +23,20 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - /* ---- Generic type definitions ----------------------------------------- */ - - #ifndef LIBFFI_ASM - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, -diff --git a/js/src/ctypes/libffi/src/sparc/ffi.c b/js/src/ctypes/libffi/src/sparc/ffi.c ---- a/js/src/ctypes/libffi/src/sparc/ffi.c -+++ b/js/src/ctypes/libffi/src/sparc/ffi.c -@@ -1,10 +1,11 @@ - /* ----------------------------------------------------------------------- -- ffi.c - Copyright (c) 1996, 2003, 2004, 2007, 2008 Red Hat, Inc. -+ ffi.c - Copyright (c) 2011, 2013 Anthony Green -+ Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc. - - SPARC Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -370,16 +371,20 @@ int ffi_v9_layout_struct(ffi_type *arg, - #ifdef SPARC64 - extern int ffi_call_v9(void *, extended_cif *, unsigned, - unsigned, unsigned *, void (*fn)(void)); - #else - extern int ffi_call_v8(void *, extended_cif *, unsigned, - unsigned, unsigned *, void (*fn)(void)); - #endif - -+#ifndef __GNUC__ -+void ffi_flush_icache (void *, size_t); -+#endif -+ - void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) - { - extended_cif ecif; - void *rval = rvalue; - - ecif.cif = cif; - ecif.avalue = avalue; - -@@ -401,18 +406,64 @@ void ffi_call(ffi_cif *cif, void (*fn)(v - - switch (cif->abi) - { - case FFI_V8: - #ifdef SPARC64 - /* We don't yet support calling 32bit code from 64bit */ - FFI_ASSERT(0); - #else -- ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, -- cif->flags, rvalue, fn); -+ if (rvalue && (cif->rtype->type == FFI_TYPE_STRUCT -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ || cif->flags == FFI_TYPE_LONGDOUBLE -+#endif -+ )) -+ { -+ /* For v8, we need an "unimp" with size of returning struct */ -+ /* behind "call", so we alloc some executable space for it. */ -+ /* l7 is used, we need to make sure v8.S doesn't use %l7. */ -+ unsigned int *call_struct = NULL; -+ ffi_closure_alloc(32, (void **)&call_struct); -+ if (call_struct) -+ { -+ unsigned long f = (unsigned long)fn; -+ call_struct[0] = 0xae10001f; /* mov %i7, %l7 */ -+ call_struct[1] = 0xbe10000f; /* mov %o7, %i7 */ -+ call_struct[2] = 0x03000000 | f >> 10; /* sethi %hi(fn), %g1 */ -+ call_struct[3] = 0x9fc06000 | (f & 0x3ff); /* jmp %g1+%lo(fn), %o7 */ -+ call_struct[4] = 0x01000000; /* nop */ -+ if (cif->rtype->size < 0x7f) -+ call_struct[5] = cif->rtype->size; /* unimp */ -+ else -+ call_struct[5] = 0x01000000; /* nop */ -+ call_struct[6] = 0x81c7e008; /* ret */ -+ call_struct[7] = 0xbe100017; /* mov %l7, %i7 */ -+#ifdef __GNUC__ -+ asm volatile ("iflush %0; iflush %0+8; iflush %0+16; iflush %0+24" : : -+ "r" (call_struct) : "memory"); -+ /* SPARC v8 requires 5 instructions for flush to be visible */ -+ asm volatile ("nop; nop; nop; nop; nop"); -+#else -+ ffi_flush_icache (call_struct, 32); -+#endif -+ ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, -+ cif->flags, rvalue, call_struct); -+ ffi_closure_free(call_struct); -+ } -+ else -+ { -+ ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, -+ cif->flags, rvalue, fn); -+ } -+ } -+ else -+ { -+ ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, -+ cif->flags, rvalue, fn); -+ } - #endif - break; - case FFI_V9: - #ifdef SPARC64 - ffi_call_v9(ffi_prep_args_v9, &ecif, cif->bytes, - cif->flags, rval, fn); - if (rvalue && rval && cif->rtype->type == FFI_TYPE_STRUCT) - ffi_v9_layout_struct(cif->rtype, 0, (char *)rvalue, (char *)rval, ((char *)rval)+32); -@@ -420,17 +471,16 @@ void ffi_call(ffi_cif *cif, void (*fn)(v - /* And vice versa */ - FFI_ASSERT(0); - #endif - break; - default: - FFI_ASSERT(0); - break; - } -- - } - - - #ifdef SPARC64 - extern void ffi_closure_v9(void); - #else - extern void ffi_closure_v8(void); - #endif -@@ -442,44 +492,50 @@ ffi_prep_closure_loc (ffi_closure* closu - void *user_data, - void *codeloc) - { - unsigned int *tramp = (unsigned int *) &closure->tramp[0]; - unsigned long fn; - #ifdef SPARC64 - /* Trampoline address is equal to the closure address. We take advantage - of that to reduce the trampoline size by 8 bytes. */ -- FFI_ASSERT (cif->abi == FFI_V9); -+ if (cif->abi != FFI_V9) -+ return FFI_BAD_ABI; - fn = (unsigned long) ffi_closure_v9; - tramp[0] = 0x83414000; /* rd %pc, %g1 */ - tramp[1] = 0xca586010; /* ldx [%g1+16], %g5 */ - tramp[2] = 0x81c14000; /* jmp %g5 */ - tramp[3] = 0x01000000; /* nop */ - *((unsigned long *) &tramp[4]) = fn; - #else - unsigned long ctx = (unsigned long) codeloc; -- FFI_ASSERT (cif->abi == FFI_V8); -+ if (cif->abi != FFI_V8) -+ return FFI_BAD_ABI; - fn = (unsigned long) ffi_closure_v8; - tramp[0] = 0x03000000 | fn >> 10; /* sethi %hi(fn), %g1 */ - tramp[1] = 0x05000000 | ctx >> 10; /* sethi %hi(ctx), %g2 */ - tramp[2] = 0x81c06000 | (fn & 0x3ff); /* jmp %g1+%lo(fn) */ - tramp[3] = 0x8410a000 | (ctx & 0x3ff);/* or %g2, %lo(ctx) */ - #endif - - closure->cif = cif; - closure->fun = fun; - closure->user_data = user_data; - -- /* Flush the Icache. FIXME: alignment isn't certain, assume 8 bytes */ -+ /* Flush the Icache. closure is 8 bytes aligned. */ -+#ifdef __GNUC__ - #ifdef SPARC64 -- asm volatile ("flush %0" : : "r" (closure) : "memory"); -- asm volatile ("flush %0" : : "r" (((char *) closure) + 8) : "memory"); -+ asm volatile ("flush %0; flush %0+8" : : "r" (closure) : "memory"); - #else -- asm volatile ("iflush %0" : : "r" (closure) : "memory"); -- asm volatile ("iflush %0" : : "r" (((char *) closure) + 8) : "memory"); -+ asm volatile ("iflush %0; iflush %0+8" : : "r" (closure) : "memory"); -+ /* SPARC v8 requires 5 instructions for flush to be visible */ -+ asm volatile ("nop; nop; nop; nop; nop"); -+#endif -+#else -+ ffi_flush_icache (closure, 16); - #endif - - return FFI_OK; - } - - int - ffi_closure_sparc_inner_v8(ffi_closure *closure, - void *rvalue, unsigned long *gpr, unsigned long *scratch) -diff --git a/js/src/ctypes/libffi/src/sparc/ffitarget.h b/js/src/ctypes/libffi/src/sparc/ffitarget.h ---- a/js/src/ctypes/libffi/src/sparc/ffitarget.h -+++ b/js/src/ctypes/libffi/src/sparc/ffitarget.h -@@ -1,10 +1,11 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1996-2003 Red Hat, Inc. - Target configuration macros for SPARC. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to -@@ -22,16 +23,20 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - /* ---- System specific configurations ----------------------------------- */ - - #if defined(__arch64__) || defined(__sparcv9) - #ifndef SPARC64 - #define SPARC64 - #endif - #endif - -diff --git a/js/src/ctypes/libffi/src/sparc/v8.S b/js/src/ctypes/libffi/src/sparc/v8.S ---- a/js/src/ctypes/libffi/src/sparc/v8.S -+++ b/js/src/ctypes/libffi/src/sparc/v8.S -@@ -1,10 +1,11 @@ - /* ----------------------------------------------------------------------- -- v8.S - Copyright (c) 1996, 1997, 2003, 2004, 2008 Red Hat, Inc. -+ v8.S - Copyright (c) 2013 The Written Word, Inc. -+ Copyright (c) 1996, 1997, 2003, 2004, 2008 Red Hat, Inc. - - SPARC Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -26,21 +27,49 @@ - - #define LIBFFI_ASM - #include - #include - - #define STACKFRAME 96 /* Minimum stack framesize for SPARC */ - #define ARGS (64+4) /* Offset of register area in frame */ - --.text -+#ifndef __GNUC__ -+ .text -+ .align 8 -+.globl ffi_flush_icache -+.globl _ffi_flush_icache -+ -+ffi_flush_icache: -+_ffi_flush_icache: -+ add %o0, %o1, %o2 -+#ifdef SPARC64 -+1: flush %o0 -+#else -+1: iflush %o0 -+#endif -+ add %o0, 8, %o0 -+ cmp %o0, %o2 -+ blt 1b -+ nop -+ nop -+ nop -+ nop -+ nop -+ retl -+ nop -+.ffi_flush_icache_end: -+ .size ffi_flush_icache,.ffi_flush_icache_end-ffi_flush_icache -+#endif -+ -+ .text - .align 8 - .globl ffi_call_v8 - .globl _ffi_call_v8 -- -+ - ffi_call_v8: - _ffi_call_v8: - .LLFB1: - save %sp, -STACKFRAME, %sp - .LLCFI0: - - sub %sp, %i2, %sp ! alloca() space in stack for frame to set up - add %sp, STACKFRAME, %l0 ! %l0 has start of -@@ -208,16 +237,20 @@ ffi_closure_v8: - - cmp %o0, FFI_TYPE_STRUCT - be done2 - - cmp %o0, FFI_TYPE_SINT64 - be,a done1 - ldd [%fp-8], %i0 - -+ cmp %o0, FFI_TYPE_UINT64 -+ be,a done1 -+ ldd [%fp-8], %i0 -+ - ld [%fp-8], %i0 - done1: - jmp %i7+8 - restore - done2: - ! Skip 'unimp'. - jmp %i7+12 - restore -diff --git a/js/src/ctypes/libffi/src/sparc/v9.S b/js/src/ctypes/libffi/src/sparc/v9.S ---- a/js/src/ctypes/libffi/src/sparc/v9.S -+++ b/js/src/ctypes/libffi/src/sparc/v9.S -@@ -27,17 +27,17 @@ - #define LIBFFI_ASM - #include - #include - - #ifdef SPARC64 - /* Only compile this in for 64bit builds, because otherwise the object file - will have inproper architecture due to used instructions. */ - --#define STACKFRAME 128 /* Minimum stack framesize for SPARC */ -+#define STACKFRAME 176 /* Minimum stack framesize for SPARC 64-bit */ - #define STACK_BIAS 2047 - #define ARGS (128) /* Offset of register area in frame */ - - .text - .align 8 - .globl ffi_call_v9 - .globl _ffi_call_v9 - -diff --git a/js/src/ctypes/libffi/src/tile/ffi.c b/js/src/ctypes/libffi/src/tile/ffi.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/tile/ffi.c -@@ -0,0 +1,355 @@ -+/* ----------------------------------------------------------------------- -+ ffi.c - Copyright (c) 2012 Tilera Corp. -+ -+ TILE Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+ -+/* The first 10 registers are used to pass arguments and return values. */ -+#define NUM_ARG_REGS 10 -+ -+/* Performs a raw function call with the given NUM_ARG_REGS register arguments -+ and the specified additional stack arguments (if any). */ -+extern void ffi_call_tile(ffi_sarg reg_args[NUM_ARG_REGS], -+ const ffi_sarg *stack_args, -+ size_t stack_args_bytes, -+ void (*fnaddr)(void)) -+ FFI_HIDDEN; -+ -+/* This handles the raw call from the closure stub, cleaning up the -+ parameters and delegating to ffi_closure_tile_inner. */ -+extern void ffi_closure_tile(void) FFI_HIDDEN; -+ -+ -+ffi_status -+ffi_prep_cif_machdep(ffi_cif *cif) -+{ -+ /* We always allocate room for all registers. Even if we don't -+ use them as parameters, they get returned in the same array -+ as struct return values so we need to make room. */ -+ if (cif->bytes < NUM_ARG_REGS * FFI_SIZEOF_ARG) -+ cif->bytes = NUM_ARG_REGS * FFI_SIZEOF_ARG; -+ -+ if (cif->rtype->size > NUM_ARG_REGS * FFI_SIZEOF_ARG) -+ cif->flags = FFI_TYPE_STRUCT; -+ else -+ cif->flags = FFI_TYPE_INT; -+ -+ /* Nothing to do. */ -+ return FFI_OK; -+} -+ -+ -+static long -+assign_to_ffi_arg(ffi_sarg *out, void *in, const ffi_type *type, -+ int write_to_reg) -+{ -+ switch (type->type) -+ { -+ case FFI_TYPE_SINT8: -+ *out = *(SINT8 *)in; -+ return 1; -+ -+ case FFI_TYPE_UINT8: -+ *out = *(UINT8 *)in; -+ return 1; -+ -+ case FFI_TYPE_SINT16: -+ *out = *(SINT16 *)in; -+ return 1; -+ -+ case FFI_TYPE_UINT16: -+ *out = *(UINT16 *)in; -+ return 1; -+ -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_UINT32: -+#ifndef __LP64__ -+ case FFI_TYPE_POINTER: -+#endif -+ /* Note that even unsigned 32-bit quantities are sign extended -+ on tilegx when stored in a register. */ -+ *out = *(SINT32 *)in; -+ return 1; -+ -+ case FFI_TYPE_FLOAT: -+#ifdef __tilegx__ -+ if (write_to_reg) -+ { -+ /* Properly sign extend the value. */ -+ union { float f; SINT32 s32; } val; -+ val.f = *(float *)in; -+ *out = val.s32; -+ } -+ else -+#endif -+ { -+ *(float *)out = *(float *)in; -+ } -+ return 1; -+ -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_DOUBLE: -+#ifdef __LP64__ -+ case FFI_TYPE_POINTER: -+#endif -+ *(UINT64 *)out = *(UINT64 *)in; -+ return sizeof(UINT64) / FFI_SIZEOF_ARG; -+ -+ case FFI_TYPE_STRUCT: -+ memcpy(out, in, type->size); -+ return (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG; -+ -+ case FFI_TYPE_VOID: -+ /* Must be a return type. Nothing to do. */ -+ return 0; -+ -+ default: -+ FFI_ASSERT(0); -+ return -1; -+ } -+} -+ -+ -+void -+ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) -+{ -+ ffi_sarg * const arg_mem = alloca(cif->bytes); -+ ffi_sarg * const reg_args = arg_mem; -+ ffi_sarg * const stack_args = ®_args[NUM_ARG_REGS]; -+ ffi_sarg *argp = arg_mem; -+ ffi_type ** const arg_types = cif->arg_types; -+ const long num_args = cif->nargs; -+ long i; -+ -+ if (cif->flags == FFI_TYPE_STRUCT) -+ { -+ /* Pass a hidden pointer to the return value. We make sure there -+ is scratch space for the callee to store the return value even if -+ our caller doesn't care about it. */ -+ *argp++ = (intptr_t)(rvalue ? rvalue : alloca(cif->rtype->size)); -+ -+ /* No more work needed to return anything. */ -+ rvalue = NULL; -+ } -+ -+ for (i = 0; i < num_args; i++) -+ { -+ ffi_type *type = arg_types[i]; -+ void * const arg_in = avalue[i]; -+ ptrdiff_t arg_word = argp - arg_mem; -+ -+#ifndef __tilegx__ -+ /* Doubleword-aligned values are always in an even-number register -+ pair, or doubleword-aligned stack slot if out of registers. */ -+ long align = arg_word & (type->alignment > FFI_SIZEOF_ARG); -+ argp += align; -+ arg_word += align; -+#endif -+ -+ if (type->type == FFI_TYPE_STRUCT) -+ { -+ const size_t arg_size_in_words = -+ (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG; -+ -+ if (arg_word < NUM_ARG_REGS && -+ arg_word + arg_size_in_words > NUM_ARG_REGS) -+ { -+ /* Args are not allowed to span registers and the stack. */ -+ argp = stack_args; -+ } -+ -+ memcpy(argp, arg_in, type->size); -+ argp += arg_size_in_words; -+ } -+ else -+ { -+ argp += assign_to_ffi_arg(argp, arg_in, arg_types[i], 1); -+ } -+ } -+ -+ /* Actually do the call. */ -+ ffi_call_tile(reg_args, stack_args, -+ cif->bytes - (NUM_ARG_REGS * FFI_SIZEOF_ARG), fn); -+ -+ if (rvalue != NULL) -+ assign_to_ffi_arg(rvalue, reg_args, cif->rtype, 0); -+} -+ -+ -+/* Template code for closure. */ -+extern const UINT64 ffi_template_tramp_tile[] FFI_HIDDEN; -+ -+ -+ffi_status -+ffi_prep_closure_loc (ffi_closure *closure, -+ ffi_cif *cif, -+ void (*fun)(ffi_cif*, void*, void**, void*), -+ void *user_data, -+ void *codeloc) -+{ -+#ifdef __tilegx__ -+ /* TILE-Gx */ -+ SINT64 c; -+ SINT64 h; -+ int s; -+ UINT64 *out; -+ -+ if (cif->abi != FFI_UNIX) -+ return FFI_BAD_ABI; -+ -+ out = (UINT64 *)closure->tramp; -+ -+ c = (intptr_t)closure; -+ h = (intptr_t)ffi_closure_tile; -+ s = 0; -+ -+ /* Find the smallest shift count that doesn't lose information -+ (i.e. no need to explicitly insert high bits of the address that -+ are just the sign extension of the low bits). */ -+ while ((c >> s) != (SINT16)(c >> s) || (h >> s) != (SINT16)(h >> s)) -+ s += 16; -+ -+#define OPS(a, b, shift) \ -+ (create_Imm16_X0((a) >> (shift)) | create_Imm16_X1((b) >> (shift))) -+ -+ /* Emit the moveli. */ -+ *out++ = ffi_template_tramp_tile[0] | OPS(c, h, s); -+ for (s -= 16; s >= 0; s -= 16) -+ *out++ = ffi_template_tramp_tile[1] | OPS(c, h, s); -+ -+#undef OPS -+ -+ *out++ = ffi_template_tramp_tile[2]; -+ -+#else -+ /* TILEPro */ -+ UINT64 *out; -+ intptr_t delta; -+ -+ if (cif->abi != FFI_UNIX) -+ return FFI_BAD_ABI; -+ -+ out = (UINT64 *)closure->tramp; -+ delta = (intptr_t)ffi_closure_tile - (intptr_t)codeloc; -+ -+ *out++ = ffi_template_tramp_tile[0] | create_JOffLong_X1(delta >> 3); -+#endif -+ -+ closure->cif = cif; -+ closure->fun = fun; -+ closure->user_data = user_data; -+ -+ invalidate_icache(closure->tramp, (char *)out - closure->tramp, -+ getpagesize()); -+ -+ return FFI_OK; -+} -+ -+ -+/* This is called by the assembly wrapper for closures. This does -+ all of the work. On entry reg_args[0] holds the values the registers -+ had when the closure was invoked. On return reg_args[1] holds the register -+ values to be returned to the caller (many of which may be garbage). */ -+void FFI_HIDDEN -+ffi_closure_tile_inner(ffi_closure *closure, -+ ffi_sarg reg_args[2][NUM_ARG_REGS], -+ ffi_sarg *stack_args) -+{ -+ ffi_cif * const cif = closure->cif; -+ void ** const avalue = alloca(cif->nargs * sizeof(void *)); -+ void *rvalue; -+ ffi_type ** const arg_types = cif->arg_types; -+ ffi_sarg * const reg_args_in = reg_args[0]; -+ ffi_sarg * const reg_args_out = reg_args[1]; -+ ffi_sarg * argp; -+ long i, arg_word, nargs = cif->nargs; -+ /* Use a union to guarantee proper alignment for double. */ -+ union { ffi_sarg arg[NUM_ARG_REGS]; double d; UINT64 u64; } closure_ret; -+ -+ /* Start out reading register arguments. */ -+ argp = reg_args_in; -+ -+ /* Copy the caller's structure return address to that the closure -+ returns the data directly to the caller. */ -+ if (cif->flags == FFI_TYPE_STRUCT) -+ { -+ /* Return by reference via hidden pointer. */ -+ rvalue = (void *)(intptr_t)*argp++; -+ arg_word = 1; -+ } -+ else -+ { -+ /* Return the value in registers. */ -+ rvalue = &closure_ret; -+ arg_word = 0; -+ } -+ -+ /* Grab the addresses of the arguments. */ -+ for (i = 0; i < nargs; i++) -+ { -+ ffi_type * const type = arg_types[i]; -+ const size_t arg_size_in_words = -+ (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG; -+ -+#ifndef __tilegx__ -+ /* Doubleword-aligned values are always in an even-number register -+ pair, or doubleword-aligned stack slot if out of registers. */ -+ long align = arg_word & (type->alignment > FFI_SIZEOF_ARG); -+ argp += align; -+ arg_word += align; -+#endif -+ -+ if (arg_word == NUM_ARG_REGS || -+ (arg_word < NUM_ARG_REGS && -+ arg_word + arg_size_in_words > NUM_ARG_REGS)) -+ { -+ /* Switch to reading arguments from the stack. */ -+ argp = stack_args; -+ arg_word = NUM_ARG_REGS; -+ } -+ -+ avalue[i] = argp; -+ argp += arg_size_in_words; -+ arg_word += arg_size_in_words; -+ } -+ -+ /* Invoke the closure. */ -+ closure->fun(cif, rvalue, avalue, closure->user_data); -+ -+ if (cif->flags != FFI_TYPE_STRUCT) -+ { -+ /* Canonicalize for register representation. */ -+ assign_to_ffi_arg(reg_args_out, &closure_ret, cif->rtype, 1); -+ } -+} -diff --git a/js/src/ctypes/libffi/src/tile/ffitarget.h b/js/src/ctypes/libffi/src/tile/ffitarget.h -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/tile/ffitarget.h -@@ -0,0 +1,65 @@ -+/* -----------------------------------------------------------------*-C-*- -+ ffitarget.h - Copyright (c) 2012 Tilera Corp. -+ Target configuration macros for TILE. -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#ifndef LIBFFI_TARGET_H -+#define LIBFFI_TARGET_H -+ -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ -+#ifndef LIBFFI_ASM -+ -+#include -+ -+typedef uint_reg_t ffi_arg; -+typedef int_reg_t ffi_sarg; -+ -+typedef enum ffi_abi { -+ FFI_FIRST_ABI = 0, -+ FFI_UNIX, -+ FFI_LAST_ABI, -+ FFI_DEFAULT_ABI = FFI_UNIX -+} ffi_abi; -+#endif -+ -+/* ---- Definitions for closures ----------------------------------------- */ -+#define FFI_CLOSURES 1 -+ -+#ifdef __tilegx__ -+/* We always pass 8-byte values, even in -m32 mode. */ -+# define FFI_SIZEOF_ARG 8 -+# ifdef __LP64__ -+# define FFI_TRAMPOLINE_SIZE (8 * 5) /* 5 bundles */ -+# else -+# define FFI_TRAMPOLINE_SIZE (8 * 3) /* 3 bundles */ -+# endif -+#else -+# define FFI_SIZEOF_ARG 4 -+# define FFI_TRAMPOLINE_SIZE 8 /* 1 bundle */ -+#endif -+#define FFI_NATIVE_RAW_API 0 -+ -+#endif -diff --git a/js/src/ctypes/libffi/src/tile/tile.S b/js/src/ctypes/libffi/src/tile/tile.S -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/tile/tile.S -@@ -0,0 +1,360 @@ -+/* ----------------------------------------------------------------------- -+ tile.S - Copyright (c) 2011 Tilera Corp. -+ -+ Tilera TILEPro and TILE-Gx Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#define LIBFFI_ASM -+#include -+#include -+ -+/* Number of bytes in a register. */ -+#define REG_SIZE FFI_SIZEOF_ARG -+ -+/* Number of bytes in stack linkage area for backtracing. -+ -+ A note about the ABI: on entry to a procedure, sp points to a stack -+ slot where it must spill the return address if it's not a leaf. -+ REG_SIZE bytes beyond that is a slot owned by the caller which -+ contains the sp value that the caller had when it was originally -+ entered (i.e. the caller's frame pointer). */ -+#define LINKAGE_SIZE (2 * REG_SIZE) -+ -+/* The first 10 registers are used to pass arguments and return values. */ -+#define NUM_ARG_REGS 10 -+ -+#ifdef __tilegx__ -+#define SW st -+#define LW ld -+#define BGZT bgtzt -+#else -+#define SW sw -+#define LW lw -+#define BGZT bgzt -+#endif -+ -+ -+/* void ffi_call_tile (int_reg_t reg_args[NUM_ARG_REGS], -+ const int_reg_t *stack_args, -+ unsigned long stack_args_bytes, -+ void (*fnaddr)(void)); -+ -+ On entry, REG_ARGS contain the outgoing register values, -+ and STACK_ARGS contains STACK_ARG_BYTES of additional values -+ to be passed on the stack. If STACK_ARG_BYTES is zero, then -+ STACK_ARGS is ignored. -+ -+ When the invoked function returns, the values of r0-r9 are -+ blindly stored back into REG_ARGS for the caller to examine. */ -+ -+ .section .text.ffi_call_tile, "ax", @progbits -+ .align 8 -+ .globl ffi_call_tile -+ FFI_HIDDEN(ffi_call_tile) -+ffi_call_tile: -+ -+/* Incoming arguments. */ -+#define REG_ARGS r0 -+#define INCOMING_STACK_ARGS r1 -+#define STACK_ARG_BYTES r2 -+#define ORIG_FNADDR r3 -+ -+/* Temporary values. */ -+#define FRAME_SIZE r10 -+#define TMP r11 -+#define TMP2 r12 -+#define OUTGOING_STACK_ARGS r13 -+#define REG_ADDR_PTR r14 -+#define RETURN_REG_ADDR r15 -+#define FNADDR r16 -+ -+ .cfi_startproc -+ { -+ /* Save return address. */ -+ SW sp, lr -+ .cfi_offset lr, 0 -+ /* Prepare to spill incoming r52. */ -+ addi TMP, sp, -REG_SIZE -+ /* Increase frame size to have room to spill r52 and REG_ARGS. -+ The +7 is to round up mod 8. */ -+ addi FRAME_SIZE, STACK_ARG_BYTES, \ -+ REG_SIZE + REG_SIZE + LINKAGE_SIZE + 7 -+ } -+ { -+ /* Round stack frame size to a multiple of 8 to satisfy ABI. */ -+ andi FRAME_SIZE, FRAME_SIZE, -8 -+ /* Compute where to spill REG_ARGS value. */ -+ addi TMP2, sp, -(REG_SIZE * 2) -+ } -+ { -+ /* Spill incoming r52. */ -+ SW TMP, r52 -+ .cfi_offset r52, -REG_SIZE -+ /* Set up our frame pointer. */ -+ move r52, sp -+ .cfi_def_cfa_register r52 -+ /* Push stack frame. */ -+ sub sp, sp, FRAME_SIZE -+ } -+ { -+ /* Prepare to set up stack linkage. */ -+ addi TMP, sp, REG_SIZE -+ /* Prepare to memcpy stack args. */ -+ addi OUTGOING_STACK_ARGS, sp, LINKAGE_SIZE -+ /* Save REG_ARGS which we will need after we call the subroutine. */ -+ SW TMP2, REG_ARGS -+ } -+ { -+ /* Set up linkage info to hold incoming stack pointer. */ -+ SW TMP, r52 -+ } -+ { -+ /* Skip stack args memcpy if we don't have any stack args (common). */ -+ blezt STACK_ARG_BYTES, .Ldone_stack_args_memcpy -+ } -+ -+.Lmemcpy_stack_args: -+ { -+ /* Load incoming argument from stack_args. */ -+ LW TMP, INCOMING_STACK_ARGS -+ addi INCOMING_STACK_ARGS, INCOMING_STACK_ARGS, REG_SIZE -+ } -+ { -+ /* Store stack argument into outgoing stack argument area. */ -+ SW OUTGOING_STACK_ARGS, TMP -+ addi OUTGOING_STACK_ARGS, OUTGOING_STACK_ARGS, REG_SIZE -+ addi STACK_ARG_BYTES, STACK_ARG_BYTES, -REG_SIZE -+ } -+ { -+ BGZT STACK_ARG_BYTES, .Lmemcpy_stack_args -+ } -+.Ldone_stack_args_memcpy: -+ -+ { -+ /* Copy aside ORIG_FNADDR so we can overwrite its register. */ -+ move FNADDR, ORIG_FNADDR -+ /* Prepare to load argument registers. */ -+ addi REG_ADDR_PTR, r0, REG_SIZE -+ /* Load outgoing r0. */ -+ LW r0, r0 -+ } -+ -+ /* Load up argument registers from the REG_ARGS array. */ -+#define LOAD_REG(REG, PTR) \ -+ { \ -+ LW REG, PTR ; \ -+ addi PTR, PTR, REG_SIZE \ -+ } -+ -+ LOAD_REG(r1, REG_ADDR_PTR) -+ LOAD_REG(r2, REG_ADDR_PTR) -+ LOAD_REG(r3, REG_ADDR_PTR) -+ LOAD_REG(r4, REG_ADDR_PTR) -+ LOAD_REG(r5, REG_ADDR_PTR) -+ LOAD_REG(r6, REG_ADDR_PTR) -+ LOAD_REG(r7, REG_ADDR_PTR) -+ LOAD_REG(r8, REG_ADDR_PTR) -+ LOAD_REG(r9, REG_ADDR_PTR) -+ -+ { -+ /* Call the subroutine. */ -+ jalr FNADDR -+ } -+ -+ { -+ /* Restore original lr. */ -+ LW lr, r52 -+ /* Prepare to recover ARGS, which we spilled earlier. */ -+ addi TMP, r52, -(2 * REG_SIZE) -+ } -+ { -+ /* Restore ARGS, so we can fill it in with the return regs r0-r9. */ -+ LW RETURN_REG_ADDR, TMP -+ /* Prepare to restore original r52. */ -+ addi TMP, r52, -REG_SIZE -+ } -+ -+ { -+ /* Pop stack frame. */ -+ move sp, r52 -+ /* Restore original r52. */ -+ LW r52, TMP -+ } -+ -+#define STORE_REG(REG, PTR) \ -+ { \ -+ SW PTR, REG ; \ -+ addi PTR, PTR, REG_SIZE \ -+ } -+ -+ /* Return all register values by reference. */ -+ STORE_REG(r0, RETURN_REG_ADDR) -+ STORE_REG(r1, RETURN_REG_ADDR) -+ STORE_REG(r2, RETURN_REG_ADDR) -+ STORE_REG(r3, RETURN_REG_ADDR) -+ STORE_REG(r4, RETURN_REG_ADDR) -+ STORE_REG(r5, RETURN_REG_ADDR) -+ STORE_REG(r6, RETURN_REG_ADDR) -+ STORE_REG(r7, RETURN_REG_ADDR) -+ STORE_REG(r8, RETURN_REG_ADDR) -+ STORE_REG(r9, RETURN_REG_ADDR) -+ -+ { -+ jrp lr -+ } -+ -+ .cfi_endproc -+ .size ffi_call_tile, .-ffi_call_tile -+ -+/* ffi_closure_tile(...) -+ -+ On entry, lr points to the closure plus 8 bytes, and r10 -+ contains the actual return address. -+ -+ This function simply dumps all register parameters into a stack array -+ and passes the closure, the registers array, and the stack arguments -+ to C code that does all of the actual closure processing. */ -+ -+ .section .text.ffi_closure_tile, "ax", @progbits -+ .align 8 -+ .globl ffi_closure_tile -+ FFI_HIDDEN(ffi_closure_tile) -+ -+ .cfi_startproc -+/* Room to spill all NUM_ARG_REGS incoming registers, plus frame linkage. */ -+#define CLOSURE_FRAME_SIZE (((NUM_ARG_REGS * REG_SIZE * 2 + LINKAGE_SIZE) + 7) & -8) -+ffi_closure_tile: -+ { -+#ifdef __tilegx__ -+ st sp, lr -+ .cfi_offset lr, 0 -+#else -+ /* Save return address (in r10 due to closure stub wrapper). */ -+ SW sp, r10 -+ .cfi_return_column r10 -+ .cfi_offset r10, 0 -+#endif -+ /* Compute address for stack frame linkage. */ -+ addli r10, sp, -(CLOSURE_FRAME_SIZE - REG_SIZE) -+ } -+ { -+ /* Save incoming stack pointer in linkage area. */ -+ SW r10, sp -+ .cfi_offset sp, -(CLOSURE_FRAME_SIZE - REG_SIZE) -+ /* Push a new stack frame. */ -+ addli sp, sp, -CLOSURE_FRAME_SIZE -+ .cfi_adjust_cfa_offset CLOSURE_FRAME_SIZE -+ } -+ -+ { -+ /* Create pointer to where to start spilling registers. */ -+ addi r10, sp, LINKAGE_SIZE -+ } -+ -+ /* Spill all the incoming registers. */ -+ STORE_REG(r0, r10) -+ STORE_REG(r1, r10) -+ STORE_REG(r2, r10) -+ STORE_REG(r3, r10) -+ STORE_REG(r4, r10) -+ STORE_REG(r5, r10) -+ STORE_REG(r6, r10) -+ STORE_REG(r7, r10) -+ STORE_REG(r8, r10) -+ { -+ /* Save r9. */ -+ SW r10, r9 -+#ifdef __tilegx__ -+ /* Pointer to closure is passed in r11. */ -+ move r0, r11 -+#else -+ /* Compute pointer to the closure object. Because the closure -+ starts with a "jal ffi_closure_tile", we can just take the -+ value of lr (a phony return address pointing into the closure) -+ and subtract 8. */ -+ addi r0, lr, -8 -+#endif -+ /* Compute a pointer to the register arguments we just spilled. */ -+ addi r1, sp, LINKAGE_SIZE -+ } -+ { -+ /* Compute a pointer to the extra stack arguments (if any). */ -+ addli r2, sp, CLOSURE_FRAME_SIZE + LINKAGE_SIZE -+ /* Call C code to deal with all of the grotty details. */ -+ jal ffi_closure_tile_inner -+ } -+ { -+ addli r10, sp, CLOSURE_FRAME_SIZE -+ } -+ { -+ /* Restore the return address. */ -+ LW lr, r10 -+ /* Compute pointer to registers array. */ -+ addli r10, sp, LINKAGE_SIZE + (NUM_ARG_REGS * REG_SIZE) -+ } -+ /* Return all the register values, which C code may have set. */ -+ LOAD_REG(r0, r10) -+ LOAD_REG(r1, r10) -+ LOAD_REG(r2, r10) -+ LOAD_REG(r3, r10) -+ LOAD_REG(r4, r10) -+ LOAD_REG(r5, r10) -+ LOAD_REG(r6, r10) -+ LOAD_REG(r7, r10) -+ LOAD_REG(r8, r10) -+ LOAD_REG(r9, r10) -+ { -+ /* Pop the frame. */ -+ addli sp, sp, CLOSURE_FRAME_SIZE -+ jrp lr -+ } -+ -+ .cfi_endproc -+ .size ffi_closure_tile, . - ffi_closure_tile -+ -+ -+/* What follows are code template instructions that get copied to the -+ closure trampoline by ffi_prep_closure_loc. The zeroed operands -+ get replaced by their proper values at runtime. */ -+ -+ .section .text.ffi_template_tramp_tile, "ax", @progbits -+ .align 8 -+ .globl ffi_template_tramp_tile -+ FFI_HIDDEN(ffi_template_tramp_tile) -+ffi_template_tramp_tile: -+#ifdef __tilegx__ -+ { -+ moveli r11, 0 /* backpatched to address of containing closure. */ -+ moveli r10, 0 /* backpatched to ffi_closure_tile. */ -+ } -+ /* Note: the following bundle gets generated multiple times -+ depending on the pointer value (esp. useful for -m32 mode). */ -+ { shl16insli r11, r11, 0 ; shl16insli r10, r10, 0 } -+ { info 2+8 /* for backtracer: -> pc in lr, frame size 0 */ ; jr r10 } -+#else -+ /* 'jal .' yields a PC-relative offset of zero so we can OR in the -+ right offset at runtime. */ -+ { move r10, lr ; jal . /* ffi_closure_tile */ } -+#endif -+ -+ .size ffi_template_tramp_tile, . - ffi_template_tramp_tile -diff --git a/js/src/ctypes/libffi/src/types.c b/js/src/ctypes/libffi/src/types.c ---- a/js/src/ctypes/libffi/src/types.c -+++ b/js/src/ctypes/libffi/src/types.c -@@ -39,16 +39,27 @@ struct struct_align_##name { \ - type x; \ - }; \ - const ffi_type ffi_type_##name = { \ - sizeof(type), \ - offsetof(struct struct_align_##name, x), \ - id, NULL \ - } - -+#define FFI_NONCONST_TYPEDEF(name, type, id) \ -+struct struct_align_##name { \ -+ char c; \ -+ type x; \ -+}; \ -+ffi_type ffi_type_##name = { \ -+ sizeof(type), \ -+ offsetof(struct struct_align_##name, x), \ -+ id, NULL \ -+} -+ - /* Size and alignment are fake here. They must not be 0. */ - const ffi_type ffi_type_void = { - 1, 1, FFI_TYPE_VOID, NULL - }; - - FFI_TYPEDEF(uint8, UINT8, FFI_TYPE_UINT8); - FFI_TYPEDEF(sint8, SINT8, FFI_TYPE_SINT8); - FFI_TYPEDEF(uint16, UINT16, FFI_TYPE_UINT16); -@@ -68,10 +79,14 @@ FFI_TYPEDEF(double, double, FFI_TYPE_DOU - maintain binary compatibility, as -mlong-double-128 can be used - at any time. */ - /* Validate the hard-coded number below. */ - # if defined(__LONG_DOUBLE_128__) && FFI_TYPE_LONGDOUBLE != 4 - # error FFI_TYPE_LONGDOUBLE out of date - # endif - const ffi_type ffi_type_longdouble = { 16, 16, 4, NULL }; - #elif FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+# if HAVE_LONG_DOUBLE_VARIANT -+FFI_NONCONST_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE); -+# else - FFI_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE); -+# endif - #endif -diff --git a/js/src/ctypes/libffi/src/vax/elfbsd.S b/js/src/ctypes/libffi/src/vax/elfbsd.S -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/vax/elfbsd.S -@@ -0,0 +1,195 @@ -+/* -+ * Copyright (c) 2013 Miodrag Vallat. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining -+ * a copy of this software and associated documentation files (the -+ * ``Software''), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sublicense, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/* -+ * vax Foreign Function Interface -+ */ -+ -+#define LIBFFI_ASM -+#include -+#include -+ -+ .text -+ -+/* -+ * void * %r0 -+ * ffi_call_elfbsd(extended_cif *ecif, 4(%ap) -+ * unsigned bytes, 8(%ap) -+ * unsigned flags, 12(%ap) -+ * void *rvalue, 16(%ap) -+ * void (*fn)()); 20(%ap) -+ */ -+ .globl ffi_call_elfbsd -+ .type ffi_call_elfbsd,@function -+ .align 2 -+ffi_call_elfbsd: -+ .word 0x00c # save R2 and R3 -+ -+ # Allocate stack space for the args -+ subl2 8(%ap), %sp -+ -+ # Call ffi_prep_args -+ pushl %sp -+ pushl 4(%ap) -+ calls $2, ffi_prep_args -+ -+ # Get function pointer -+ movl 20(%ap), %r1 -+ -+ # Build a CALLS frame -+ ashl $-2, 8(%ap), %r0 -+ pushl %r0 # argument stack usage -+ movl %sp, %r0 # future %ap -+ # saved registers -+ bbc $11, 0(%r1), 1f -+ pushl %r11 -+1: bbc $10, 0(%r1), 1f -+ pushl %r10 -+1: bbc $9, 0(%r1), 1f -+ pushl %r9 -+1: bbc $8, 0(%r1), 1f -+ pushl %r8 -+1: bbc $7, 0(%r1), 1f -+ pushl %r7 -+1: bbc $6, 0(%r1), 1f -+ pushl %r6 -+1: bbc $5, 0(%r1), 1f -+ pushl %r5 -+1: bbc $4, 0(%r1), 1f -+ pushl %r4 -+1: bbc $3, 0(%r1), 1f -+ pushl %r3 -+1: bbc $2, 0(%r1), 1f -+ pushl %r2 -+1: -+ pushal 9f -+ pushl %fp -+ pushl %ap -+ movl 16(%ap), %r3 # struct return address, if needed -+ movl %r0, %ap -+ movzwl 4(%fp), %r0 # previous PSW, without the saved registers mask -+ bisl2 $0x20000000, %r0 # calls frame -+ movzwl 0(%r1), %r2 -+ bicw2 $0xf003, %r2 # only keep R11-R2 -+ ashl $16, %r2, %r2 -+ bisl2 %r2, %r0 # saved register mask of the called function -+ pushl %r0 -+ pushl $0 -+ movl %sp, %fp -+ -+ # Invoke the function -+ pushal 2(%r1) # skip procedure entry mask -+ movl %r3, %r1 -+ bicpsw $0x000f -+ rsb -+ -+9: -+ # Copy return value if necessary -+ tstl 16(%ap) -+ jeql 9f -+ movl 16(%ap), %r2 -+ -+ bbc $0, 12(%ap), 1f # CIF_FLAGS_CHAR -+ movb %r0, 0(%r2) -+ brb 9f -+1: -+ bbc $1, 12(%ap), 1f # CIF_FLAGS_SHORT -+ movw %r0, 0(%r2) -+ brb 9f -+1: -+ bbc $2, 12(%ap), 1f # CIF_FLAGS_INT -+ movl %r0, 0(%r2) -+ brb 9f -+1: -+ bbc $3, 12(%ap), 1f # CIF_FLAGS_DINT -+ movq %r0, 0(%r2) -+ brb 9f -+1: -+ movl %r1, %r0 # might have been a struct -+ #brb 9f -+ -+9: -+ ret -+ -+/* -+ * ffi_closure_elfbsd(void); -+ * invoked with %r0: ffi_closure *closure -+ */ -+ .globl ffi_closure_elfbsd -+ .type ffi_closure_elfbsd, @function -+ .align 2 -+ffi_closure_elfbsd: -+ .word 0 -+ -+ # Allocate room on stack for return value -+ subl2 $8, %sp -+ -+ # Invoke the closure function -+ pushal 4(%ap) # calling stack -+ pushal 4(%sp) # return value -+ pushl %r0 # closure -+ calls $3, ffi_closure_elfbsd_inner -+ -+ # Copy return value if necessary -+ bitb $1, %r0 # CIF_FLAGS_CHAR -+ beql 1f -+ movb 0(%sp), %r0 -+ brb 9f -+1: -+ bitb $2, %r0 # CIF_FLAGS_SHORT -+ beql 1f -+ movw 0(%sp), %r0 -+ brb 9f -+1: -+ bitb $4, %r0 # CIF_FLAGS_INT -+ beql 1f -+ movl 0(%sp), %r0 -+ brb 9f -+1: -+ bitb $8, %r0 # CIF_FLAGS_DINT -+ beql 1f -+ movq 0(%sp), %r0 -+ #brb 9f -+1: -+ -+9: -+ ret -+ -+/* -+ * ffi_closure_struct_elfbsd(void); -+ * invoked with %r0: ffi_closure *closure -+ * %r1: struct return address -+ */ -+ .globl ffi_closure_struct_elfbsd -+ .type ffi_closure_struct_elfbsd, @function -+ .align 2 -+ffi_closure_struct_elfbsd: -+ .word 0 -+ -+ # Invoke the closure function -+ pushal 4(%ap) # calling stack -+ pushl %r1 # return value -+ pushl %r0 # closure -+ calls $3, ffi_closure_elfbsd_inner -+ -+ ret -diff --git a/js/src/ctypes/libffi/src/vax/ffi.c b/js/src/ctypes/libffi/src/vax/ffi.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/vax/ffi.c -@@ -0,0 +1,276 @@ -+/* -+ * Copyright (c) 2013 Miodrag Vallat. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining -+ * a copy of this software and associated documentation files (the -+ * ``Software''), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sublicense, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/* -+ * vax Foreign Function Interface -+ * -+ * This file attempts to provide all the FFI entry points which can reliably -+ * be implemented in C. -+ */ -+ -+#include -+#include -+ -+#include -+#include -+ -+#define CIF_FLAGS_CHAR 1 /* for struct only */ -+#define CIF_FLAGS_SHORT 2 /* for struct only */ -+#define CIF_FLAGS_INT 4 -+#define CIF_FLAGS_DINT 8 -+ -+/* -+ * Foreign Function Interface API -+ */ -+ -+void ffi_call_elfbsd (extended_cif *, unsigned, unsigned, void *, -+ void (*) ()); -+void *ffi_prep_args (extended_cif *ecif, void *stack); -+ -+void * -+ffi_prep_args (extended_cif *ecif, void *stack) -+{ -+ unsigned int i; -+ void **p_argv; -+ char *argp; -+ ffi_type **p_arg; -+ void *struct_value_ptr; -+ -+ argp = stack; -+ -+ if (ecif->cif->rtype->type == FFI_TYPE_STRUCT -+ && !ecif->cif->flags) -+ struct_value_ptr = ecif->rvalue; -+ else -+ struct_value_ptr = NULL; -+ -+ p_argv = ecif->avalue; -+ -+ for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; -+ i != 0; -+ i--, p_arg++) -+ { -+ size_t z; -+ -+ z = (*p_arg)->size; -+ if (z < sizeof (int)) -+ { -+ switch ((*p_arg)->type) -+ { -+ case FFI_TYPE_SINT8: -+ *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; -+ break; -+ -+ case FFI_TYPE_UINT8: -+ *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; -+ break; -+ -+ case FFI_TYPE_SINT16: -+ *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; -+ break; -+ -+ case FFI_TYPE_UINT16: -+ *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ memcpy (argp, *p_argv, z); -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ } -+ z = sizeof (int); -+ } -+ else -+ { -+ memcpy (argp, *p_argv, z); -+ -+ /* Align if necessary. */ -+ if ((sizeof(int) - 1) & z) -+ z = ALIGN(z, sizeof(int)); -+ } -+ -+ p_argv++; -+ argp += z; -+ } -+ -+ return struct_value_ptr; -+} -+ -+ffi_status -+ffi_prep_cif_machdep (ffi_cif *cif) -+{ -+ /* Set the return type flag */ -+ switch (cif->rtype->type) -+ { -+ case FFI_TYPE_VOID: -+ cif->flags = 0; -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT && -+ cif->rtype->elements[1]) -+ { -+ cif->flags = 0; -+ break; -+ } -+ -+ if (cif->rtype->size == sizeof (char)) -+ cif->flags = CIF_FLAGS_CHAR; -+ else if (cif->rtype->size == sizeof (short)) -+ cif->flags = CIF_FLAGS_SHORT; -+ else if (cif->rtype->size == sizeof (int)) -+ cif->flags = CIF_FLAGS_INT; -+ else if (cif->rtype->size == 2 * sizeof (int)) -+ cif->flags = CIF_FLAGS_DINT; -+ else -+ cif->flags = 0; -+ break; -+ -+ default: -+ if (cif->rtype->size <= sizeof (int)) -+ cif->flags = CIF_FLAGS_INT; -+ else -+ cif->flags = CIF_FLAGS_DINT; -+ break; -+ } -+ -+ return FFI_OK; -+} -+ -+void -+ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue) -+{ -+ extended_cif ecif; -+ -+ ecif.cif = cif; -+ ecif.avalue = avalue; -+ -+ /* If the return value is a struct and we don't have a return value -+ address then we need to make one. */ -+ -+ if (rvalue == NULL -+ && cif->rtype->type == FFI_TYPE_STRUCT -+ && cif->flags == 0) -+ ecif.rvalue = alloca (cif->rtype->size); -+ else -+ ecif.rvalue = rvalue; -+ -+ switch (cif->abi) -+ { -+ case FFI_ELFBSD: -+ ffi_call_elfbsd (&ecif, cif->bytes, cif->flags, ecif.rvalue, fn); -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+} -+ -+/* -+ * Closure API -+ */ -+ -+void ffi_closure_elfbsd (void); -+void ffi_closure_struct_elfbsd (void); -+unsigned int ffi_closure_elfbsd_inner (ffi_closure *, void *, char *); -+ -+static void -+ffi_prep_closure_elfbsd (ffi_cif *cif, void **avalue, char *stackp) -+{ -+ unsigned int i; -+ void **p_argv; -+ ffi_type **p_arg; -+ -+ p_argv = avalue; -+ -+ for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++) -+ { -+ size_t z; -+ -+ z = (*p_arg)->size; -+ *p_argv = stackp; -+ -+ /* Align if necessary */ -+ if ((sizeof (int) - 1) & z) -+ z = ALIGN(z, sizeof (int)); -+ -+ p_argv++; -+ stackp += z; -+ } -+} -+ -+unsigned int -+ffi_closure_elfbsd_inner (ffi_closure *closure, void *resp, char *stack) -+{ -+ ffi_cif *cif; -+ void **arg_area; -+ -+ cif = closure->cif; -+ arg_area = (void **) alloca (cif->nargs * sizeof (void *)); -+ -+ ffi_prep_closure_elfbsd (cif, arg_area, stack); -+ -+ (closure->fun) (cif, resp, arg_area, closure->user_data); -+ -+ return cif->flags; -+} -+ -+ffi_status -+ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, -+ void (*fun)(ffi_cif *, void *, void **, void *), -+ void *user_data, void *codeloc) -+{ -+ char *tramp = (char *) codeloc; -+ void *fn; -+ -+ FFI_ASSERT (cif->abi == FFI_ELFBSD); -+ -+ /* entry mask */ -+ *(unsigned short *)(tramp + 0) = 0x0000; -+ /* movl #closure, r0 */ -+ tramp[2] = 0xd0; -+ tramp[3] = 0x8f; -+ *(unsigned int *)(tramp + 4) = (unsigned int) closure; -+ tramp[8] = 0x50; -+ -+ if (cif->rtype->type == FFI_TYPE_STRUCT -+ && !cif->flags) -+ fn = &ffi_closure_struct_elfbsd; -+ else -+ fn = &ffi_closure_elfbsd; -+ -+ /* jmpl #fn */ -+ tramp[9] = 0x17; -+ tramp[10] = 0xef; -+ *(unsigned int *)(tramp + 11) = (unsigned int)fn + 2 - -+ (unsigned int)tramp - 9 - 6; -+ -+ closure->cif = cif; -+ closure->user_data = user_data; -+ closure->fun = fun; -+ -+ return FFI_OK; -+} -diff --git a/js/src/ctypes/libffi/src/vax/ffitarget.h b/js/src/ctypes/libffi/src/vax/ffitarget.h -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/vax/ffitarget.h -@@ -0,0 +1,49 @@ -+/* -+ * Copyright (c) 2013 Miodrag Vallat. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining -+ * a copy of this software and associated documentation files (the -+ * ``Software''), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sublicense, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/* -+ * vax Foreign Function Interface -+ */ -+ -+#ifndef LIBFFI_TARGET_H -+#define LIBFFI_TARGET_H -+ -+#ifndef LIBFFI_ASM -+typedef unsigned long ffi_arg; -+typedef signed long ffi_sarg; -+ -+typedef enum ffi_abi { -+ FFI_FIRST_ABI = 0, -+ FFI_ELFBSD, -+ FFI_DEFAULT_ABI = FFI_ELFBSD, -+ FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 -+} ffi_abi; -+#endif -+ -+/* ---- Definitions for closures ----------------------------------------- */ -+ -+#define FFI_CLOSURES 1 -+#define FFI_TRAMPOLINE_SIZE 15 -+#define FFI_NATIVE_RAW_API 0 -+ -+#endif -diff --git a/js/src/ctypes/libffi/src/x86/ffi.c b/js/src/ctypes/libffi/src/x86/ffi.c ---- a/js/src/ctypes/libffi/src/x86/ffi.c -+++ b/js/src/ctypes/libffi/src/x86/ffi.c -@@ -1,14 +1,14 @@ - /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc. - Copyright (c) 2002 Ranjit Mathew - Copyright (c) 2002 Bo Thorsen - Copyright (c) 2002 Roger Sayle -- Copyright (C) 2008 Free Software Foundation, Inc. -+ Copyright (C) 2008, 2010 Free Software Foundation, Inc. - - x86 Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -34,36 +34,56 @@ - #include - #endif - - #include - #include - - #include - -+ - /* ffi_prep_args is called by the assembly routine once stack space - has been allocated for the function's arguments */ - -+void ffi_prep_args(char *stack, extended_cif *ecif); - void ffi_prep_args(char *stack, extended_cif *ecif) - { - register unsigned int i; - register void **p_argv; - register char *argp; - register ffi_type **p_arg; -+#ifndef X86_WIN64 -+ size_t p_stack_args[2]; -+ void *p_stack_data[2]; -+ char *argp2 = stack; -+ int stack_args_count = 0; -+ int cabi = ecif->cif->abi; -+#endif - - argp = stack; - -- if (ecif->cif->flags == FFI_TYPE_STRUCT -+ if ((ecif->cif->flags == FFI_TYPE_STRUCT -+ || ecif->cif->flags == FFI_TYPE_MS_STRUCT) - #ifdef X86_WIN64 - && (ecif->cif->rtype->size != 1 && ecif->cif->rtype->size != 2 - && ecif->cif->rtype->size != 4 && ecif->cif->rtype->size != 8) - #endif - ) - { - *(void **) argp = ecif->rvalue; -+#ifndef X86_WIN64 -+ /* For fastcall/thiscall this is first register-passed -+ argument. */ -+ if (cabi == FFI_THISCALL || cabi == FFI_FASTCALL) -+ { -+ p_stack_args[stack_args_count] = sizeof (void*); -+ p_stack_data[stack_args_count] = argp; -+ ++stack_args_count; -+ } -+#endif - argp += sizeof(void*); - } - - p_argv = ecif->avalue; - - for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; - i != 0; - i--, p_arg++) -@@ -129,24 +149,80 @@ void ffi_prep_args(char *stack, extended - default: - FFI_ASSERT(0); - } - } - else - { - memcpy(argp, *p_argv, z); - } -+ -+#ifndef X86_WIN64 -+ /* For thiscall/fastcall convention register-passed arguments -+ are the first two none-floating-point arguments with a size -+ smaller or equal to sizeof (void*). */ -+ if ((cabi == FFI_THISCALL && stack_args_count < 1) -+ || (cabi == FFI_FASTCALL && stack_args_count < 2)) -+ { -+ if (z <= 4 -+ && ((*p_arg)->type != FFI_TYPE_FLOAT -+ && (*p_arg)->type != FFI_TYPE_STRUCT)) -+ { -+ p_stack_args[stack_args_count] = z; -+ p_stack_data[stack_args_count] = argp; -+ ++stack_args_count; -+ } -+ } -+#endif - p_argv++; - #ifdef X86_WIN64 - argp += (z + sizeof(void*) - 1) & ~(sizeof(void*) - 1); - #else - argp += z; - #endif - } -- -+ -+#ifndef X86_WIN64 -+ /* We need to move the register-passed arguments for thiscall/fastcall -+ on top of stack, so that those can be moved to registers ecx/edx by -+ call-handler. */ -+ if (stack_args_count > 0) -+ { -+ size_t zz = (p_stack_args[0] + 3) & ~3; -+ char *h; -+ -+ /* Move first argument to top-stack position. */ -+ if (p_stack_data[0] != argp2) -+ { -+ h = alloca (zz + 1); -+ memcpy (h, p_stack_data[0], zz); -+ memmove (argp2 + zz, argp2, -+ (size_t) ((char *) p_stack_data[0] - (char*)argp2)); -+ memcpy (argp2, h, zz); -+ } -+ -+ argp2 += zz; -+ --stack_args_count; -+ if (zz > 4) -+ stack_args_count = 0; -+ -+ /* If we have a second argument, then move it on top -+ after the first one. */ -+ if (stack_args_count > 0 && p_stack_data[1] != argp2) -+ { -+ zz = p_stack_args[1]; -+ zz = (zz + 3) & ~3; -+ h = alloca (zz + 1); -+ h = alloca (zz + 1); -+ memcpy (h, p_stack_data[1], zz); -+ memmove (argp2 + zz, argp2, (size_t) ((char*) p_stack_data[1] - (char*)argp2)); -+ memcpy (argp2, h, zz); -+ } -+ } -+#endif - return; - } - - /* Perform machine dependent cif processing */ - ffi_status ffi_prep_cif_machdep(ffi_cif *cif) - { - unsigned int i; - ffi_type **ptr; -@@ -201,17 +277,22 @@ ffi_status ffi_prep_cif_machdep(ffi_cif - } - else if (cif->rtype->size == 8) - { - cif->flags = FFI_TYPE_SINT64; /* same as int64 type */ - } - else - #endif - { -- cif->flags = FFI_TYPE_STRUCT; -+#ifdef X86_WIN32 -+ if (cif->abi == FFI_MS_CDECL) -+ cif->flags = FFI_TYPE_MS_STRUCT; -+ else -+#endif -+ cif->flags = FFI_TYPE_STRUCT; - /* allocate space for return value pointer */ - cif->bytes += ALIGN(sizeof(void*), FFI_SIZEOF_ARG); - } - break; - - default: - #ifdef X86_WIN64 - cif->flags = FFI_TYPE_SINT64; -@@ -223,40 +304,42 @@ ffi_status ffi_prep_cif_machdep(ffi_cif - #endif - break; - } - - for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) - { - if (((*ptr)->alignment - 1) & cif->bytes) - cif->bytes = ALIGN(cif->bytes, (*ptr)->alignment); -- cif->bytes += ALIGN((*ptr)->size, FFI_SIZEOF_ARG); -+ cif->bytes += (unsigned)ALIGN((*ptr)->size, FFI_SIZEOF_ARG); - } - - #ifdef X86_WIN64 - /* ensure space for storing four registers */ - cif->bytes += 4 * sizeof(ffi_arg); - #endif - --#ifdef X86_DARWIN -- cif->bytes = (cif->bytes + 15) & ~0xF; -+#ifndef X86_WIN32 -+#ifndef X86_WIN64 -+ if (cif->abi != FFI_STDCALL && cif->abi != FFI_THISCALL && cif->abi != FFI_FASTCALL) -+#endif -+ cif->bytes = (cif->bytes + 15) & ~0xF; - #endif - - return FFI_OK; - } - - #ifdef X86_WIN64 - extern int - ffi_call_win64(void (*)(char *, extended_cif *), extended_cif *, - unsigned, unsigned, unsigned *, void (*fn)(void)); --#elif defined(X86_WIN32) -+#else - extern void - ffi_call_win32(void (*)(char *, extended_cif *), extended_cif *, -- unsigned, unsigned, unsigned *, void (*fn)(void)); --#else -+ unsigned, unsigned, unsigned, unsigned *, void (*fn)(void)); - extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, - unsigned, unsigned, unsigned *, void (*fn)(void)); - #endif - - void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) - { - extended_cif ecif; - -@@ -271,68 +354,104 @@ void ffi_call(ffi_cif *cif, void (*fn)(v - && cif->flags == FFI_TYPE_STRUCT - && cif->rtype->size != 1 && cif->rtype->size != 2 - && cif->rtype->size != 4 && cif->rtype->size != 8) - { - ecif.rvalue = alloca((cif->rtype->size + 0xF) & ~0xF); - } - #else - if (rvalue == NULL -- && cif->flags == FFI_TYPE_STRUCT) -+ && (cif->flags == FFI_TYPE_STRUCT -+ || cif->flags == FFI_TYPE_MS_STRUCT)) - { - ecif.rvalue = alloca(cif->rtype->size); - } - #endif - else - ecif.rvalue = rvalue; - - - switch (cif->abi) - { - #ifdef X86_WIN64 - case FFI_WIN64: - ffi_call_win64(ffi_prep_args, &ecif, cif->bytes, - cif->flags, ecif.rvalue, fn); - break; --#elif defined(X86_WIN32) -+#else -+#ifndef X86_WIN32 - case FFI_SYSV: -- case FFI_STDCALL: -- ffi_call_win32(ffi_prep_args, &ecif, cif->bytes, cif->flags, -- ecif.rvalue, fn); -+ ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, -+ fn); - break; - #else - case FFI_SYSV: -- ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, -- fn); -+ case FFI_MS_CDECL: -+#endif -+ case FFI_STDCALL: -+ ffi_call_win32(ffi_prep_args, &ecif, cif->abi, cif->bytes, cif->flags, -+ ecif.rvalue, fn); -+ break; -+ case FFI_THISCALL: -+ case FFI_FASTCALL: -+ { -+ unsigned int abi = cif->abi; -+ unsigned int i, passed_regs = 0; -+ -+ if (cif->flags == FFI_TYPE_STRUCT) -+ ++passed_regs; -+ -+ for (i=0; i < cif->nargs && passed_regs < 2;i++) -+ { -+ size_t sz; -+ -+ if (cif->arg_types[i]->type == FFI_TYPE_FLOAT -+ || cif->arg_types[i]->type == FFI_TYPE_STRUCT) -+ continue; -+ sz = (cif->arg_types[i]->size + 3) & ~3; -+ if (sz == 0 || sz > 4) -+ continue; -+ ++passed_regs; -+ } -+ if (passed_regs < 2 && abi == FFI_FASTCALL) -+ abi = FFI_THISCALL; -+ if (passed_regs < 1 && abi == FFI_THISCALL) -+ abi = FFI_STDCALL; -+ ffi_call_win32(ffi_prep_args, &ecif, abi, cif->bytes, cif->flags, -+ ecif.rvalue, fn); -+ } - break; - #endif - default: - FFI_ASSERT(0); - break; - } - } - - - /** private members **/ - - /* The following __attribute__((regparm(1))) decorations will have no effect -- on MSVC - standard cdecl convention applies. */ -+ on MSVC or SUNPRO_C -- standard conventions apply. */ - static void ffi_prep_incoming_args_SYSV (char *stack, void **ret, - void** args, ffi_cif* cif); - void FFI_HIDDEN ffi_closure_SYSV (ffi_closure *) - __attribute__ ((regparm(1))); - unsigned int FFI_HIDDEN ffi_closure_SYSV_inner (ffi_closure *, void **, void *) - __attribute__ ((regparm(1))); - void FFI_HIDDEN ffi_closure_raw_SYSV (ffi_raw_closure *) - __attribute__ ((regparm(1))); --#ifdef X86_WIN32 -+#ifndef X86_WIN64 -+void FFI_HIDDEN ffi_closure_raw_THISCALL (ffi_raw_closure *) -+ __attribute__ ((regparm(1))); - void FFI_HIDDEN ffi_closure_STDCALL (ffi_closure *) - __attribute__ ((regparm(1))); --#endif --#ifdef X86_WIN64 -+void FFI_HIDDEN ffi_closure_THISCALL (ffi_closure *) -+ __attribute__ ((regparm(1))); -+#else - void FFI_HIDDEN ffi_closure_win64 (ffi_closure *); - #endif - - /* This function is jumped to by the trampoline */ - - #ifdef X86_WIN64 - void * FFI_HIDDEN - ffi_closure_win64_inner (ffi_closure *closure, void *args) { -@@ -402,17 +521,18 @@ ffi_prep_incoming_args_SYSV(char *stack, - if (cif->rtype->size > sizeof(ffi_arg) - || (cif->flags == FFI_TYPE_STRUCT - && (cif->rtype->size != 1 && cif->rtype->size != 2 - && cif->rtype->size != 4 && cif->rtype->size != 8))) { - *rvalue = *(void **) argp; - argp += sizeof(void *); - } - #else -- if ( cif->flags == FFI_TYPE_STRUCT ) { -+ if ( cif->flags == FFI_TYPE_STRUCT -+ || cif->flags == FFI_TYPE_MS_STRUCT ) { - *rvalue = *(void **) argp; - argp += sizeof(void *); - } - #endif - - p_argv = avalue; - - for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) -@@ -480,16 +600,43 @@ ffi_prep_incoming_args_SYSV(char *stack, - unsigned int __ctx = (unsigned int)(CTX); \ - unsigned int __dis = __fun - (__ctx + 10); \ - *(unsigned char*) &__tramp[0] = 0xb8; \ - *(unsigned int*) &__tramp[1] = __ctx; /* movl __ctx, %eax */ \ - *(unsigned char *) &__tramp[5] = 0xe9; \ - *(unsigned int*) &__tramp[6] = __dis; /* jmp __fun */ \ - } - -+#define FFI_INIT_TRAMPOLINE_THISCALL(TRAMP,FUN,CTX,SIZE) \ -+{ unsigned char *__tramp = (unsigned char*)(TRAMP); \ -+ unsigned int __fun = (unsigned int)(FUN); \ -+ unsigned int __ctx = (unsigned int)(CTX); \ -+ unsigned int __dis = __fun - (__ctx + 49); \ -+ unsigned short __size = (unsigned short)(SIZE); \ -+ *(unsigned int *) &__tramp[0] = 0x8324048b; /* mov (%esp), %eax */ \ -+ *(unsigned int *) &__tramp[4] = 0x4c890cec; /* sub $12, %esp */ \ -+ *(unsigned int *) &__tramp[8] = 0x04890424; /* mov %ecx, 4(%esp) */ \ -+ *(unsigned char*) &__tramp[12] = 0x24; /* mov %eax, (%esp) */ \ -+ *(unsigned char*) &__tramp[13] = 0xb8; \ -+ *(unsigned int *) &__tramp[14] = __size; /* mov __size, %eax */ \ -+ *(unsigned int *) &__tramp[18] = 0x08244c8d; /* lea 8(%esp), %ecx */ \ -+ *(unsigned int *) &__tramp[22] = 0x4802e8c1; /* shr $2, %eax ; dec %eax */ \ -+ *(unsigned short*) &__tramp[26] = 0x0b74; /* jz 1f */ \ -+ *(unsigned int *) &__tramp[28] = 0x8908518b; /* 2b: mov 8(%ecx), %edx */ \ -+ *(unsigned int *) &__tramp[32] = 0x04c18311; /* mov %edx, (%ecx) ; add $4, %ecx */ \ -+ *(unsigned char*) &__tramp[36] = 0x48; /* dec %eax */ \ -+ *(unsigned short*) &__tramp[37] = 0xf575; /* jnz 2b ; 1f: */ \ -+ *(unsigned char*) &__tramp[39] = 0xb8; \ -+ *(unsigned int*) &__tramp[40] = __ctx; /* movl __ctx, %eax */ \ -+ *(unsigned char *) &__tramp[44] = 0xe8; \ -+ *(unsigned int*) &__tramp[45] = __dis; /* call __fun */ \ -+ *(unsigned char*) &__tramp[49] = 0xc2; /* ret */ \ -+ *(unsigned short*) &__tramp[50] = (__size + 8); /* ret (__size + 8) */ \ -+ } -+ - #define FFI_INIT_TRAMPOLINE_STDCALL(TRAMP,FUN,CTX,SIZE) \ - { unsigned char *__tramp = (unsigned char*)(TRAMP); \ - unsigned int __fun = (unsigned int)(FUN); \ - unsigned int __ctx = (unsigned int)(CTX); \ - unsigned int __dis = __fun - (__ctx + 10); \ - unsigned short __size = (unsigned short)(SIZE); \ - *(unsigned char*) &__tramp[0] = 0xb8; \ - *(unsigned int*) &__tramp[1] = __ctx; /* movl __ctx, %eax */ \ -@@ -521,23 +668,36 @@ ffi_prep_closure_loc (ffi_closure* closu - } - #else - if (cif->abi == FFI_SYSV) - { - FFI_INIT_TRAMPOLINE (&closure->tramp[0], - &ffi_closure_SYSV, - (void*)codeloc); - } --#ifdef X86_WIN32 -+ else if (cif->abi == FFI_THISCALL) -+ { -+ FFI_INIT_TRAMPOLINE_THISCALL (&closure->tramp[0], -+ &ffi_closure_THISCALL, -+ (void*)codeloc, -+ cif->bytes); -+ } - else if (cif->abi == FFI_STDCALL) - { - FFI_INIT_TRAMPOLINE_STDCALL (&closure->tramp[0], - &ffi_closure_STDCALL, - (void*)codeloc, cif->bytes); - } -+#ifdef X86_WIN32 -+ else if (cif->abi == FFI_MS_CDECL) -+ { -+ FFI_INIT_TRAMPOLINE (&closure->tramp[0], -+ &ffi_closure_SYSV, -+ (void*)codeloc); -+ } - #endif /* X86_WIN32 */ - #endif /* !X86_WIN64 */ - else - { - return FFI_BAD_ABI; - } - - closure->cif = cif; -@@ -555,35 +715,48 @@ ffi_status - ffi_prep_raw_closure_loc (ffi_raw_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data, - void *codeloc) - { - int i; - -- if (cif->abi != FFI_SYSV) { -+ if (cif->abi != FFI_SYSV -+#ifndef X86_WIN64 -+ && cif->abi != FFI_THISCALL -+#endif -+ ) - return FFI_BAD_ABI; -- } - - /* we currently don't support certain kinds of arguments for raw - closures. This should be implemented by a separate assembly - language routine, since it would require argument processing, - something we don't do now for performance. */ - - for (i = cif->nargs-1; i >= 0; i--) - { - FFI_ASSERT (cif->arg_types[i]->type != FFI_TYPE_STRUCT); - FFI_ASSERT (cif->arg_types[i]->type != FFI_TYPE_LONGDOUBLE); - } - -- -+#ifndef X86_WIN64 -+ if (cif->abi == FFI_SYSV) -+ { -+#endif - FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_raw_SYSV, - codeloc); -- -+#ifndef X86_WIN64 -+ } -+ else if (cif->abi == FFI_THISCALL) -+ { -+ FFI_INIT_TRAMPOLINE_THISCALL (&closure->tramp[0], &ffi_closure_raw_THISCALL, -+ codeloc, cif->bytes); -+ } -+#endif - closure->cif = cif; - closure->user_data = user_data; - closure->fun = fun; - - return FFI_OK; - } - - static void -@@ -604,37 +777,70 @@ ffi_raw_call(ffi_cif *cif, void (*fn)(vo - void **avalue = (void **)fake_avalue; - - ecif.cif = cif; - ecif.avalue = avalue; - - /* If the return value is a struct and we don't have a return */ - /* value address then we need to make one */ - -- if ((rvalue == NULL) && -- (cif->rtype->type == FFI_TYPE_STRUCT)) -+ if (rvalue == NULL -+ && (cif->flags == FFI_TYPE_STRUCT -+ || cif->flags == FFI_TYPE_MS_STRUCT)) - { - ecif.rvalue = alloca(cif->rtype->size); - } - else - ecif.rvalue = rvalue; - - - switch (cif->abi) - { --#ifdef X86_WIN32 -+#ifndef X86_WIN32 - case FFI_SYSV: -- case FFI_STDCALL: -- ffi_call_win32(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags, -- ecif.rvalue, fn); -+ ffi_call_SYSV(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags, -+ ecif.rvalue, fn); - break; - #else - case FFI_SYSV: -- ffi_call_SYSV(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags, -- ecif.rvalue, fn); -+ case FFI_MS_CDECL: -+#endif -+#ifndef X86_WIN64 -+ case FFI_STDCALL: -+ ffi_call_win32(ffi_prep_args_raw, &ecif, cif->abi, cif->bytes, cif->flags, -+ ecif.rvalue, fn); -+ break; -+ case FFI_THISCALL: -+ case FFI_FASTCALL: -+ { -+ unsigned int abi = cif->abi; -+ unsigned int i, passed_regs = 0; -+ -+ if (cif->flags == FFI_TYPE_STRUCT) -+ ++passed_regs; -+ -+ for (i=0; i < cif->nargs && passed_regs < 2;i++) -+ { -+ size_t sz; -+ -+ if (cif->arg_types[i]->type == FFI_TYPE_FLOAT -+ || cif->arg_types[i]->type == FFI_TYPE_STRUCT) -+ continue; -+ sz = (cif->arg_types[i]->size + 3) & ~3; -+ if (sz == 0 || sz > 4) -+ continue; -+ ++passed_regs; -+ } -+ if (passed_regs < 2 && abi == FFI_FASTCALL) -+ cif->abi = abi = FFI_THISCALL; -+ if (passed_regs < 1 && abi == FFI_THISCALL) -+ cif->abi = abi = FFI_STDCALL; -+ ffi_call_win32(ffi_prep_args_raw, &ecif, abi, cif->bytes, cif->flags, -+ ecif.rvalue, fn); -+ } - break; - #endif - default: - FFI_ASSERT(0); - break; - } - } - -diff --git a/js/src/ctypes/libffi/src/x86/ffi64.c b/js/src/ctypes/libffi/src/x86/ffi64.c ---- a/js/src/ctypes/libffi/src/x86/ffi64.c -+++ b/js/src/ctypes/libffi/src/x86/ffi64.c -@@ -1,13 +1,15 @@ - /* ----------------------------------------------------------------------- -- ffi64.c - Copyright (c) 2002, 2007 Bo Thorsen -- Copyright (c) 2008 Red Hat, Inc. -- -- x86-64 Foreign Function Interface -+ ffi64.c - Copyright (c) 2013 The Written Word, Inc. -+ Copyright (c) 2011 Anthony Green -+ Copyright (c) 2008, 2010 Red Hat, Inc. -+ Copyright (c) 2002, 2007 Bo Thorsen -+ -+ x86-64 Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: -@@ -31,21 +33,40 @@ - #include - #include - - #ifdef __x86_64__ - - #define MAX_GPR_REGS 6 - #define MAX_SSE_REGS 8 - -+#if defined(__INTEL_COMPILER) -+#include "xmmintrin.h" -+#define UINT128 __m128 -+#else -+#if defined(__SUNPRO_C) -+#include -+#define UINT128 __m128i -+#else -+#define UINT128 __int128_t -+#endif -+#endif -+ -+union big_int_union -+{ -+ UINT32 i32; -+ UINT64 i64; -+ UINT128 i128; -+}; -+ - struct register_args - { - /* Registers for argument passing. */ - UINT64 gpr[MAX_GPR_REGS]; -- __int128_t sse[MAX_SSE_REGS]; -+ union big_int_union sse[MAX_SSE_REGS]; - }; - - extern void ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags, - void *raddr, void (*fnaddr)(void), unsigned ssecount); - - /* All reference to register classes here is identical to the code in - gcc/config/i386/i386.c. Do *not* change one without the other. */ - -@@ -126,33 +147,33 @@ merge_classes (enum x86_64_reg_class cla - /* Classify the argument of type TYPE and mode MODE. - CLASSES will be filled by the register class used to pass each word - of the operand. The number of words is returned. In case the parameter - should be passed in memory, 0 is returned. As a special case for zero - sized containers, classes[0] will be NO_CLASS and 1 is returned. - - See the x86-64 PS ABI for details. - */ --static int -+static size_t - classify_argument (ffi_type *type, enum x86_64_reg_class classes[], - size_t byte_offset) - { - switch (type->type) - { - case FFI_TYPE_UINT8: - case FFI_TYPE_SINT8: - case FFI_TYPE_UINT16: - case FFI_TYPE_SINT16: - case FFI_TYPE_UINT32: - case FFI_TYPE_SINT32: - case FFI_TYPE_UINT64: - case FFI_TYPE_SINT64: - case FFI_TYPE_POINTER: - { -- int size = byte_offset + type->size; -+ size_t size = byte_offset + type->size; - - if (size <= 4) - { - classes[0] = X86_64_INTEGERSI_CLASS; - return 1; - } - else if (size <= 8) - { -@@ -177,25 +198,27 @@ classify_argument (ffi_type *type, enum - if (!(byte_offset % 8)) - classes[0] = X86_64_SSESF_CLASS; - else - classes[0] = X86_64_SSE_CLASS; - return 1; - case FFI_TYPE_DOUBLE: - classes[0] = X86_64_SSEDF_CLASS; - return 1; -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE - case FFI_TYPE_LONGDOUBLE: - classes[0] = X86_64_X87_CLASS; - classes[1] = X86_64_X87UP_CLASS; - return 2; -+#endif - case FFI_TYPE_STRUCT: - { -- const int UNITS_PER_WORD = 8; -- int words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD; -- ffi_type **ptr; -+ const size_t UNITS_PER_WORD = 8; -+ size_t words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD; -+ ffi_type **ptr; - int i; - enum x86_64_reg_class subclasses[MAX_CLASSES]; - - /* If the struct is larger than 32 bytes, pass it on the stack. */ - if (type->size > 32) - return 0; - - for (i = 0; i < words; i++) -@@ -207,26 +230,26 @@ classify_argument (ffi_type *type, enum - { - classes[0] = X86_64_NO_CLASS; - return 1; - } - - /* Merge the fields of structure. */ - for (ptr = type->elements; *ptr != NULL; ptr++) - { -- int num; -+ size_t num; - - byte_offset = ALIGN (byte_offset, (*ptr)->alignment); - - num = classify_argument (*ptr, subclasses, byte_offset % 8); - if (num == 0) - return 0; - for (i = 0; i < num; i++) - { -- int pos = byte_offset / 8; -+ size_t pos = byte_offset / 8; - classes[i + pos] = - merge_classes (subclasses[i], classes[i + pos]); - } - - byte_offset += (*ptr)->size; - } - - if (words > 2) -@@ -280,21 +303,22 @@ classify_argument (ffi_type *type, enum - } - return 0; /* Never reached. */ - } - - /* Examine the argument and return set number of register required in each - class. Return zero iff parameter should be passed in memory, otherwise - the number of registers. */ - --static int -+static size_t - examine_argument (ffi_type *type, enum x86_64_reg_class classes[MAX_CLASSES], - _Bool in_return, int *pngpr, int *pnsse) - { -- int i, n, ngpr, nsse; -+ size_t n; -+ int i, ngpr, nsse; - - n = classify_argument (type, classes, 0); - if (n == 0) - return 0; - - ngpr = nsse = 0; - for (i = 0; i < n; ++i) - switch (classes[i]) -@@ -325,19 +349,19 @@ examine_argument (ffi_type *type, enum x - return n; - } - - /* Perform machine dependent cif processing. */ - - ffi_status - ffi_prep_cif_machdep (ffi_cif *cif) - { -- int gprcount, ssecount, i, avn, n, ngpr, nsse, flags; -+ int gprcount, ssecount, i, avn, ngpr, nsse, flags; - enum x86_64_reg_class classes[MAX_CLASSES]; -- size_t bytes; -+ size_t bytes, n; - - gprcount = ssecount = 0; - - flags = cif->rtype->type; - if (flags != FFI_TYPE_VOID) - { - n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse); - if (n == 0) -@@ -385,17 +409,17 @@ ffi_prep_cif_machdep (ffi_cif *cif) - { - gprcount += ngpr; - ssecount += nsse; - } - } - if (ssecount) - flags |= 1 << 11; - cif->flags = flags; -- cif->bytes = ALIGN (bytes, 8); -+ cif->bytes = (unsigned)ALIGN (bytes, 8); - - return FFI_OK; - } - - void - ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) - { - enum x86_64_reg_class classes[MAX_CLASSES]; -@@ -421,25 +445,24 @@ ffi_call (ffi_cif *cif, void (*fn)(void) - reg_args = (struct register_args *) stack; - argp = stack + sizeof (struct register_args); - - gprcount = ssecount = 0; - - /* If the return value is passed in memory, add the pointer as the - first integer argument. */ - if (ret_in_memory) -- reg_args->gpr[gprcount++] = (long) rvalue; -+ reg_args->gpr[gprcount++] = (unsigned long) rvalue; - - avn = cif->nargs; - arg_types = cif->arg_types; - - for (i = 0; i < avn; ++i) - { -- size_t size = arg_types[i]->size; -- int n; -+ size_t n, size = arg_types[i]->size; - - n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse); - if (n == 0 - || gprcount + ngpr > MAX_GPR_REGS - || ssecount + nsse > MAX_SSE_REGS) - { - long align = arg_types[i]->alignment; - -@@ -459,26 +482,43 @@ ffi_call (ffi_cif *cif, void (*fn)(void) - int j; - - for (j = 0; j < n; j++, a += 8, size -= 8) - { - switch (classes[j]) - { - case X86_64_INTEGER_CLASS: - case X86_64_INTEGERSI_CLASS: -- reg_args->gpr[gprcount] = 0; -- memcpy (®_args->gpr[gprcount], a, size < 8 ? size : 8); -+ /* Sign-extend integer arguments passed in general -+ purpose registers, to cope with the fact that -+ LLVM incorrectly assumes that this will be done -+ (the x86-64 PS ABI does not specify this). */ -+ switch (arg_types[i]->type) -+ { -+ case FFI_TYPE_SINT8: -+ *(SINT64 *)®_args->gpr[gprcount] = (SINT64) *((SINT8 *) a); -+ break; -+ case FFI_TYPE_SINT16: -+ *(SINT64 *)®_args->gpr[gprcount] = (SINT64) *((SINT16 *) a); -+ break; -+ case FFI_TYPE_SINT32: -+ *(SINT64 *)®_args->gpr[gprcount] = (SINT64) *((SINT32 *) a); -+ break; -+ default: -+ reg_args->gpr[gprcount] = 0; -+ memcpy (®_args->gpr[gprcount], a, size < 8 ? size : 8); -+ } - gprcount++; - break; - case X86_64_SSE_CLASS: - case X86_64_SSEDF_CLASS: -- reg_args->sse[ssecount++] = *(UINT64 *) a; -+ reg_args->sse[ssecount++].i64 = *(UINT64 *) a; - break; - case X86_64_SSESF_CLASS: -- reg_args->sse[ssecount++] = *(UINT32 *) a; -+ reg_args->sse[ssecount++].i32 = *(UINT32 *) a; - break; - default: - abort(); - } - } - } - } - -@@ -493,22 +533,31 @@ ffi_status - ffi_prep_closure_loc (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*, void*, void**, void*), - void *user_data, - void *codeloc) - { - volatile unsigned short *tramp; - -+ /* Sanity check on the cif ABI. */ -+ { -+ int abi = cif->abi; -+ if (UNLIKELY (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))) -+ return FFI_BAD_ABI; -+ } -+ - tramp = (volatile unsigned short *) &closure->tramp[0]; - - tramp[0] = 0xbb49; /* mov , %r11 */ -- *(void * volatile *) &tramp[1] = ffi_closure_unix64; -+ *((unsigned long long * volatile) &tramp[1]) -+ = (unsigned long) ffi_closure_unix64; - tramp[5] = 0xba49; /* mov , %r10 */ -- *(void * volatile *) &tramp[6] = codeloc; -+ *((unsigned long long * volatile) &tramp[6]) -+ = (unsigned long) codeloc; - - /* Set the carry bit iff the function uses any sse registers. - This is clc or stc, together with the first byte of the jmp. */ - tramp[10] = cif->flags & (1 << 11) ? 0x49f9 : 0x49f8; - - tramp[11] = 0xe3ff; /* jmp *%r11 */ - - closure->cif = cif; -@@ -532,22 +581,22 @@ ffi_closure_unix64_inner(ffi_closure *cl - cif = closure->cif; - avalue = alloca(cif->nargs * sizeof(void *)); - gprcount = ssecount = 0; - - ret = cif->rtype->type; - if (ret != FFI_TYPE_VOID) - { - enum x86_64_reg_class classes[MAX_CLASSES]; -- int n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse); -+ size_t n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse); - if (n == 0) - { - /* The return value goes in memory. Arrange for the closure - return value to go directly back to the original caller. */ -- rvalue = (void *) reg_args->gpr[gprcount++]; -+ rvalue = (void *) (unsigned long) reg_args->gpr[gprcount++]; - /* We don't have to do anything in asm for the return. */ - ret = FFI_TYPE_VOID; - } - else if (ret == FFI_TYPE_STRUCT && n == 2) - { - /* Mark which register the second word of the structure goes in. */ - _Bool sse0 = SSE_CLASS_P (classes[0]); - _Bool sse1 = SSE_CLASS_P (classes[1]); -@@ -555,21 +604,21 @@ ffi_closure_unix64_inner(ffi_closure *cl - ret |= 1 << 8; - else if (sse0 && !sse1) - ret |= 1 << 9; - } - } - - avn = cif->nargs; - arg_types = cif->arg_types; -- -+ - for (i = 0; i < avn; ++i) - { - enum x86_64_reg_class classes[MAX_CLASSES]; -- int n; -+ size_t n; - - n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse); - if (n == 0 - || gprcount + ngpr > MAX_GPR_REGS - || ssecount + nsse > MAX_SSE_REGS) - { - long align = arg_types[i]->alignment; - -diff --git a/js/src/ctypes/libffi/src/x86/ffitarget.h b/js/src/ctypes/libffi/src/x86/ffitarget.h ---- a/js/src/ctypes/libffi/src/x86/ffitarget.h -+++ b/js/src/ctypes/libffi/src/x86/ffitarget.h -@@ -1,11 +1,12 @@ - /* -----------------------------------------------------------------*-C-*- -- ffitarget.h - Copyright (c) 1996-2003, 2010 Red Hat, Inc. -- Copyright (C) 2008 Free Software Foundation, Inc. -+ ffitarget.h - Copyright (c) 2012 Anthony Green -+ Copyright (c) 1996-2003, 2010 Red Hat, Inc. -+ Copyright (C) 2008 Free Software Foundation, Inc. - - Target configuration macros for x86 and x86-64. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -24,16 +25,20 @@ - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - - #ifndef LIBFFI_TARGET_H - #define LIBFFI_TARGET_H - -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ - /* ---- System specific configurations ----------------------------------- */ - - /* For code common to all platforms on x86 and x86_64. */ - #define X86_ANY - - #if defined (X86_64) && defined (__i386__) - #undef X86_64 - #define X86 -@@ -51,71 +56,80 @@ - #ifdef _MSC_VER - typedef unsigned __int64 ffi_arg; - typedef __int64 ffi_sarg; - #else - typedef unsigned long long ffi_arg; - typedef long long ffi_sarg; - #endif - #else -+#if defined __x86_64__ && defined __ILP32__ -+#define FFI_SIZEOF_ARG 8 -+#define FFI_SIZEOF_JAVA_RAW 4 -+typedef unsigned long long ffi_arg; -+typedef long long ffi_sarg; -+#else - typedef unsigned long ffi_arg; - typedef signed long ffi_sarg; - #endif -+#endif - - typedef enum ffi_abi { - FFI_FIRST_ABI = 0, - - /* ---- Intel x86 Win32 ---------- */ - #ifdef X86_WIN32 - FFI_SYSV, - FFI_STDCALL, -+ FFI_THISCALL, -+ FFI_FASTCALL, -+ FFI_MS_CDECL, - FFI_LAST_ABI, -- /* TODO: Add fastcall support for the sake of completeness */ -+#ifdef _MSC_VER -+ FFI_DEFAULT_ABI = FFI_MS_CDECL -+#else - FFI_DEFAULT_ABI = FFI_SYSV -+#endif - - #elif defined(X86_WIN64) - FFI_WIN64, - FFI_LAST_ABI, - FFI_DEFAULT_ABI = FFI_WIN64 - - #else - /* ---- Intel x86 and AMD x86-64 - */ - FFI_SYSV, - FFI_UNIX64, /* Unix variants all use the same ABI for x86-64 */ -+ FFI_THISCALL, -+ FFI_FASTCALL, -+ FFI_STDCALL, - FFI_LAST_ABI, - #if defined(__i386__) || defined(__i386) - FFI_DEFAULT_ABI = FFI_SYSV - #else - FFI_DEFAULT_ABI = FFI_UNIX64 - #endif - #endif - } ffi_abi; - #endif - - /* ---- Definitions for closures ----------------------------------------- */ - - #define FFI_CLOSURES 1 - #define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1) - #define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2) - #define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3) -+#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4) - - #if defined (X86_64) || (defined (__x86_64__) && defined (X86_DARWIN)) - #define FFI_TRAMPOLINE_SIZE 24 - #define FFI_NATIVE_RAW_API 0 --#else --#ifdef X86_WIN32 --#define FFI_TRAMPOLINE_SIZE 13 --#else --#ifdef X86_WIN64 -+#elif defined(X86_WIN64) - #define FFI_TRAMPOLINE_SIZE 29 - #define FFI_NATIVE_RAW_API 0 - #define FFI_NO_RAW_API 1 - #else --#define FFI_TRAMPOLINE_SIZE 10 --#endif --#endif --#ifndef X86_WIN64 -+#define FFI_TRAMPOLINE_SIZE 52 - #define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */ - #endif --#endif - - #endif - -diff --git a/js/src/ctypes/libffi/src/x86/freebsd.S b/js/src/ctypes/libffi/src/x86/freebsd.S ---- a/js/src/ctypes/libffi/src/x86/freebsd.S -+++ b/js/src/ctypes/libffi/src/x86/freebsd.S -@@ -454,8 +454,10 @@ 0: - .byte 0x86 /* DW_CFA_offset, column 0x6 */ - .byte 0x3 /* .uleb128 0x3 */ - .align 4 - .LEFDE3: - - #endif - - #endif /* ifndef __x86_64__ */ -+ -+ .section .note.GNU-stack,"",%progbits -diff --git a/js/src/ctypes/libffi/src/x86/sysv.S b/js/src/ctypes/libffi/src/x86/sysv.S ---- a/js/src/ctypes/libffi/src/x86/sysv.S -+++ b/js/src/ctypes/libffi/src/x86/sysv.S -@@ -1,10 +1,11 @@ - /* ----------------------------------------------------------------------- -- sysv.S - Copyright (c) 1996, 1998, 2001-2003, 2005, 2008, 2010 Red Hat, Inc. -+ sysv.S - Copyright (c) 2013 The Written Word, Inc. -+ - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc. - - X86 Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -176,19 +177,29 @@ ffi_closure_SYSV: - pushl %ebp - .LCFI2: - movl %esp, %ebp - .LCFI3: - subl $40, %esp - leal -24(%ebp), %edx - movl %edx, -12(%ebp) /* resp */ - leal 8(%ebp), %edx -+#ifdef __SUNPRO_C -+ /* The SUNPRO compiler doesn't support GCC's regparm function -+ attribute, so we have to pass all three arguments to -+ ffi_closure_SYSV_inner on the stack. */ -+ movl %edx, 8(%esp) /* args = __builtin_dwarf_cfa () */ -+ leal -12(%ebp), %edx -+ movl %edx, 4(%esp) /* &resp */ -+ movl %eax, (%esp) /* closure */ -+#else - movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */ - leal -12(%ebp), %edx - movl %edx, (%esp) /* &resp */ -+#endif - #if defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE || !defined __PIC__ - call ffi_closure_SYSV_inner - #else - movl %ebx, 8(%esp) - .LCFI7: - call 1f - 1: popl %ebx - addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx -@@ -323,16 +334,38 @@ 0: - .Lrcls_retllong: - movl -24(%ebp), %eax - movl -20(%ebp), %edx - jmp .Lrcls_epilogue - .LFE3: - .size ffi_closure_raw_SYSV, .-ffi_closure_raw_SYSV - #endif - -+#if defined __GNUC__ -+/* Only emit dwarf unwind info when building with GNU toolchain. */ -+ -+#if defined __PIC__ -+# if defined __sun__ && defined __svr4__ -+/* 32-bit Solaris 2/x86 uses datarel encoding for PIC. GNU ld before 2.22 -+ doesn't correctly sort .eh_frame_hdr with mixed encodings, so match this. */ -+# define FDE_ENCODING 0x30 /* datarel */ -+# define FDE_ENCODE(X) X@GOTOFF -+# else -+# define FDE_ENCODING 0x1b /* pcrel sdata4 */ -+# if defined HAVE_AS_X86_PCREL -+# define FDE_ENCODE(X) X-. -+# else -+# define FDE_ENCODE(X) X@rel -+# endif -+# endif -+#else -+# define FDE_ENCODING 0 /* absolute */ -+# define FDE_ENCODE(X) X -+#endif -+ - .section .eh_frame,EH_FRAME_FLAGS,@progbits - .Lframe1: - .long .LECIE1-.LSCIE1 /* Length of Common Information Entry */ - .LSCIE1: - .long 0x0 /* CIE Identifier Tag */ - .byte 0x1 /* CIE Version */ - #ifdef HAVE_AS_ASCII_PSEUDO_OP - #ifdef __PIC__ -@@ -349,37 +382,31 @@ 0: - #else - #error missing .ascii/.string - #endif - .byte 0x1 /* .uleb128 0x1; CIE Code Alignment Factor */ - .byte 0x7c /* .sleb128 -4; CIE Data Alignment Factor */ - .byte 0x8 /* CIE RA Column */ - #ifdef __PIC__ - .byte 0x1 /* .uleb128 0x1; Augmentation size */ -- .byte 0x1b /* FDE Encoding (pcrel sdata4) */ -+ .byte FDE_ENCODING - #endif - .byte 0xc /* DW_CFA_def_cfa */ - .byte 0x4 /* .uleb128 0x4 */ - .byte 0x4 /* .uleb128 0x4 */ - .byte 0x88 /* DW_CFA_offset, column 0x8 */ - .byte 0x1 /* .uleb128 0x1 */ - .align 4 - .LECIE1: - .LSFDE1: - .long .LEFDE1-.LASFDE1 /* FDE Length */ - .LASFDE1: - .long .LASFDE1-.Lframe1 /* FDE CIE offset */ --#if defined __PIC__ && defined HAVE_AS_X86_PCREL -- .long .LFB1-. /* FDE initial location */ --#elif defined __PIC__ -- .long .LFB1@rel --#else -- .long .LFB1 --#endif -- .long .LFE1-.LFB1 /* FDE address range */ -+ .long FDE_ENCODE(.LFB1) /* FDE initial location */ -+ .long .LFE1-.LFB1 /* FDE address range */ - #ifdef __PIC__ - .byte 0x0 /* .uleb128 0x0; Augmentation size */ - #endif - .byte 0x4 /* DW_CFA_advance_loc4 */ - .long .LCFI0-.LFB1 - .byte 0xe /* DW_CFA_def_cfa_offset */ - .byte 0x8 /* .uleb128 0x8 */ - .byte 0x85 /* DW_CFA_offset, column 0x5 */ -@@ -389,24 +416,18 @@ 0: - .byte 0xd /* DW_CFA_def_cfa_register */ - .byte 0x5 /* .uleb128 0x5 */ - .align 4 - .LEFDE1: - .LSFDE2: - .long .LEFDE2-.LASFDE2 /* FDE Length */ - .LASFDE2: - .long .LASFDE2-.Lframe1 /* FDE CIE offset */ --#if defined __PIC__ && defined HAVE_AS_X86_PCREL -- .long .LFB2-. /* FDE initial location */ --#elif defined __PIC__ -- .long .LFB2@rel --#else -- .long .LFB2 --#endif -- .long .LFE2-.LFB2 /* FDE address range */ -+ .long FDE_ENCODE(.LFB2) /* FDE initial location */ -+ .long .LFE2-.LFB2 /* FDE address range */ - #ifdef __PIC__ - .byte 0x0 /* .uleb128 0x0; Augmentation size */ - #endif - .byte 0x4 /* DW_CFA_advance_loc4 */ - .long .LCFI2-.LFB2 - .byte 0xe /* DW_CFA_def_cfa_offset */ - .byte 0x8 /* .uleb128 0x8 */ - .byte 0x85 /* DW_CFA_offset, column 0x5 */ -@@ -425,24 +446,18 @@ 0: - .LEFDE2: - - #if !FFI_NO_RAW_API - - .LSFDE3: - .long .LEFDE3-.LASFDE3 /* FDE Length */ - .LASFDE3: - .long .LASFDE3-.Lframe1 /* FDE CIE offset */ --#if defined __PIC__ && defined HAVE_AS_X86_PCREL -- .long .LFB3-. /* FDE initial location */ --#elif defined __PIC__ -- .long .LFB3@rel --#else -- .long .LFB3 --#endif -- .long .LFE3-.LFB3 /* FDE address range */ -+ .long FDE_ENCODE(.LFB3) /* FDE initial location */ -+ .long .LFE3-.LFB3 /* FDE address range */ - #ifdef __PIC__ - .byte 0x0 /* .uleb128 0x0; Augmentation size */ - #endif - .byte 0x4 /* DW_CFA_advance_loc4 */ - .long .LCFI4-.LFB3 - .byte 0xe /* DW_CFA_def_cfa_offset */ - .byte 0x8 /* .uleb128 0x8 */ - .byte 0x85 /* DW_CFA_offset, column 0x5 */ -@@ -454,14 +469,15 @@ 0: - .byte 0x4 /* DW_CFA_advance_loc4 */ - .long .LCFI6-.LCFI5 - .byte 0x86 /* DW_CFA_offset, column 0x6 */ - .byte 0x3 /* .uleb128 0x3 */ - .align 4 - .LEFDE3: - - #endif -+#endif - - #endif /* ifndef __x86_64__ */ - - #if defined __ELF__ && defined __linux__ - .section .note.GNU-stack,"",@progbits - #endif -diff --git a/js/src/ctypes/libffi/src/x86/unix64.S b/js/src/ctypes/libffi/src/x86/unix64.S ---- a/js/src/ctypes/libffi/src/x86/unix64.S -+++ b/js/src/ctypes/libffi/src/x86/unix64.S -@@ -1,11 +1,12 @@ - /* ----------------------------------------------------------------------- -- unix64.S - Copyright (c) 2002 Bo Thorsen -- Copyright (c) 2008 Red Hat, Inc -+ unix64.S - Copyright (c) 2013 The Written Word, Inc. -+ - Copyright (c) 2008 Red Hat, Inc -+ - Copyright (c) 2002 Bo Thorsen - - x86-64 Foreign Function Interface - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to -@@ -319,16 +320,19 @@ ffi_closure_unix64: - movdqa %xmm5, 128(%rsp) - movdqa %xmm6, 144(%rsp) - movdqa %xmm7, 160(%rsp) - jmp .Lret_from_save_sse - - .LUW9: - .size ffi_closure_unix64,.-ffi_closure_unix64 - -+#ifdef __GNUC__ -+/* Only emit DWARF unwind info when building with the GNU toolchain. */ -+ - #ifdef HAVE_AS_X86_64_UNWIND_SECTION_TYPE - .section .eh_frame,"a",@unwind - #else - .section .eh_frame,"a",@progbits - #endif - .Lframe1: - .long .LECIE1-.LSCIE1 /* CIE Length */ - .LSCIE1: -@@ -414,13 +418,15 @@ ffi_closure_unix64: - - .byte 0x4 /* DW_CFA_advance_loc4 */ - .long .LUW8-.LUW7 - .byte 0xb /* DW_CFA_restore_state */ - - .align 8 - .LEFDE3: - -+#endif /* __GNUC__ */ -+ - #endif /* __x86_64__ */ - - #if defined __ELF__ && defined __linux__ - .section .note.GNU-stack,"",@progbits - #endif -diff --git a/js/src/ctypes/libffi/src/x86/win32.S b/js/src/ctypes/libffi/src/x86/win32.S ---- a/js/src/ctypes/libffi/src/x86/win32.S -+++ b/js/src/ctypes/libffi/src/x86/win32.S -@@ -40,16 +40,17 @@ - - EXTRN ffi_closure_SYSV_inner:NEAR - - _TEXT SEGMENT - - ffi_call_win32 PROC NEAR, - ffi_prep_args : NEAR PTR DWORD, - ecif : NEAR PTR DWORD, -+ cif_abi : DWORD, - cif_bytes : DWORD, - cif_flags : DWORD, - rvalue : NEAR PTR DWORD, - fn : NEAR PTR DWORD - - ;; Make room for all of the new args. - mov ecx, cif_bytes - sub esp, ecx -@@ -59,16 +60,29 @@ ffi_call_win32 PROC NEAR, - ;; Place all of the ffi_prep_args in position - push ecif - push eax - call ffi_prep_args - - ;; Return stack to previous state and call the function - add esp, 8 - -+ ;; Handle thiscall and fastcall -+ cmp cif_abi, 3 ;; FFI_THISCALL -+ jz do_thiscall -+ cmp cif_abi, 4 ;; FFI_FASTCALL -+ jnz do_stdcall -+ mov ecx, DWORD PTR [esp] -+ mov edx, DWORD PTR [esp+4] -+ add esp, 8 -+ jmp do_stdcall -+do_thiscall: -+ mov ecx, DWORD PTR [esp] -+ add esp, 4 -+do_stdcall: - call fn - - ;; cdecl: we restore esp in the epilogue, so there's no need to - ;; remove the space we pushed for the args. - ;; stdcall: the callee has already cleaned the stack. - - ;; Load ecx with the return type code - mov ecx, cif_flags -@@ -89,41 +103,47 @@ ca_jumptable: - jmp [ca_jumpdata + 4 * ecx] - ca_jumpdata: - ;; Do not insert anything here between label and jump table. - dd offset ca_epilogue ;; FFI_TYPE_VOID - dd offset ca_retint ;; FFI_TYPE_INT - dd offset ca_retfloat ;; FFI_TYPE_FLOAT - dd offset ca_retdouble ;; FFI_TYPE_DOUBLE - dd offset ca_retlongdouble ;; FFI_TYPE_LONGDOUBLE -- dd offset ca_retint8 ;; FFI_TYPE_UINT8 -- dd offset ca_retint8 ;; FFI_TYPE_SINT8 -- dd offset ca_retint16 ;; FFI_TYPE_UINT16 -- dd offset ca_retint16 ;; FFI_TYPE_SINT16 -+ dd offset ca_retuint8 ;; FFI_TYPE_UINT8 -+ dd offset ca_retsint8 ;; FFI_TYPE_SINT8 -+ dd offset ca_retuint16 ;; FFI_TYPE_UINT16 -+ dd offset ca_retsint16 ;; FFI_TYPE_SINT16 - dd offset ca_retint ;; FFI_TYPE_UINT32 - dd offset ca_retint ;; FFI_TYPE_SINT32 - dd offset ca_retint64 ;; FFI_TYPE_UINT64 - dd offset ca_retint64 ;; FFI_TYPE_SINT64 - dd offset ca_epilogue ;; FFI_TYPE_STRUCT - dd offset ca_retint ;; FFI_TYPE_POINTER -- dd offset ca_retint8 ;; FFI_TYPE_SMALL_STRUCT_1B -- dd offset ca_retint16 ;; FFI_TYPE_SMALL_STRUCT_2B -+ dd offset ca_retstruct1b ;; FFI_TYPE_SMALL_STRUCT_1B -+ dd offset ca_retstruct2b ;; FFI_TYPE_SMALL_STRUCT_2B - dd offset ca_retint ;; FFI_TYPE_SMALL_STRUCT_4B -+ dd offset ca_epilogue ;; FFI_TYPE_MS_STRUCT - --ca_retint8: -- ;; Load %ecx with the pointer to storage for the return value -- mov ecx, rvalue -- mov [ecx + 0], al -- jmp ca_epilogue -+ /* Sign/zero extend as appropriate. */ -+ca_retuint8: -+ movzx eax, al -+ jmp ca_retint - --ca_retint16: -- ;; Load %ecx with the pointer to storage for the return value -- mov ecx, rvalue -- mov [ecx + 0], ax -- jmp ca_epilogue -+ca_retsint8: -+ movsx eax, al -+ jmp ca_retint -+ -+ca_retuint16: -+ movzx eax, ax -+ jmp ca_retint -+ -+ca_retsint16: -+ movsx eax, ax -+ jmp ca_retint - - ca_retint: - ;; Load %ecx with the pointer to storage for the return value - mov ecx, rvalue - mov [ecx + 0], eax - jmp ca_epilogue - - ca_retint64: -@@ -146,64 +166,94 @@ ca_retdouble: - jmp ca_epilogue - - ca_retlongdouble: - ;; Load %ecx with the pointer to storage for the return value - mov ecx, rvalue - fstp TBYTE PTR [ecx] - jmp ca_epilogue - -+ca_retstruct1b: -+ ;; Load %ecx with the pointer to storage for the return value -+ mov ecx, rvalue -+ mov [ecx + 0], al -+ jmp ca_epilogue -+ -+ca_retstruct2b: -+ ;; Load %ecx with the pointer to storage for the return value -+ mov ecx, rvalue -+ mov [ecx + 0], ax -+ jmp ca_epilogue -+ - ca_epilogue: - ;; Epilogue code is autogenerated. - ret - ffi_call_win32 ENDP - -+ffi_closure_THISCALL PROC NEAR FORCEFRAME -+ sub esp, 40 -+ lea edx, [ebp -24] -+ mov [ebp - 12], edx /* resp */ -+ lea edx, [ebp + 12] /* account for stub return address on stack */ -+ jmp stub -+ffi_closure_THISCALL ENDP -+ - ffi_closure_SYSV PROC NEAR FORCEFRAME - ;; the ffi_closure ctx is passed in eax by the trampoline. - - sub esp, 40 - lea edx, [ebp - 24] - mov [ebp - 12], edx ;; resp - lea edx, [ebp + 8] -+stub:: - mov [esp + 8], edx ;; args - lea edx, [ebp - 12] - mov [esp + 4], edx ;; &resp - mov [esp], eax ;; closure - call ffi_closure_SYSV_inner - mov ecx, [ebp - 12] - - cs_jumptable: - jmp [cs_jumpdata + 4 * eax] - cs_jumpdata: - ;; Do not insert anything here between the label and jump table. - dd offset cs_epilogue ;; FFI_TYPE_VOID - dd offset cs_retint ;; FFI_TYPE_INT - dd offset cs_retfloat ;; FFI_TYPE_FLOAT - dd offset cs_retdouble ;; FFI_TYPE_DOUBLE - dd offset cs_retlongdouble ;; FFI_TYPE_LONGDOUBLE -- dd offset cs_retint8 ;; FFI_TYPE_UINT8 -- dd offset cs_retint8 ;; FFI_TYPE_SINT8 -- dd offset cs_retint16 ;; FFI_TYPE_UINT16 -- dd offset cs_retint16 ;; FFI_TYPE_SINT16 -+ dd offset cs_retuint8 ;; FFI_TYPE_UINT8 -+ dd offset cs_retsint8 ;; FFI_TYPE_SINT8 -+ dd offset cs_retuint16 ;; FFI_TYPE_UINT16 -+ dd offset cs_retsint16 ;; FFI_TYPE_SINT16 - dd offset cs_retint ;; FFI_TYPE_UINT32 - dd offset cs_retint ;; FFI_TYPE_SINT32 - dd offset cs_retint64 ;; FFI_TYPE_UINT64 - dd offset cs_retint64 ;; FFI_TYPE_SINT64 - dd offset cs_retstruct ;; FFI_TYPE_STRUCT - dd offset cs_retint ;; FFI_TYPE_POINTER -- dd offset cs_retint8 ;; FFI_TYPE_SMALL_STRUCT_1B -- dd offset cs_retint16 ;; FFI_TYPE_SMALL_STRUCT_2B -+ dd offset cs_retsint8 ;; FFI_TYPE_SMALL_STRUCT_1B -+ dd offset cs_retsint16 ;; FFI_TYPE_SMALL_STRUCT_2B - dd offset cs_retint ;; FFI_TYPE_SMALL_STRUCT_4B -+ dd offset cs_retmsstruct ;; FFI_TYPE_MS_STRUCT - --cs_retint8: -- mov al, [ecx] -+cs_retuint8: -+ movzx eax, BYTE PTR [ecx] - jmp cs_epilogue - --cs_retint16: -- mov ax, [ecx] -+cs_retsint8: -+ movsx eax, BYTE PTR [ecx] -+ jmp cs_epilogue -+ -+cs_retuint16: -+ movzx eax, WORD PTR [ecx] -+ jmp cs_epilogue -+ -+cs_retsint16: -+ movsx eax, WORD PTR [ecx] - jmp cs_epilogue - - cs_retint: - mov eax, [ecx] - jmp cs_epilogue - - cs_retint64: - mov eax, [ecx + 0] -@@ -222,36 +272,52 @@ cs_retlongdouble: - fld TBYTE PTR [ecx] - jmp cs_epilogue - - cs_retstruct: - ;; Caller expects us to pop struct return value pointer hidden arg. - ;; Epilogue code is autogenerated. - ret 4 - -+cs_retmsstruct: -+ ;; Caller expects us to return a pointer to the real return value. -+ mov eax, ecx -+ ;; Caller doesn't expects us to pop struct return value pointer hidden arg. -+ jmp cs_epilogue -+ - cs_epilogue: - ;; Epilogue code is autogenerated. - ret - ffi_closure_SYSV ENDP - - #if !FFI_NO_RAW_API - - #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) AND NOT 3) - #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4) - #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) - #define CIF_FLAGS_OFFSET 20 - --ffi_closure_raw_SYSV PROC NEAR USES esi -+ffi_closure_raw_THISCALL PROC NEAR USES esi FORCEFRAME -+ sub esp, 36 -+ mov esi, [eax + RAW_CLOSURE_CIF_OFFSET] ;; closure->cif -+ mov edx, [eax + RAW_CLOSURE_USER_DATA_OFFSET] ;; closure->user_data -+ mov [esp + 12], edx -+ lea edx, [ebp + 12] -+ jmp stubraw -+ffi_closure_raw_THISCALL ENDP -+ -+ffi_closure_raw_SYSV PROC NEAR USES esi FORCEFRAME - ;; the ffi_closure ctx is passed in eax by the trampoline. - - sub esp, 40 - mov esi, [eax + RAW_CLOSURE_CIF_OFFSET] ;; closure->cif - mov edx, [eax + RAW_CLOSURE_USER_DATA_OFFSET] ;; closure->user_data - mov [esp + 12], edx ;; user_data - lea edx, [ebp + 8] -+stubraw:: - mov [esp + 8], edx ;; raw_args - lea edx, [ebp - 24] - mov [esp + 4], edx ;; &res - mov [esp], esi ;; cif - call DWORD PTR [eax + RAW_CLOSURE_FUN_OFFSET] ;; closure->fun - mov eax, [esi + CIF_FLAGS_OFFSET] ;; cif->flags - lea ecx, [ebp - 24] - -@@ -259,36 +325,45 @@ cr_jumptable: - jmp [cr_jumpdata + 4 * eax] - cr_jumpdata: - ;; Do not insert anything here between the label and jump table. - dd offset cr_epilogue ;; FFI_TYPE_VOID - dd offset cr_retint ;; FFI_TYPE_INT - dd offset cr_retfloat ;; FFI_TYPE_FLOAT - dd offset cr_retdouble ;; FFI_TYPE_DOUBLE - dd offset cr_retlongdouble ;; FFI_TYPE_LONGDOUBLE -- dd offset cr_retint8 ;; FFI_TYPE_UINT8 -- dd offset cr_retint8 ;; FFI_TYPE_SINT8 -- dd offset cr_retint16 ;; FFI_TYPE_UINT16 -- dd offset cr_retint16 ;; FFI_TYPE_SINT16 -+ dd offset cr_retuint8 ;; FFI_TYPE_UINT8 -+ dd offset cr_retsint8 ;; FFI_TYPE_SINT8 -+ dd offset cr_retuint16 ;; FFI_TYPE_UINT16 -+ dd offset cr_retsint16 ;; FFI_TYPE_SINT16 - dd offset cr_retint ;; FFI_TYPE_UINT32 - dd offset cr_retint ;; FFI_TYPE_SINT32 - dd offset cr_retint64 ;; FFI_TYPE_UINT64 - dd offset cr_retint64 ;; FFI_TYPE_SINT64 - dd offset cr_epilogue ;; FFI_TYPE_STRUCT - dd offset cr_retint ;; FFI_TYPE_POINTER -- dd offset cr_retint8 ;; FFI_TYPE_SMALL_STRUCT_1B -- dd offset cr_retint16 ;; FFI_TYPE_SMALL_STRUCT_2B -+ dd offset cr_retsint8 ;; FFI_TYPE_SMALL_STRUCT_1B -+ dd offset cr_retsint16 ;; FFI_TYPE_SMALL_STRUCT_2B - dd offset cr_retint ;; FFI_TYPE_SMALL_STRUCT_4B -+ dd offset cr_epilogue ;; FFI_TYPE_MS_STRUCT - --cr_retint8: -- mov al, [ecx] -+cr_retuint8: -+ movzx eax, BYTE PTR [ecx] - jmp cr_epilogue - --cr_retint16: -- mov ax, [ecx] -+cr_retsint8: -+ movsx eax, BYTE PTR [ecx] -+ jmp cr_epilogue -+ -+cr_retuint16: -+ movzx eax, WORD PTR [ecx] -+ jmp cr_epilogue -+ -+cr_retsint16: -+ movsx eax, WORD PTR [ecx] - jmp cr_epilogue - - cr_retint: - mov eax, [ecx] - jmp cr_epilogue - - cr_retint64: - mov eax, [ecx + 0] -@@ -332,36 +407,44 @@ cd_jumptable: - jmp [cd_jumpdata + 4 * eax] - cd_jumpdata: - ;; Do not insert anything here between the label and jump table. - dd offset cd_epilogue ;; FFI_TYPE_VOID - dd offset cd_retint ;; FFI_TYPE_INT - dd offset cd_retfloat ;; FFI_TYPE_FLOAT - dd offset cd_retdouble ;; FFI_TYPE_DOUBLE - dd offset cd_retlongdouble ;; FFI_TYPE_LONGDOUBLE -- dd offset cd_retint8 ;; FFI_TYPE_UINT8 -- dd offset cd_retint8 ;; FFI_TYPE_SINT8 -- dd offset cd_retint16 ;; FFI_TYPE_UINT16 -- dd offset cd_retint16 ;; FFI_TYPE_SINT16 -+ dd offset cd_retuint8 ;; FFI_TYPE_UINT8 -+ dd offset cd_retsint8 ;; FFI_TYPE_SINT8 -+ dd offset cd_retuint16 ;; FFI_TYPE_UINT16 -+ dd offset cd_retsint16 ;; FFI_TYPE_SINT16 - dd offset cd_retint ;; FFI_TYPE_UINT32 - dd offset cd_retint ;; FFI_TYPE_SINT32 - dd offset cd_retint64 ;; FFI_TYPE_UINT64 - dd offset cd_retint64 ;; FFI_TYPE_SINT64 - dd offset cd_epilogue ;; FFI_TYPE_STRUCT - dd offset cd_retint ;; FFI_TYPE_POINTER -- dd offset cd_retint8 ;; FFI_TYPE_SMALL_STRUCT_1B -- dd offset cd_retint16 ;; FFI_TYPE_SMALL_STRUCT_2B -+ dd offset cd_retsint8 ;; FFI_TYPE_SMALL_STRUCT_1B -+ dd offset cd_retsint16 ;; FFI_TYPE_SMALL_STRUCT_2B - dd offset cd_retint ;; FFI_TYPE_SMALL_STRUCT_4B - --cd_retint8: -- mov al, [ecx] -+cd_retuint8: -+ movzx eax, BYTE PTR [ecx] - jmp cd_epilogue - --cd_retint16: -- mov ax, [ecx] -+cd_retsint8: -+ movsx eax, BYTE PTR [ecx] -+ jmp cd_epilogue -+ -+cd_retuint16: -+ movzx eax, WORD PTR [ecx] -+ jmp cd_epilogue -+ -+cd_retsint16: -+ movsx eax, WORD PTR [ecx] - jmp cd_epilogue - - cd_retint: - mov eax, [ecx] - jmp cd_epilogue - - cd_retint64: - mov eax, [ecx + 0] -@@ -385,94 +468,117 @@ cd_epilogue: - ret - ffi_closure_STDCALL ENDP - - _TEXT ENDS - END - - #else - -+#if defined(SYMBOL_UNDERSCORE) -+#define USCORE_SYMBOL(x) _##x -+#else -+#define USCORE_SYMBOL(x) x -+#endif - .text - - # This assumes we are using gas. - .balign 16 -- .globl _ffi_call_win32 --#ifndef __OS2__ -+FFI_HIDDEN(ffi_call_win32) -+ .globl USCORE_SYMBOL(ffi_call_win32) -+#if defined(X86_WIN32) && !defined(__OS2__) - .def _ffi_call_win32; .scl 2; .type 32; .endef - #endif --_ffi_call_win32: -+USCORE_SYMBOL(ffi_call_win32): - .LFB1: - pushl %ebp - .LCFI0: - movl %esp,%ebp - .LCFI1: - # Make room for all of the new args. -- movl 16(%ebp),%ecx -+ movl 20(%ebp),%ecx - subl %ecx,%esp - - movl %esp,%eax - - # Place all of the ffi_prep_args in position - pushl 12(%ebp) - pushl %eax - call *8(%ebp) - - # Return stack to previous state and call the function - addl $8,%esp -- -+ -+ # Handle fastcall and thiscall -+ cmpl $3, 16(%ebp) # FFI_THISCALL -+ jz .do_thiscall -+ cmpl $4, 16(%ebp) # FFI_FASTCALL -+ jnz .do_fncall -+ movl (%esp), %ecx -+ movl 4(%esp), %edx -+ addl $8, %esp -+ jmp .do_fncall -+.do_thiscall: -+ movl (%esp), %ecx -+ addl $4, %esp -+ -+.do_fncall: -+ - # FIXME: Align the stack to a 128-bit boundary to avoid - # potential performance hits. - -- call *28(%ebp) -+ call *32(%ebp) - - # stdcall functions pop arguments off the stack themselves - - # Load %ecx with the return type code -- movl 20(%ebp),%ecx -+ movl 24(%ebp),%ecx - - # If the return value pointer is NULL, assume no return value. -- cmpl $0,24(%ebp) -+ cmpl $0,28(%ebp) - jne 0f - - # Even if there is no space for the return value, we are - # obliged to handle floating-point values. - cmpl $FFI_TYPE_FLOAT,%ecx - jne .Lnoretval - fstp %st(0) - - jmp .Lepilogue - - 0: - call 1f - # Do not insert anything here between the call and the jump table. - .Lstore_table: -- .long .Lnoretval /* FFI_TYPE_VOID */ -- .long .Lretint /* FFI_TYPE_INT */ -- .long .Lretfloat /* FFI_TYPE_FLOAT */ -- .long .Lretdouble /* FFI_TYPE_DOUBLE */ -- .long .Lretlongdouble /* FFI_TYPE_LONGDOUBLE */ -- .long .Lretuint8 /* FFI_TYPE_UINT8 */ -- .long .Lretsint8 /* FFI_TYPE_SINT8 */ -- .long .Lretuint16 /* FFI_TYPE_UINT16 */ -- .long .Lretsint16 /* FFI_TYPE_SINT16 */ -- .long .Lretint /* FFI_TYPE_UINT32 */ -- .long .Lretint /* FFI_TYPE_SINT32 */ -- .long .Lretint64 /* FFI_TYPE_UINT64 */ -- .long .Lretint64 /* FFI_TYPE_SINT64 */ -- .long .Lretstruct /* FFI_TYPE_STRUCT */ -- .long .Lretint /* FFI_TYPE_POINTER */ -- .long .Lretstruct1b /* FFI_TYPE_SMALL_STRUCT_1B */ -- .long .Lretstruct2b /* FFI_TYPE_SMALL_STRUCT_2B */ -- .long .Lretstruct4b /* FFI_TYPE_SMALL_STRUCT_4B */ -+ .long .Lnoretval-.Lstore_table /* FFI_TYPE_VOID */ -+ .long .Lretint-.Lstore_table /* FFI_TYPE_INT */ -+ .long .Lretfloat-.Lstore_table /* FFI_TYPE_FLOAT */ -+ .long .Lretdouble-.Lstore_table /* FFI_TYPE_DOUBLE */ -+ .long .Lretlongdouble-.Lstore_table /* FFI_TYPE_LONGDOUBLE */ -+ .long .Lretuint8-.Lstore_table /* FFI_TYPE_UINT8 */ -+ .long .Lretsint8-.Lstore_table /* FFI_TYPE_SINT8 */ -+ .long .Lretuint16-.Lstore_table /* FFI_TYPE_UINT16 */ -+ .long .Lretsint16-.Lstore_table /* FFI_TYPE_SINT16 */ -+ .long .Lretint-.Lstore_table /* FFI_TYPE_UINT32 */ -+ .long .Lretint-.Lstore_table /* FFI_TYPE_SINT32 */ -+ .long .Lretint64-.Lstore_table /* FFI_TYPE_UINT64 */ -+ .long .Lretint64-.Lstore_table /* FFI_TYPE_SINT64 */ -+ .long .Lretstruct-.Lstore_table /* FFI_TYPE_STRUCT */ -+ .long .Lretint-.Lstore_table /* FFI_TYPE_POINTER */ -+ .long .Lretstruct1b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_1B */ -+ .long .Lretstruct2b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_2B */ -+ .long .Lretstruct4b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_4B */ -+ .long .Lretstruct-.Lstore_table /* FFI_TYPE_MS_STRUCT */ - 1: -- add %ecx, %ecx -- add %ecx, %ecx -+ shl $2, %ecx -+ add (%esp),%ecx -+ mov (%ecx),%ecx - add (%esp),%ecx - add $4, %esp -- jmp *(%ecx) -+ jmp *%ecx - - /* Sign/zero extend as appropriate. */ - .Lretsint8: - movsbl %al, %eax - jmp .Lretint - - .Lretsint16: - movswl %ax, %eax -@@ -483,125 +589,156 @@ 1: - jmp .Lretint - - .Lretuint16: - movzwl %ax, %eax - jmp .Lretint - - .Lretint: - # Load %ecx with the pointer to storage for the return value -- movl 24(%ebp),%ecx -+ movl 28(%ebp),%ecx - movl %eax,0(%ecx) - jmp .Lepilogue - - .Lretfloat: - # Load %ecx with the pointer to storage for the return value -- movl 24(%ebp),%ecx -+ movl 28(%ebp),%ecx - fstps (%ecx) - jmp .Lepilogue - - .Lretdouble: - # Load %ecx with the pointer to storage for the return value -- movl 24(%ebp),%ecx -+ movl 28(%ebp),%ecx - fstpl (%ecx) - jmp .Lepilogue - - .Lretlongdouble: - # Load %ecx with the pointer to storage for the return value -- movl 24(%ebp),%ecx -+ movl 28(%ebp),%ecx - fstpt (%ecx) - jmp .Lepilogue - - .Lretint64: - # Load %ecx with the pointer to storage for the return value -- movl 24(%ebp),%ecx -+ movl 28(%ebp),%ecx - movl %eax,0(%ecx) - movl %edx,4(%ecx) - jmp .Lepilogue - - .Lretstruct1b: - # Load %ecx with the pointer to storage for the return value -- movl 24(%ebp),%ecx -+ movl 28(%ebp),%ecx - movb %al,0(%ecx) - jmp .Lepilogue - - .Lretstruct2b: - # Load %ecx with the pointer to storage for the return value -- movl 24(%ebp),%ecx -+ movl 28(%ebp),%ecx - movw %ax,0(%ecx) - jmp .Lepilogue - - .Lretstruct4b: - # Load %ecx with the pointer to storage for the return value -- movl 24(%ebp),%ecx -+ movl 28(%ebp),%ecx - movl %eax,0(%ecx) - jmp .Lepilogue - - .Lretstruct: - # Nothing to do! - - .Lnoretval: - .Lepilogue: - movl %ebp,%esp - popl %ebp - ret - .ffi_call_win32_end: -+ .balign 16 -+FFI_HIDDEN(ffi_closure_THISCALL) -+ .globl USCORE_SYMBOL(ffi_closure_THISCALL) -+#if defined(X86_WIN32) && !defined(__OS2__) -+ .def _ffi_closure_THISCALL; .scl 2; .type 32; .endef -+#endif -+USCORE_SYMBOL(ffi_closure_THISCALL): -+ pushl %ebp -+ movl %esp, %ebp -+ subl $40, %esp -+ leal -24(%ebp), %edx -+ movl %edx, -12(%ebp) /* resp */ -+ leal 12(%ebp), %edx /* account for stub return address on stack */ -+ jmp .stub - .LFE1: - - # This assumes we are using gas. - .balign 16 -- .globl _ffi_closure_SYSV --#ifndef __OS2__ -+FFI_HIDDEN(ffi_closure_SYSV) -+#if defined(X86_WIN32) -+ .globl USCORE_SYMBOL(ffi_closure_SYSV) -+#if defined(X86_WIN32) && !defined(__OS2__) - .def _ffi_closure_SYSV; .scl 2; .type 32; .endef - #endif --_ffi_closure_SYSV: -+USCORE_SYMBOL(ffi_closure_SYSV): -+#endif - .LFB3: - pushl %ebp - .LCFI4: - movl %esp, %ebp - .LCFI5: - subl $40, %esp - leal -24(%ebp), %edx - movl %edx, -12(%ebp) /* resp */ - leal 8(%ebp), %edx -+.stub: - movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */ - leal -12(%ebp), %edx - movl %edx, (%esp) /* &resp */ -- call _ffi_closure_SYSV_inner -+#if defined(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE) || !defined(__PIC__) -+ call USCORE_SYMBOL(ffi_closure_SYSV_inner) -+#elif defined(X86_DARWIN) -+ calll L_ffi_closure_SYSV_inner$stub -+#else -+ movl %ebx, 8(%esp) -+ call 1f -+1: popl %ebx -+ addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx -+ call ffi_closure_SYSV_inner@PLT -+ movl 8(%esp), %ebx -+#endif - movl -12(%ebp), %ecx - - 0: - call 1f - # Do not insert anything here between the call and the jump table. - .Lcls_store_table: -- .long .Lcls_noretval /* FFI_TYPE_VOID */ -- .long .Lcls_retint /* FFI_TYPE_INT */ -- .long .Lcls_retfloat /* FFI_TYPE_FLOAT */ -- .long .Lcls_retdouble /* FFI_TYPE_DOUBLE */ -- .long .Lcls_retldouble /* FFI_TYPE_LONGDOUBLE */ -- .long .Lcls_retuint8 /* FFI_TYPE_UINT8 */ -- .long .Lcls_retsint8 /* FFI_TYPE_SINT8 */ -- .long .Lcls_retuint16 /* FFI_TYPE_UINT16 */ -- .long .Lcls_retsint16 /* FFI_TYPE_SINT16 */ -- .long .Lcls_retint /* FFI_TYPE_UINT32 */ -- .long .Lcls_retint /* FFI_TYPE_SINT32 */ -- .long .Lcls_retllong /* FFI_TYPE_UINT64 */ -- .long .Lcls_retllong /* FFI_TYPE_SINT64 */ -- .long .Lcls_retstruct /* FFI_TYPE_STRUCT */ -- .long .Lcls_retint /* FFI_TYPE_POINTER */ -- .long .Lcls_retstruct1 /* FFI_TYPE_SMALL_STRUCT_1B */ -- .long .Lcls_retstruct2 /* FFI_TYPE_SMALL_STRUCT_2B */ -- .long .Lcls_retstruct4 /* FFI_TYPE_SMALL_STRUCT_4B */ -+ .long .Lcls_noretval-.Lcls_store_table /* FFI_TYPE_VOID */ -+ .long .Lcls_retint-.Lcls_store_table /* FFI_TYPE_INT */ -+ .long .Lcls_retfloat-.Lcls_store_table /* FFI_TYPE_FLOAT */ -+ .long .Lcls_retdouble-.Lcls_store_table /* FFI_TYPE_DOUBLE */ -+ .long .Lcls_retldouble-.Lcls_store_table /* FFI_TYPE_LONGDOUBLE */ -+ .long .Lcls_retuint8-.Lcls_store_table /* FFI_TYPE_UINT8 */ -+ .long .Lcls_retsint8-.Lcls_store_table /* FFI_TYPE_SINT8 */ -+ .long .Lcls_retuint16-.Lcls_store_table /* FFI_TYPE_UINT16 */ -+ .long .Lcls_retsint16-.Lcls_store_table /* FFI_TYPE_SINT16 */ -+ .long .Lcls_retint-.Lcls_store_table /* FFI_TYPE_UINT32 */ -+ .long .Lcls_retint-.Lcls_store_table /* FFI_TYPE_SINT32 */ -+ .long .Lcls_retllong-.Lcls_store_table /* FFI_TYPE_UINT64 */ -+ .long .Lcls_retllong-.Lcls_store_table /* FFI_TYPE_SINT64 */ -+ .long .Lcls_retstruct-.Lcls_store_table /* FFI_TYPE_STRUCT */ -+ .long .Lcls_retint-.Lcls_store_table /* FFI_TYPE_POINTER */ -+ .long .Lcls_retstruct1-.Lcls_store_table /* FFI_TYPE_SMALL_STRUCT_1B */ -+ .long .Lcls_retstruct2-.Lcls_store_table /* FFI_TYPE_SMALL_STRUCT_2B */ -+ .long .Lcls_retstruct4-.Lcls_store_table /* FFI_TYPE_SMALL_STRUCT_4B */ -+ .long .Lcls_retmsstruct-.Lcls_store_table /* FFI_TYPE_MS_STRUCT */ - - 1: -- add %eax, %eax -- add %eax, %eax -+ shl $2, %eax -+ add (%esp),%eax -+ mov (%eax),%eax - add (%esp),%eax - add $4, %esp -- jmp *(%eax) -+ jmp *%eax - - /* Sign/zero extend as appropriate. */ - .Lcls_retsint8: - movsbl (%ecx), %eax - jmp .Lcls_epilogue - - .Lcls_retsint16: - movswl (%ecx), %eax -@@ -649,84 +786,110 @@ 1: - jmp .Lcls_epilogue - - .Lcls_retstruct: - # Caller expects us to pop struct return value pointer hidden arg. - movl %ebp, %esp - popl %ebp - ret $0x4 - -+.Lcls_retmsstruct: -+ # Caller expects us to return a pointer to the real return value. -+ mov %ecx, %eax -+ # Caller doesn't expects us to pop struct return value pointer hidden arg. -+ jmp .Lcls_epilogue -+ - .Lcls_noretval: - .Lcls_epilogue: - movl %ebp, %esp - popl %ebp - ret - .ffi_closure_SYSV_end: - .LFE3: - - #if !FFI_NO_RAW_API - - #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3) - #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4) - #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) - #define CIF_FLAGS_OFFSET 20 -- -+ .balign 16 -+FFI_HIDDEN(ffi_closure_raw_THISCALL) -+ .globl USCORE_SYMBOL(ffi_closure_raw_THISCALL) -+#if defined(X86_WIN32) && !defined(__OS2__) -+ .def _ffi_closure_raw_THISCALL; .scl 2; .type 32; .endef -+#endif -+USCORE_SYMBOL(ffi_closure_raw_THISCALL): -+ pushl %ebp -+ movl %esp, %ebp -+ pushl %esi -+ subl $36, %esp -+ movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */ -+ movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ -+ movl %edx, 12(%esp) /* user_data */ -+ leal 12(%ebp), %edx /* __builtin_dwarf_cfa () */ -+ jmp .stubraw - # This assumes we are using gas. - .balign 16 -- .globl _ffi_closure_raw_SYSV --#ifndef __OS2__ -+#if defined(X86_WIN32) -+ .globl USCORE_SYMBOL(ffi_closure_raw_SYSV) -+#if defined(X86_WIN32) && !defined(__OS2__) - .def _ffi_closure_raw_SYSV; .scl 2; .type 32; .endef - #endif --_ffi_closure_raw_SYSV: -+USCORE_SYMBOL(ffi_closure_raw_SYSV): -+#endif /* defined(X86_WIN32) */ - .LFB4: - pushl %ebp - .LCFI6: - movl %esp, %ebp - .LCFI7: - pushl %esi - .LCFI8: - subl $36, %esp - movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */ - movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ - movl %edx, 12(%esp) /* user_data */ - leal 8(%ebp), %edx /* __builtin_dwarf_cfa () */ -+.stubraw: - movl %edx, 8(%esp) /* raw_args */ - leal -24(%ebp), %edx - movl %edx, 4(%esp) /* &res */ - movl %esi, (%esp) /* cif */ - call *RAW_CLOSURE_FUN_OFFSET(%eax) /* closure->fun */ - movl CIF_FLAGS_OFFSET(%esi), %eax /* rtype */ - 0: - call 1f - # Do not insert anything here between the call and the jump table. - .Lrcls_store_table: -- .long .Lrcls_noretval /* FFI_TYPE_VOID */ -- .long .Lrcls_retint /* FFI_TYPE_INT */ -- .long .Lrcls_retfloat /* FFI_TYPE_FLOAT */ -- .long .Lrcls_retdouble /* FFI_TYPE_DOUBLE */ -- .long .Lrcls_retldouble /* FFI_TYPE_LONGDOUBLE */ -- .long .Lrcls_retuint8 /* FFI_TYPE_UINT8 */ -- .long .Lrcls_retsint8 /* FFI_TYPE_SINT8 */ -- .long .Lrcls_retuint16 /* FFI_TYPE_UINT16 */ -- .long .Lrcls_retsint16 /* FFI_TYPE_SINT16 */ -- .long .Lrcls_retint /* FFI_TYPE_UINT32 */ -- .long .Lrcls_retint /* FFI_TYPE_SINT32 */ -- .long .Lrcls_retllong /* FFI_TYPE_UINT64 */ -- .long .Lrcls_retllong /* FFI_TYPE_SINT64 */ -- .long .Lrcls_retstruct /* FFI_TYPE_STRUCT */ -- .long .Lrcls_retint /* FFI_TYPE_POINTER */ -- .long .Lrcls_retstruct1 /* FFI_TYPE_SMALL_STRUCT_1B */ -- .long .Lrcls_retstruct2 /* FFI_TYPE_SMALL_STRUCT_2B */ -- .long .Lrcls_retstruct4 /* FFI_TYPE_SMALL_STRUCT_4B */ -+ .long .Lrcls_noretval-.Lrcls_store_table /* FFI_TYPE_VOID */ -+ .long .Lrcls_retint-.Lrcls_store_table /* FFI_TYPE_INT */ -+ .long .Lrcls_retfloat-.Lrcls_store_table /* FFI_TYPE_FLOAT */ -+ .long .Lrcls_retdouble-.Lrcls_store_table /* FFI_TYPE_DOUBLE */ -+ .long .Lrcls_retldouble-.Lrcls_store_table /* FFI_TYPE_LONGDOUBLE */ -+ .long .Lrcls_retuint8-.Lrcls_store_table /* FFI_TYPE_UINT8 */ -+ .long .Lrcls_retsint8-.Lrcls_store_table /* FFI_TYPE_SINT8 */ -+ .long .Lrcls_retuint16-.Lrcls_store_table /* FFI_TYPE_UINT16 */ -+ .long .Lrcls_retsint16-.Lrcls_store_table /* FFI_TYPE_SINT16 */ -+ .long .Lrcls_retint-.Lrcls_store_table /* FFI_TYPE_UINT32 */ -+ .long .Lrcls_retint-.Lrcls_store_table /* FFI_TYPE_SINT32 */ -+ .long .Lrcls_retllong-.Lrcls_store_table /* FFI_TYPE_UINT64 */ -+ .long .Lrcls_retllong-.Lrcls_store_table /* FFI_TYPE_SINT64 */ -+ .long .Lrcls_retstruct-.Lrcls_store_table /* FFI_TYPE_STRUCT */ -+ .long .Lrcls_retint-.Lrcls_store_table /* FFI_TYPE_POINTER */ -+ .long .Lrcls_retstruct1-.Lrcls_store_table /* FFI_TYPE_SMALL_STRUCT_1B */ -+ .long .Lrcls_retstruct2-.Lrcls_store_table /* FFI_TYPE_SMALL_STRUCT_2B */ -+ .long .Lrcls_retstruct4-.Lrcls_store_table /* FFI_TYPE_SMALL_STRUCT_4B */ -+ .long .Lrcls_retstruct-.Lrcls_store_table /* FFI_TYPE_MS_STRUCT */ - 1: -- add %eax, %eax -- add %eax, %eax -+ shl $2, %eax -+ add (%esp),%eax -+ mov (%eax),%eax - add (%esp),%eax - add $4, %esp -- jmp *(%eax) -+ jmp *%eax - - /* Sign/zero extend as appropriate. */ - .Lrcls_retsint8: - movsbl -24(%ebp), %eax - jmp .Lrcls_epilogue - - .Lrcls_retsint16: - movswl -24(%ebp), %eax -@@ -784,63 +947,76 @@ 1: - ret - .ffi_closure_raw_SYSV_end: - .LFE4: - - #endif /* !FFI_NO_RAW_API */ - - # This assumes we are using gas. - .balign 16 -- .globl _ffi_closure_STDCALL --#ifndef __OS2__ -+FFI_HIDDEN(ffi_closure_STDCALL) -+ .globl USCORE_SYMBOL(ffi_closure_STDCALL) -+#if defined(X86_WIN32) && !defined(__OS2__) - .def _ffi_closure_STDCALL; .scl 2; .type 32; .endef - #endif --_ffi_closure_STDCALL: -+USCORE_SYMBOL(ffi_closure_STDCALL): - .LFB5: - pushl %ebp - .LCFI9: - movl %esp, %ebp - .LCFI10: - subl $40, %esp - leal -24(%ebp), %edx - movl %edx, -12(%ebp) /* resp */ - leal 12(%ebp), %edx /* account for stub return address on stack */ - movl %edx, 4(%esp) /* args */ - leal -12(%ebp), %edx - movl %edx, (%esp) /* &resp */ -- call _ffi_closure_SYSV_inner -+#if defined(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE) || !defined(__PIC__) -+ call USCORE_SYMBOL(ffi_closure_SYSV_inner) -+#elif defined(X86_DARWIN) -+ calll L_ffi_closure_SYSV_inner$stub -+#else -+ movl %ebx, 8(%esp) -+ call 1f -+1: popl %ebx -+ addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx -+ call ffi_closure_SYSV_inner@PLT -+ movl 8(%esp), %ebx -+#endif - movl -12(%ebp), %ecx - 0: - call 1f - # Do not insert anything here between the call and the jump table. - .Lscls_store_table: -- .long .Lscls_noretval /* FFI_TYPE_VOID */ -- .long .Lscls_retint /* FFI_TYPE_INT */ -- .long .Lscls_retfloat /* FFI_TYPE_FLOAT */ -- .long .Lscls_retdouble /* FFI_TYPE_DOUBLE */ -- .long .Lscls_retldouble /* FFI_TYPE_LONGDOUBLE */ -- .long .Lscls_retuint8 /* FFI_TYPE_UINT8 */ -- .long .Lscls_retsint8 /* FFI_TYPE_SINT8 */ -- .long .Lscls_retuint16 /* FFI_TYPE_UINT16 */ -- .long .Lscls_retsint16 /* FFI_TYPE_SINT16 */ -- .long .Lscls_retint /* FFI_TYPE_UINT32 */ -- .long .Lscls_retint /* FFI_TYPE_SINT32 */ -- .long .Lscls_retllong /* FFI_TYPE_UINT64 */ -- .long .Lscls_retllong /* FFI_TYPE_SINT64 */ -- .long .Lscls_retstruct /* FFI_TYPE_STRUCT */ -- .long .Lscls_retint /* FFI_TYPE_POINTER */ -- .long .Lscls_retstruct1 /* FFI_TYPE_SMALL_STRUCT_1B */ -- .long .Lscls_retstruct2 /* FFI_TYPE_SMALL_STRUCT_2B */ -- .long .Lscls_retstruct4 /* FFI_TYPE_SMALL_STRUCT_4B */ -+ .long .Lscls_noretval-.Lscls_store_table /* FFI_TYPE_VOID */ -+ .long .Lscls_retint-.Lscls_store_table /* FFI_TYPE_INT */ -+ .long .Lscls_retfloat-.Lscls_store_table /* FFI_TYPE_FLOAT */ -+ .long .Lscls_retdouble-.Lscls_store_table /* FFI_TYPE_DOUBLE */ -+ .long .Lscls_retldouble-.Lscls_store_table /* FFI_TYPE_LONGDOUBLE */ -+ .long .Lscls_retuint8-.Lscls_store_table /* FFI_TYPE_UINT8 */ -+ .long .Lscls_retsint8-.Lscls_store_table /* FFI_TYPE_SINT8 */ -+ .long .Lscls_retuint16-.Lscls_store_table /* FFI_TYPE_UINT16 */ -+ .long .Lscls_retsint16-.Lscls_store_table /* FFI_TYPE_SINT16 */ -+ .long .Lscls_retint-.Lscls_store_table /* FFI_TYPE_UINT32 */ -+ .long .Lscls_retint-.Lscls_store_table /* FFI_TYPE_SINT32 */ -+ .long .Lscls_retllong-.Lscls_store_table /* FFI_TYPE_UINT64 */ -+ .long .Lscls_retllong-.Lscls_store_table /* FFI_TYPE_SINT64 */ -+ .long .Lscls_retstruct-.Lscls_store_table /* FFI_TYPE_STRUCT */ -+ .long .Lscls_retint-.Lscls_store_table /* FFI_TYPE_POINTER */ -+ .long .Lscls_retstruct1-.Lscls_store_table /* FFI_TYPE_SMALL_STRUCT_1B */ -+ .long .Lscls_retstruct2-.Lscls_store_table /* FFI_TYPE_SMALL_STRUCT_2B */ -+ .long .Lscls_retstruct4-.Lscls_store_table /* FFI_TYPE_SMALL_STRUCT_4B */ - 1: -- add %eax, %eax -- add %eax, %eax -+ shl $2, %eax -+ add (%esp),%eax -+ mov (%eax),%eax - add (%esp),%eax - add $4, %esp -- jmp *(%eax) -+ jmp *%eax - - /* Sign/zero extend as appropriate. */ - .Lscls_retsint8: - movsbl (%ecx), %eax - jmp .Lscls_epilogue - - .Lscls_retsint16: - movswl (%ecx), %eax -@@ -893,17 +1069,24 @@ 1: - .Lscls_noretval: - .Lscls_epilogue: - movl %ebp, %esp - popl %ebp - ret - .ffi_closure_STDCALL_end: - .LFE5: - --#ifndef __OS2__ -+#if defined(X86_DARWIN) -+.section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 -+L_ffi_closure_SYSV_inner$stub: -+ .indirect_symbol _ffi_closure_SYSV_inner -+ hlt ; hlt ; hlt ; hlt ; hlt -+#endif -+ -+#if defined(X86_WIN32) && !defined(__OS2__) - .section .eh_frame,"w" - #endif - .Lframe1: - .LSCIE1: - .long .LECIE1-.LASCIE1 /* Length of Common Information Entry */ - .LASCIE1: - .long 0x0 /* CIE Identifier Tag */ - .byte 0x1 /* CIE Version */ -@@ -953,17 +1136,16 @@ 1: - .long .LCFI1-.LCFI0 - .byte 0xd /* DW_CFA_def_cfa_register CFA = r5 = %ebp */ - .byte 0x5 /* .uleb128 0x5 */ - - /* End of DW_CFA_xxx CFI instructions. */ - .align 4 - .LEFDE1: - -- - .LSFDE3: - .long .LEFDE3-.LASFDE3 /* FDE Length */ - .LASFDE3: - .long .LASFDE3-.Lframe1 /* FDE CIE offset */ - #if defined __PIC__ && defined HAVE_AS_X86_PCREL - .long .LFB3-. /* FDE initial location */ - #else - .long .LFB3 -diff --git a/js/src/ctypes/libffi/src/xtensa/ffi.c b/js/src/ctypes/libffi/src/xtensa/ffi.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/xtensa/ffi.c -@@ -0,0 +1,298 @@ -+/* ----------------------------------------------------------------------- -+ ffi.c - Copyright (c) 2013 Tensilica, Inc. -+ -+ XTENSA Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#include -+#include -+ -+/* -+ |----------------------------------------| -+ | | -+ on entry to ffi_call ----> |----------------------------------------| -+ | caller stack frame for registers a0-a3 | -+ |----------------------------------------| -+ | | -+ | additional arguments | -+ entry of the function ---> |----------------------------------------| -+ | copy of function arguments a2-a7 | -+ | - - - - - - - - - - - - - | -+ | | -+ -+ The area below the entry line becomes the new stack frame for the function. -+ -+*/ -+ -+ -+#define FFI_TYPE_STRUCT_REGS FFI_TYPE_LAST -+ -+ -+extern void ffi_call_SYSV(void *rvalue, unsigned rsize, unsigned flags, -+ void(*fn)(void), unsigned nbytes, extended_cif*); -+extern void ffi_closure_SYSV(void) FFI_HIDDEN; -+ -+ffi_status ffi_prep_cif_machdep(ffi_cif *cif) -+{ -+ switch(cif->rtype->type) { -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT16: -+ cif->flags = cif->rtype->type; -+ break; -+ case FFI_TYPE_VOID: -+ case FFI_TYPE_FLOAT: -+ cif->flags = FFI_TYPE_UINT32; -+ break; -+ case FFI_TYPE_DOUBLE: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ cif->flags = FFI_TYPE_UINT64; // cif->rtype->type; -+ break; -+ case FFI_TYPE_STRUCT: -+ cif->flags = FFI_TYPE_STRUCT; //_REGS; -+ /* Up to 16 bytes are returned in registers */ -+ if (cif->rtype->size > 4 * 4) { -+ /* returned structure is referenced by a register; use 8 bytes -+ (including 4 bytes for potential additional alignment) */ -+ cif->flags = FFI_TYPE_STRUCT; -+ cif->bytes += 8; -+ } -+ break; -+ -+ default: -+ cif->flags = FFI_TYPE_UINT32; -+ break; -+ } -+ -+ /* Round the stack up to a full 4 register frame, just in case -+ (we use this size in movsp). This way, it's also a multiple of -+ 8 bytes for 64-bit arguments. */ -+ cif->bytes = ALIGN(cif->bytes, 16); -+ -+ return FFI_OK; -+} -+ -+void ffi_prep_args(extended_cif *ecif, unsigned char* stack) -+{ -+ unsigned int i; -+ unsigned long *addr; -+ ffi_type **ptr; -+ -+ union { -+ void **v; -+ char **c; -+ signed char **sc; -+ unsigned char **uc; -+ signed short **ss; -+ unsigned short **us; -+ unsigned int **i; -+ long long **ll; -+ float **f; -+ double **d; -+ } p_argv; -+ -+ /* Verify that everything is aligned up properly */ -+ FFI_ASSERT (((unsigned long) stack & 0x7) == 0); -+ -+ p_argv.v = ecif->avalue; -+ addr = (unsigned long*)stack; -+ -+ /* structures with a size greater than 16 bytes are passed in memory */ -+ if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && ecif->cif->rtype->size > 16) -+ { -+ *addr++ = (unsigned long)ecif->rvalue; -+ } -+ -+ for (i = ecif->cif->nargs, ptr = ecif->cif->arg_types; -+ i > 0; -+ i--, ptr++, p_argv.v++) -+ { -+ switch ((*ptr)->type) -+ { -+ case FFI_TYPE_SINT8: -+ *addr++ = **p_argv.sc; -+ break; -+ case FFI_TYPE_UINT8: -+ *addr++ = **p_argv.uc; -+ break; -+ case FFI_TYPE_SINT16: -+ *addr++ = **p_argv.ss; -+ break; -+ case FFI_TYPE_UINT16: -+ *addr++ = **p_argv.us; -+ break; -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_POINTER: -+ *addr++ = **p_argv.i; -+ break; -+ case FFI_TYPE_DOUBLE: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ if (((unsigned long)addr & 4) != 0) -+ addr++; -+ *(unsigned long long*)addr = **p_argv.ll; -+ addr += sizeof(unsigned long long) / sizeof (addr); -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ { -+ unsigned long offs; -+ unsigned long size; -+ -+ if (((unsigned long)addr & 4) != 0 && (*ptr)->alignment > 4) -+ addr++; -+ -+ offs = (unsigned long) addr - (unsigned long) stack; -+ size = (*ptr)->size; -+ -+ /* Entire structure must fit the argument registers or referenced */ -+ if (offs < FFI_REGISTER_NARGS * 4 -+ && offs + size > FFI_REGISTER_NARGS * 4) -+ addr = (unsigned long*) (stack + FFI_REGISTER_NARGS * 4); -+ -+ memcpy((char*) addr, *p_argv.c, size); -+ addr += (size + 3) / 4; -+ break; -+ } -+ -+ default: -+ FFI_ASSERT(0); -+ } -+ } -+} -+ -+ -+void ffi_call(ffi_cif* cif, void(*fn)(void), void *rvalue, void **avalue) -+{ -+ extended_cif ecif; -+ unsigned long rsize = cif->rtype->size; -+ int flags = cif->flags; -+ void *alloc = NULL; -+ -+ ecif.cif = cif; -+ ecif.avalue = avalue; -+ -+ /* Note that for structures that are returned in registers (size <= 16 bytes) -+ we allocate a temporary buffer and use memcpy to copy it to the final -+ destination. The reason is that the target address might be misaligned or -+ the length not a multiple of 4 bytes. Handling all those cases would be -+ very complex. */ -+ -+ if (flags == FFI_TYPE_STRUCT && (rsize <= 16 || rvalue == NULL)) -+ { -+ alloc = alloca(ALIGN(rsize, 4)); -+ ecif.rvalue = alloc; -+ } -+ else -+ { -+ ecif.rvalue = rvalue; -+ } -+ -+ if (cif->abi != FFI_SYSV) -+ FFI_ASSERT(0); -+ -+ ffi_call_SYSV (ecif.rvalue, rsize, cif->flags, fn, cif->bytes, &ecif); -+ -+ if (alloc != NULL && rvalue != NULL) -+ memcpy(rvalue, alloc, rsize); -+} -+ -+extern void ffi_trampoline(); -+extern void ffi_cacheflush(void* start, void* end); -+ -+ffi_status -+ffi_prep_closure_loc (ffi_closure* closure, -+ ffi_cif* cif, -+ void (*fun)(ffi_cif*, void*, void**, void*), -+ void *user_data, -+ void *codeloc) -+{ -+ /* copye trampoline to stack and patch 'ffi_closure_SYSV' pointer */ -+ memcpy(closure->tramp, ffi_trampoline, FFI_TRAMPOLINE_SIZE); -+ *(unsigned int*)(&closure->tramp[8]) = (unsigned int)ffi_closure_SYSV; -+ -+ // Do we have this function? -+ // __builtin___clear_cache(closer->tramp, closer->tramp + FFI_TRAMPOLINE_SIZE) -+ ffi_cacheflush(closure->tramp, closure->tramp + FFI_TRAMPOLINE_SIZE); -+ -+ closure->cif = cif; -+ closure->fun = fun; -+ closure->user_data = user_data; -+ return FFI_OK; -+} -+ -+ -+long FFI_HIDDEN -+ffi_closure_SYSV_inner(ffi_closure *closure, void **values, void *rvalue) -+{ -+ ffi_cif *cif; -+ ffi_type **arg_types; -+ void **avalue; -+ int i, areg; -+ -+ cif = closure->cif; -+ if (cif->abi != FFI_SYSV) -+ return FFI_BAD_ABI; -+ -+ areg = 0; -+ -+ int rtype = cif->rtype->type; -+ if (rtype == FFI_TYPE_STRUCT && cif->rtype->size > 4 * 4) -+ { -+ rvalue = *values; -+ areg++; -+ } -+ -+ cif = closure->cif; -+ arg_types = cif->arg_types; -+ avalue = alloca(cif->nargs * sizeof(void *)); -+ -+ for (i = 0; i < cif->nargs; i++) -+ { -+ if (arg_types[i]->alignment == 8 && (areg & 1) != 0) -+ areg++; -+ -+ // skip the entry 16,a1 framework, add 16 bytes (4 registers) -+ if (areg == FFI_REGISTER_NARGS) -+ areg += 4; -+ -+ if (arg_types[i]->type == FFI_TYPE_STRUCT) -+ { -+ int numregs = ((arg_types[i]->size + 3) & ~3) / 4; -+ if (areg < FFI_REGISTER_NARGS && areg + numregs > FFI_REGISTER_NARGS) -+ areg = FFI_REGISTER_NARGS + 4; -+ } -+ -+ avalue[i] = &values[areg]; -+ areg += (arg_types[i]->size + 3) / 4; -+ } -+ -+ (closure->fun)(cif, rvalue, avalue, closure->user_data); -+ -+ return rtype; -+} -diff --git a/js/src/ctypes/libffi/src/xtensa/ffitarget.h b/js/src/ctypes/libffi/src/xtensa/ffitarget.h -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/xtensa/ffitarget.h -@@ -0,0 +1,53 @@ -+/* -----------------------------------------------------------------*-C-*- -+ ffitarget.h - Copyright (c) 2013 Tensilica, Inc. -+ Target configuration macros for XTENSA. -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#ifndef LIBFFI_TARGET_H -+#define LIBFFI_TARGET_H -+ -+#ifndef LIBFFI_H -+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -+#endif -+ -+#ifndef LIBFFI_ASM -+typedef unsigned long ffi_arg; -+typedef signed long ffi_sarg; -+ -+typedef enum ffi_abi { -+ FFI_FIRST_ABI = 0, -+ FFI_SYSV, -+ FFI_LAST_ABI, -+ FFI_DEFAULT_ABI = FFI_SYSV -+} ffi_abi; -+#endif -+ -+#define FFI_REGISTER_NARGS 6 -+ -+/* ---- Definitions for closures ----------------------------------------- */ -+ -+#define FFI_CLOSURES 1 -+#define FFI_NATIVE_RAW_API 0 -+#define FFI_TRAMPOLINE_SIZE 24 -+ -+#endif -diff --git a/js/src/ctypes/libffi/src/xtensa/sysv.S b/js/src/ctypes/libffi/src/xtensa/sysv.S -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/src/xtensa/sysv.S -@@ -0,0 +1,253 @@ -+/* ----------------------------------------------------------------------- -+ sysv.S - Copyright (c) 2013 Tensilica, Inc. -+ -+ XTENSA Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#define LIBFFI_ASM -+#include -+#include -+ -+#define ENTRY(name) .text; .globl name; .type name,@function; .align 4; name: -+#define END(name) .size name , . - name -+ -+/* Assert that the table below is in sync with ffi.h. */ -+ -+#if FFI_TYPE_UINT8 != 5 \ -+ || FFI_TYPE_SINT8 != 6 \ -+ || FFI_TYPE_UINT16 != 7 \ -+ || FFI_TYPE_SINT16 != 8 \ -+ || FFI_TYPE_UINT32 != 9 \ -+ || FFI_TYPE_SINT32 != 10 \ -+ || FFI_TYPE_UINT64 != 11 -+#error "xtensa/sysv.S out of sync with ffi.h" -+#endif -+ -+ -+/* ffi_call_SYSV (rvalue, rbytes, flags, (*fnaddr)(), bytes, ecif) -+ void *rvalue; a2 -+ unsigned long rbytes; a3 -+ unsigned flags; a4 -+ void (*fnaddr)(); a5 -+ unsigned long bytes; a6 -+ extended_cif* ecif) a7 -+*/ -+ -+ENTRY(ffi_call_SYSV) -+ -+ entry a1, 32 # 32 byte frame for using call8 below -+ -+ mov a10, a7 # a10(->arg0): ecif -+ sub a11, a1, a6 # a11(->arg1): stack pointer -+ mov a7, a1 # fp -+ movsp a1, a11 # set new sp = old_sp - bytes -+ -+ movi a8, ffi_prep_args -+ callx8 a8 # ffi_prep_args(ecif, stack) -+ -+ # prepare to move stack pointer back up to 6 arguments -+ # note that 'bytes' is already aligned -+ -+ movi a10, 6*4 -+ sub a11, a6, a10 -+ movgez a6, a10, a11 -+ add a6, a1, a6 -+ -+ -+ # we can pass up to 6 arguments in registers -+ # for simplicity, just load 6 arguments -+ # (the stack size is at least 32 bytes, so no risk to cross boundaries) -+ -+ l32i a10, a1, 0 -+ l32i a11, a1, 4 -+ l32i a12, a1, 8 -+ l32i a13, a1, 12 -+ l32i a14, a1, 16 -+ l32i a15, a1, 20 -+ -+ # move stack pointer -+ -+ movsp a1, a6 -+ -+ callx8 a5 # (*fn)(args...) -+ -+ # Handle return value(s) -+ -+ beqz a2, .Lexit -+ -+ movi a5, FFI_TYPE_STRUCT -+ bne a4, a5, .Lstore -+ movi a5, 16 -+ blt a5, a3, .Lexit -+ -+ s32i a10, a2, 0 -+ blti a3, 5, .Lexit -+ addi a3, a3, -1 -+ s32i a11, a2, 4 -+ blti a3, 8, .Lexit -+ s32i a12, a2, 8 -+ blti a3, 12, .Lexit -+ s32i a13, a2, 12 -+ -+.Lexit: retw -+ -+.Lstore: -+ addi a4, a4, -FFI_TYPE_UINT8 -+ bgei a4, 7, .Lexit # should never happen -+ movi a6, store_calls -+ add a4, a4, a4 -+ addx4 a6, a4, a6 # store_table + idx * 8 -+ jx a6 -+ -+ .align 8 -+store_calls: -+ # UINT8 -+ s8i a10, a2, 0 -+ retw -+ -+ # SINT8 -+ .align 8 -+ s8i a10, a2, 0 -+ retw -+ -+ # UINT16 -+ .align 8 -+ s16i a10, a2, 0 -+ retw -+ -+ # SINT16 -+ .align 8 -+ s16i a10, a2, 0 -+ retw -+ -+ # UINT32 -+ .align 8 -+ s32i a10, a2, 0 -+ retw -+ -+ # SINT32 -+ .align 8 -+ s32i a10, a2, 0 -+ retw -+ -+ # UINT64 -+ .align 8 -+ s32i a10, a2, 0 -+ s32i a11, a2, 4 -+ retw -+ -+END(ffi_call_SYSV) -+ -+ -+/* -+ * void ffi_cacheflush (unsigned long start, unsigned long end) -+ */ -+ -+#define EXTRA_ARGS_SIZE 24 -+ -+ENTRY(ffi_cacheflush) -+ -+ entry a1, 16 -+ -+1: dhwbi a2, 0 -+ ihi a2, 0 -+ addi a2, a2, 4 -+ blt a2, a3, 1b -+ -+ retw -+ -+END(ffi_cacheflush) -+ -+/* ffi_trampoline is copied to the stack */ -+ -+ENTRY(ffi_trampoline) -+ -+ entry a1, 16 + (FFI_REGISTER_NARGS * 4) + (4 * 4) # [ 0] -+ j 2f # [ 3] -+ .align 4 # [ 6] -+1: .long 0 # [ 8] -+2: l32r a15, 1b # [12] -+ _mov a14, a0 # [15] -+ callx0 a15 # [18] -+ # [21] -+END(ffi_trampoline) -+ -+/* -+ * ffi_closure() -+ * -+ * a0: closure + 21 -+ * a14: return address (a0) -+ */ -+ -+ENTRY(ffi_closure_SYSV) -+ -+ /* intentionally omitting entry here */ -+ -+ # restore return address (a0) and move pointer to closure to a10 -+ addi a10, a0, -21 -+ mov a0, a14 -+ -+ # allow up to 4 arguments as return values -+ addi a11, a1, 4 * 4 -+ -+ # save up to 6 arguments to stack (allocated by entry below) -+ s32i a2, a11, 0 -+ s32i a3, a11, 4 -+ s32i a4, a11, 8 -+ s32i a5, a11, 12 -+ s32i a6, a11, 16 -+ s32i a7, a11, 20 -+ -+ movi a8, ffi_closure_SYSV_inner -+ mov a12, a1 -+ callx8 a8 # .._inner(*closure, **avalue, *rvalue) -+ -+ # load up to four return arguments -+ l32i a2, a1, 0 -+ l32i a3, a1, 4 -+ l32i a4, a1, 8 -+ l32i a5, a1, 12 -+ -+ # (sign-)extend return value -+ movi a11, FFI_TYPE_UINT8 -+ bne a10, a11, 1f -+ extui a2, a2, 0, 8 -+ retw -+ -+1: movi a11, FFI_TYPE_SINT8 -+ bne a10, a11, 1f -+ sext a2, a2, 7 -+ retw -+ -+1: movi a11, FFI_TYPE_UINT16 -+ bne a10, a11, 1f -+ extui a2, a2, 0, 16 -+ retw -+ -+1: movi a11, FFI_TYPE_SINT16 -+ bne a10, a11, 1f -+ sext a2, a2, 15 -+ -+1: retw -+ -+END(ffi_closure_SYSV) -diff --git a/js/src/ctypes/libffi/stamp-h.in b/js/src/ctypes/libffi/stamp-h.in -deleted file mode 100644 ---- a/js/src/ctypes/libffi/stamp-h.in -+++ /dev/null -@@ -1,1 +0,0 @@ --timestamp -diff --git a/js/src/ctypes/libffi/testsuite/Makefile.am b/js/src/ctypes/libffi/testsuite/Makefile.am ---- a/js/src/ctypes/libffi/testsuite/Makefile.am -+++ b/js/src/ctypes/libffi/testsuite/Makefile.am -@@ -8,73 +8,89 @@ EXPECT = `if [ -f $(top_builddir)/../exp - else echo expect ; fi` - - RUNTEST = `if [ -f $(top_srcdir)/../dejagnu/runtest ] ; then \ - echo $(top_srcdir)/../dejagnu/runtest ; \ - else echo runtest; fi` - - AM_RUNTESTFLAGS = - -+EXTRA_DEJAGNU_SITE_CONFIG=../local.exp -+ - CLEANFILES = *.exe core* *.log *.sum - --EXTRA_DIST = libffi.special/special.exp \ --libffi.special/unwindtest_ffi_call.cc libffi.special/unwindtest.cc \ --libffi.special/ffitestcxx.h config/default.exp lib/target-libpath.exp \ --lib/libffi-dg.exp lib/wrapper.exp libffi.call/float.c \ --libffi.call/cls_multi_schar.c libffi.call/float3.c \ --libffi.call/cls_3_1byte.c libffi.call/stret_large2.c \ --libffi.call/cls_5_1_byte.c libffi.call/stret_medium.c \ --libffi.call/promotion.c libffi.call/cls_dbls_struct.c \ --libffi.call/nested_struct.c libffi.call/closure_fn1.c \ --libffi.call/cls_4_1byte.c libffi.call/cls_float.c \ --libffi.call/cls_2byte.c libffi.call/closure_fn4.c \ --libffi.call/return_fl2.c libffi.call/nested_struct7.c \ --libffi.call/cls_uint.c libffi.call/cls_align_sint64.c \ --libffi.call/float1.c libffi.call/cls_19byte.c \ --libffi.call/nested_struct1.c libffi.call/cls_4byte.c \ --libffi.call/return_fl1.c libffi.call/cls_align_pointer.c \ --libffi.call/nested_struct4.c libffi.call/nested_struct3.c \ --libffi.call/struct7.c libffi.call/nested_struct9.c \ --libffi.call/cls_sshort.c libffi.call/cls_ulonglong.c \ --libffi.call/cls_pointer_stack.c libffi.call/cls_multi_uchar.c \ --libffi.call/testclosure.c libffi.call/cls_3byte1.c \ --libffi.call/struct6.c libffi.call/return_uc.c libffi.call/return_ll1.c \ --libffi.call/cls_ushort.c libffi.call/stret_medium2.c \ --libffi.call/cls_multi_ushortchar.c libffi.call/return_dbl2.c \ --libffi.call/closure_loc_fn0.c libffi.call/return_sc.c \ --libffi.call/nested_struct8.c libffi.call/cls_7_1_byte.c \ --libffi.call/return_ll.c libffi.call/cls_pointer.c \ --libffi.call/err_bad_abi.c libffi.call/return_dbl1.c \ --libffi.call/call.exp libffi.call/ffitest.h libffi.call/strlen.c \ --libffi.call/return_sl.c libffi.call/cls_1_1byte.c \ --libffi.call/struct1.c libffi.call/cls_64byte.c libffi.call/return_ul.c \ --libffi.call/cls_double.c libffi.call/many_win32.c \ --libffi.call/cls_16byte.c libffi.call/cls_align_double.c \ --libffi.call/cls_align_uint16.c libffi.call/cls_9byte1.c \ --libffi.call/cls_multi_sshortchar.c libffi.call/cls_multi_ushort.c \ --libffi.call/closure_stdcall.c libffi.call/return_fl.c \ --libffi.call/strlen_win32.c libffi.call/return_ldl.c \ --libffi.call/cls_align_float.c libffi.call/struct3.c \ --libffi.call/cls_uchar.c libffi.call/cls_sint.c libffi.call/float2.c \ --libffi.call/cls_align_longdouble_split.c \ --libffi.call/cls_longdouble_va.c libffi.call/cls_multi_sshort.c \ --libffi.call/stret_large.c libffi.call/cls_align_sint16.c \ --libffi.call/nested_struct6.c libffi.call/cls_5byte.c \ --libffi.call/return_dbl.c libffi.call/cls_20byte.c \ --libffi.call/cls_8byte.c libffi.call/pyobjc-tc.c \ --libffi.call/cls_24byte.c libffi.call/cls_align_longdouble_split2.c \ --libffi.call/cls_6_1_byte.c libffi.call/cls_schar.c \ --libffi.call/cls_18byte.c libffi.call/closure_fn3.c \ --libffi.call/err_bad_typedef.c libffi.call/closure_fn2.c \ --libffi.call/struct2.c libffi.call/cls_3byte2.c \ --libffi.call/cls_align_longdouble.c libffi.call/cls_20byte1.c \ --libffi.call/return_fl3.c libffi.call/cls_align_uint32.c \ --libffi.call/problem1.c libffi.call/float4.c \ --libffi.call/cls_align_uint64.c libffi.call/struct9.c \ --libffi.call/closure_fn5.c libffi.call/cls_align_sint32.c \ --libffi.call/closure_fn0.c libffi.call/closure_fn6.c \ --libffi.call/struct4.c libffi.call/nested_struct2.c \ --libffi.call/cls_6byte.c libffi.call/cls_7byte.c libffi.call/many.c \ --libffi.call/struct8.c libffi.call/negint.c libffi.call/struct5.c \ --libffi.call/cls_12byte.c libffi.call/cls_double_va.c \ --libffi.call/cls_longdouble.c libffi.call/cls_9byte2.c \ --libffi.call/nested_struct10.c libffi.call/nested_struct5.c \ --libffi.call/huge_struct.c -+EXTRA_DIST = config/default.exp libffi.call/cls_19byte.c \ -+libffi.call/cls_align_longdouble_split.c \ -+libffi.call/closure_loc_fn0.c libffi.call/cls_schar.c \ -+libffi.call/closure_fn1.c \ -+libffi.call/return_ul.c libffi.call/cls_align_double.c \ -+libffi.call/return_fl2.c libffi.call/cls_1_1byte.c \ -+libffi.call/cls_64byte.c libffi.call/nested_struct7.c \ -+libffi.call/cls_align_sint32.c libffi.call/nested_struct2.c \ -+libffi.call/ffitest.h libffi.call/nested_struct4.c \ -+libffi.call/cls_multi_ushort.c libffi.call/struct3.c \ -+libffi.call/cls_3byte1.c libffi.call/cls_16byte.c \ -+libffi.call/struct8.c libffi.call/nested_struct8.c \ -+libffi.call/cls_multi_sshort.c libffi.call/cls_3byte2.c \ -+libffi.call/cls_pointer.c \ -+libffi.call/err_bad_typedef.c libffi.call/cls_4_1byte.c \ -+libffi.call/cls_9byte2.c libffi.call/cls_multi_schar.c \ -+libffi.call/stret_medium2.c libffi.call/cls_5_1_byte.c \ -+libffi.call/call.exp libffi.call/cls_double.c \ -+libffi.call/cls_align_sint16.c libffi.call/cls_uint.c \ -+libffi.call/return_ll1.c libffi.call/nested_struct3.c \ -+libffi.call/cls_20byte1.c libffi.call/closure_fn4.c \ -+libffi.call/cls_uchar.c libffi.call/struct2.c libffi.call/cls_7byte.c \ -+libffi.call/strlen.c libffi.call/many.c libffi.call/testclosure.c \ -+libffi.call/return_fl.c libffi.call/struct5.c \ -+libffi.call/cls_12byte.c libffi.call/cls_multi_sshortchar.c \ -+libffi.call/cls_align_longdouble_split2.c libffi.call/return_dbl2.c \ -+libffi.call/return_fl3.c libffi.call/stret_medium.c \ -+libffi.call/nested_struct6.c libffi.call/closure_fn3.c \ -+libffi.call/float3.c libffi.call/many2.c \ -+libffi.call/closure_stdcall.c libffi.call/cls_align_uint16.c \ -+libffi.call/cls_9byte1.c libffi.call/closure_fn6.c \ -+libffi.call/cls_double_va.c libffi.call/cls_align_pointer.c \ -+libffi.call/cls_align_longdouble.c libffi.call/closure_fn2.c \ -+libffi.call/cls_sshort.c \ -+libffi.call/nested_struct.c libffi.call/cls_20byte.c \ -+libffi.call/cls_longdouble.c libffi.call/cls_multi_uchar.c \ -+libffi.call/return_uc.c libffi.call/closure_thiscall.c \ -+libffi.call/cls_18byte.c libffi.call/cls_8byte.c \ -+libffi.call/promotion.c \ -+libffi.call/return_dbl.c libffi.call/cls_24byte.c \ -+libffi.call/struct4.c libffi.call/cls_6byte.c \ -+libffi.call/cls_align_uint32.c libffi.call/float.c \ -+libffi.call/float1.c libffi.call/float_va.c libffi.call/negint.c \ -+libffi.call/return_dbl1.c libffi.call/cls_3_1byte.c \ -+libffi.call/cls_align_float.c libffi.call/return_fl1.c \ -+libffi.call/nested_struct10.c libffi.call/nested_struct5.c \ -+libffi.call/cls_align_sint64.c \ -+libffi.call/stret_large2.c libffi.call/return_sl.c \ -+libffi.call/closure_fn0.c libffi.call/cls_5byte.c \ -+libffi.call/cls_2byte.c libffi.call/float2.c \ -+libffi.call/cls_dbls_struct.c libffi.call/cls_sint.c \ -+libffi.call/stret_large.c libffi.call/cls_ulonglong.c \ -+libffi.call/cls_ushort.c libffi.call/nested_struct1.c \ -+libffi.call/err_bad_abi.c libffi.call/cls_longdouble_va.c \ -+libffi.call/cls_float.c libffi.call/cls_pointer_stack.c \ -+libffi.call/pyobjc-tc.c libffi.call/cls_multi_ushortchar.c \ -+libffi.call/struct1.c libffi.call/nested_struct9.c \ -+libffi.call/huge_struct.c libffi.call/problem1.c \ -+libffi.call/float4.c \ -+libffi.call/return_ldl.c \ -+libffi.call/closure_fn5.c \ -+libffi.call/struct6.c libffi.call/return_ll.c libffi.call/struct9.c \ -+libffi.call/return_sc.c libffi.call/struct7.c \ -+libffi.call/cls_align_uint64.c libffi.call/cls_4byte.c \ -+libffi.call/cls_6_1_byte.c \ -+libffi.call/cls_7_1_byte.c libffi.call/unwindtest.cc \ -+libffi.call/unwindtest_ffi_call.cc \ -+lib/wrapper.exp lib/target-libpath.exp \ -+lib/libffi.exp libffi.call/cls_struct_va1.c \ -+libffi.call/cls_uchar_va.c libffi.call/cls_uint_va.c \ -+libffi.call/cls_ulong_va.c libffi.call/cls_ushort_va.c \ -+libffi.call/nested_struct11.c libffi.call/uninitialized.c \ -+libffi.call/va_1.c libffi.call/va_struct1.c libffi.call/va_struct2.c \ -+libffi.call/va_struct3.c \ -+libffi.call/strlen2.c \ -+libffi.call/strlen3.c \ -+libffi.call/strlen4.c -diff --git a/js/src/ctypes/libffi/testsuite/Makefile.in b/js/src/ctypes/libffi/testsuite/Makefile.in ---- a/js/src/ctypes/libffi/testsuite/Makefile.in -+++ b/js/src/ctypes/libffi/testsuite/Makefile.in -@@ -1,25 +1,69 @@ --# Makefile.in generated by automake 1.11.1 from Makefile.am. -+# Makefile.in generated by automake 1.13.4 from Makefile.am. - # @configure_input@ - --# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, --# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, --# Inc. -+# Copyright (C) 1994-2013 Free Software Foundation, Inc. -+ - # This Makefile.in is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. - - # This program is distributed in the hope that it will be useful, - # but WITHOUT ANY WARRANTY, to the extent permitted by law; without - # even the implied warranty of MERCHANTABILITY or FITNESS FOR A - # PARTICULAR PURPOSE. - - @SET_MAKE@ - VPATH = @srcdir@ -+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -+am__make_running_with_option = \ -+ case $${target_option-} in \ -+ ?) ;; \ -+ *) echo "am__make_running_with_option: internal error: invalid" \ -+ "target option '$${target_option-}' specified" >&2; \ -+ exit 1;; \ -+ esac; \ -+ has_opt=no; \ -+ sane_makeflags=$$MAKEFLAGS; \ -+ if $(am__is_gnu_make); then \ -+ sane_makeflags=$$MFLAGS; \ -+ else \ -+ case $$MAKEFLAGS in \ -+ *\\[\ \ ]*) \ -+ bs=\\; \ -+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ -+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ -+ esac; \ -+ fi; \ -+ skip_next=no; \ -+ strip_trailopt () \ -+ { \ -+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ -+ }; \ -+ for flg in $$sane_makeflags; do \ -+ test $$skip_next = yes && { skip_next=no; continue; }; \ -+ case $$flg in \ -+ *=*|--*) continue;; \ -+ -*I) strip_trailopt 'I'; skip_next=yes;; \ -+ -*I?*) strip_trailopt 'I';; \ -+ -*O) strip_trailopt 'O'; skip_next=yes;; \ -+ -*O?*) strip_trailopt 'O';; \ -+ -*l) strip_trailopt 'l'; skip_next=yes;; \ -+ -*l?*) strip_trailopt 'l';; \ -+ -[dEDm]) skip_next=yes;; \ -+ -[JT]) skip_next=yes;; \ -+ esac; \ -+ case $$flg in \ -+ *$$target_option*) has_opt=yes; break;; \ -+ esac; \ -+ done; \ -+ test $$has_opt = yes -+am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -+am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) - pkgdatadir = $(datadir)/@PACKAGE@ - pkgincludedir = $(includedir)/@PACKAGE@ - pkglibdir = $(libdir)/@PACKAGE@ - pkglibexecdir = $(libexecdir)/@PACKAGE@ - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd - install_sh_DATA = $(install_sh) -c -m 644 - install_sh_PROGRAM = $(install_sh) -c - install_sh_SCRIPT = $(install_sh) -c -@@ -30,34 +74,65 @@ PRE_INSTALL = : - POST_INSTALL = : - NORMAL_UNINSTALL = : - PRE_UNINSTALL = : - POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ - target_triplet = @target@ - subdir = testsuite --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 --am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ -+am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ -+ $(top_srcdir)/m4/ax_append_flag.m4 \ -+ $(top_srcdir)/m4/ax_cc_maxopt.m4 \ -+ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ -+ $(top_srcdir)/m4/ax_check_compile_flag.m4 \ -+ $(top_srcdir)/m4/ax_compiler_vendor.m4 \ -+ $(top_srcdir)/m4/ax_configure_args.m4 \ -+ $(top_srcdir)/m4/ax_enable_builddir.m4 \ -+ $(top_srcdir)/m4/ax_gcc_archflag.m4 \ -+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ -+ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ -+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ -+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac - am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) - mkinstalldirs = $(install_sh) -d - CONFIG_HEADER = $(top_builddir)/fficonfig.h - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = -+AM_V_P = $(am__v_P_@AM_V@) -+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -+am__v_P_0 = false -+am__v_P_1 = : -+AM_V_GEN = $(am__v_GEN_@AM_V@) -+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -+am__v_GEN_0 = @echo " GEN " $@; -+am__v_GEN_1 = -+AM_V_at = $(am__v_at_@AM_V@) -+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -+am__v_at_0 = @ -+am__v_at_1 = - SOURCES = - DIST_SOURCES = -+am__can_run_installinfo = \ -+ case $$AM_UPDATE_INFO_DIR in \ -+ n|no|NO) false;; \ -+ *) (install-info --version) >/dev/null 2>&1;; \ -+ esac -+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) - DEJATOOL = $(PACKAGE) - RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - ALLOCA = @ALLOCA@ - AMTAR = @AMTAR@ -+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ - AM_LTLDFLAGS = @AM_LTLDFLAGS@ - AM_RUNTESTFLAGS = - AR = @AR@ - AUTOCONF = @AUTOCONF@ - AUTOHEADER = @AUTOHEADER@ - AUTOMAKE = @AUTOMAKE@ - AWK = @AWK@ - CC = @CC@ -@@ -66,75 +141,82 @@ CCASDEPMODE = @CCASDEPMODE@ - CCASFLAGS = @CCASFLAGS@ - CCDEPMODE = @CCDEPMODE@ - CFLAGS = @CFLAGS@ - CPP = @CPP@ - CPPFLAGS = @CPPFLAGS@ - CYGPATH_W = @CYGPATH_W@ - DEFS = @DEFS@ - DEPDIR = @DEPDIR@ -+DLLTOOL = @DLLTOOL@ - DSYMUTIL = @DSYMUTIL@ - DUMPBIN = @DUMPBIN@ - ECHO_C = @ECHO_C@ - ECHO_N = @ECHO_N@ - ECHO_T = @ECHO_T@ - EGREP = @EGREP@ - EXEEXT = @EXEEXT@ -+FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ - FGREP = @FGREP@ - GREP = @GREP@ - HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ -+HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ - INSTALL = @INSTALL@ - INSTALL_DATA = @INSTALL_DATA@ - INSTALL_PROGRAM = @INSTALL_PROGRAM@ - INSTALL_SCRIPT = @INSTALL_SCRIPT@ - INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ - LD = @LD@ - LDFLAGS = @LDFLAGS@ - LIBOBJS = @LIBOBJS@ - LIBS = @LIBS@ - LIBTOOL = @LIBTOOL@ - LIPO = @LIPO@ - LN_S = @LN_S@ - LTLIBOBJS = @LTLIBOBJS@ - MAINT = @MAINT@ - MAKEINFO = @MAKEINFO@ -+MANIFEST_TOOL = @MANIFEST_TOOL@ - MKDIR_P = @MKDIR_P@ - NM = @NM@ - NMEDIT = @NMEDIT@ - OBJDUMP = @OBJDUMP@ - OBJEXT = @OBJEXT@ - OTOOL = @OTOOL@ - OTOOL64 = @OTOOL64@ - PACKAGE = @PACKAGE@ - PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ - PACKAGE_NAME = @PACKAGE_NAME@ - PACKAGE_STRING = @PACKAGE_STRING@ - PACKAGE_TARNAME = @PACKAGE_TARNAME@ - PACKAGE_URL = @PACKAGE_URL@ - PACKAGE_VERSION = @PACKAGE_VERSION@ - PATH_SEPARATOR = @PATH_SEPARATOR@ -+PRTDIAG = @PRTDIAG@ - RANLIB = @RANLIB@ - SED = @SED@ - SET_MAKE = @SET_MAKE@ - SHELL = @SHELL@ - STRIP = @STRIP@ - TARGET = @TARGET@ - TARGETDIR = @TARGETDIR@ - VERSION = @VERSION@ - abs_builddir = @abs_builddir@ - abs_srcdir = @abs_srcdir@ - abs_top_builddir = @abs_top_builddir@ - abs_top_srcdir = @abs_top_srcdir@ -+ac_ct_AR = @ac_ct_AR@ - ac_ct_CC = @ac_ct_CC@ - ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ - am__include = @am__include@ - am__leading_dot = @am__leading_dot@ - am__quote = @am__quote@ - am__tar = @am__tar@ - am__untar = @am__untar@ -+ax_enable_builddir_sed = @ax_enable_builddir_sed@ - bindir = @bindir@ - build = @build@ - build_alias = @build_alias@ - build_cpu = @build_cpu@ - build_os = @build_os@ - build_vendor = @build_vendor@ - builddir = @builddir@ - datadir = @datadir@ -@@ -150,27 +232,27 @@ host_vendor = @host_vendor@ - htmldir = @htmldir@ - includedir = @includedir@ - infodir = @infodir@ - install_sh = @install_sh@ - libdir = @libdir@ - libexecdir = @libexecdir@ - localedir = @localedir@ - localstatedir = @localstatedir@ --lt_ECHO = @lt_ECHO@ - mandir = @mandir@ - mkdir_p = @mkdir_p@ - oldincludedir = @oldincludedir@ - pdfdir = @pdfdir@ - prefix = @prefix@ - program_transform_name = @program_transform_name@ - psdir = @psdir@ - sbindir = @sbindir@ - sharedstatedir = @sharedstatedir@ - srcdir = @srcdir@ -+sys_symbol_underscore = @sys_symbol_underscore@ - sysconfdir = @sysconfdir@ - target = @target@ - target_alias = @target_alias@ - target_cpu = @target_cpu@ - target_os = @target_os@ - target_vendor = @target_vendor@ - toolexecdir = @toolexecdir@ - toolexeclibdir = @toolexeclibdir@ -@@ -183,80 +265,95 @@ AUTOMAKE_OPTIONS = foreign dejagnu - EXPECT = `if [ -f $(top_builddir)/../expect/expect ] ; then \ - echo $(top_builddir)/../expect/expect ; \ - else echo expect ; fi` - - RUNTEST = `if [ -f $(top_srcdir)/../dejagnu/runtest ] ; then \ - echo $(top_srcdir)/../dejagnu/runtest ; \ - else echo runtest; fi` - -+EXTRA_DEJAGNU_SITE_CONFIG = ../local.exp - CLEANFILES = *.exe core* *.log *.sum --EXTRA_DIST = libffi.special/special.exp \ --libffi.special/unwindtest_ffi_call.cc libffi.special/unwindtest.cc \ --libffi.special/ffitestcxx.h config/default.exp lib/target-libpath.exp \ --lib/libffi-dg.exp lib/wrapper.exp libffi.call/float.c \ --libffi.call/cls_multi_schar.c libffi.call/float3.c \ --libffi.call/cls_3_1byte.c libffi.call/stret_large2.c \ --libffi.call/cls_5_1_byte.c libffi.call/stret_medium.c \ --libffi.call/promotion.c libffi.call/cls_dbls_struct.c \ --libffi.call/nested_struct.c libffi.call/closure_fn1.c \ --libffi.call/cls_4_1byte.c libffi.call/cls_float.c \ --libffi.call/cls_2byte.c libffi.call/closure_fn4.c \ --libffi.call/return_fl2.c libffi.call/nested_struct7.c \ --libffi.call/cls_uint.c libffi.call/cls_align_sint64.c \ --libffi.call/float1.c libffi.call/cls_19byte.c \ --libffi.call/nested_struct1.c libffi.call/cls_4byte.c \ --libffi.call/return_fl1.c libffi.call/cls_align_pointer.c \ --libffi.call/nested_struct4.c libffi.call/nested_struct3.c \ --libffi.call/struct7.c libffi.call/nested_struct9.c \ --libffi.call/cls_sshort.c libffi.call/cls_ulonglong.c \ --libffi.call/cls_pointer_stack.c libffi.call/cls_multi_uchar.c \ --libffi.call/testclosure.c libffi.call/cls_3byte1.c \ --libffi.call/struct6.c libffi.call/return_uc.c libffi.call/return_ll1.c \ --libffi.call/cls_ushort.c libffi.call/stret_medium2.c \ --libffi.call/cls_multi_ushortchar.c libffi.call/return_dbl2.c \ --libffi.call/closure_loc_fn0.c libffi.call/return_sc.c \ --libffi.call/nested_struct8.c libffi.call/cls_7_1_byte.c \ --libffi.call/return_ll.c libffi.call/cls_pointer.c \ --libffi.call/err_bad_abi.c libffi.call/return_dbl1.c \ --libffi.call/call.exp libffi.call/ffitest.h libffi.call/strlen.c \ --libffi.call/return_sl.c libffi.call/cls_1_1byte.c \ --libffi.call/struct1.c libffi.call/cls_64byte.c libffi.call/return_ul.c \ --libffi.call/cls_double.c libffi.call/many_win32.c \ --libffi.call/cls_16byte.c libffi.call/cls_align_double.c \ --libffi.call/cls_align_uint16.c libffi.call/cls_9byte1.c \ --libffi.call/cls_multi_sshortchar.c libffi.call/cls_multi_ushort.c \ --libffi.call/closure_stdcall.c libffi.call/return_fl.c \ --libffi.call/strlen_win32.c libffi.call/return_ldl.c \ --libffi.call/cls_align_float.c libffi.call/struct3.c \ --libffi.call/cls_uchar.c libffi.call/cls_sint.c libffi.call/float2.c \ --libffi.call/cls_align_longdouble_split.c \ --libffi.call/cls_longdouble_va.c libffi.call/cls_multi_sshort.c \ --libffi.call/stret_large.c libffi.call/cls_align_sint16.c \ --libffi.call/nested_struct6.c libffi.call/cls_5byte.c \ --libffi.call/return_dbl.c libffi.call/cls_20byte.c \ --libffi.call/cls_8byte.c libffi.call/pyobjc-tc.c \ --libffi.call/cls_24byte.c libffi.call/cls_align_longdouble_split2.c \ --libffi.call/cls_6_1_byte.c libffi.call/cls_schar.c \ --libffi.call/cls_18byte.c libffi.call/closure_fn3.c \ --libffi.call/err_bad_typedef.c libffi.call/closure_fn2.c \ --libffi.call/struct2.c libffi.call/cls_3byte2.c \ --libffi.call/cls_align_longdouble.c libffi.call/cls_20byte1.c \ --libffi.call/return_fl3.c libffi.call/cls_align_uint32.c \ --libffi.call/problem1.c libffi.call/float4.c \ --libffi.call/cls_align_uint64.c libffi.call/struct9.c \ --libffi.call/closure_fn5.c libffi.call/cls_align_sint32.c \ --libffi.call/closure_fn0.c libffi.call/closure_fn6.c \ --libffi.call/struct4.c libffi.call/nested_struct2.c \ --libffi.call/cls_6byte.c libffi.call/cls_7byte.c libffi.call/many.c \ --libffi.call/struct8.c libffi.call/negint.c libffi.call/struct5.c \ --libffi.call/cls_12byte.c libffi.call/cls_double_va.c \ --libffi.call/cls_longdouble.c libffi.call/cls_9byte2.c \ --libffi.call/nested_struct10.c libffi.call/nested_struct5.c \ --libffi.call/huge_struct.c -+EXTRA_DIST = config/default.exp libffi.call/cls_19byte.c \ -+libffi.call/cls_align_longdouble_split.c \ -+libffi.call/closure_loc_fn0.c libffi.call/cls_schar.c \ -+libffi.call/closure_fn1.c \ -+libffi.call/return_ul.c libffi.call/cls_align_double.c \ -+libffi.call/return_fl2.c libffi.call/cls_1_1byte.c \ -+libffi.call/cls_64byte.c libffi.call/nested_struct7.c \ -+libffi.call/cls_align_sint32.c libffi.call/nested_struct2.c \ -+libffi.call/ffitest.h libffi.call/nested_struct4.c \ -+libffi.call/cls_multi_ushort.c libffi.call/struct3.c \ -+libffi.call/cls_3byte1.c libffi.call/cls_16byte.c \ -+libffi.call/struct8.c libffi.call/nested_struct8.c \ -+libffi.call/cls_multi_sshort.c libffi.call/cls_3byte2.c \ -+libffi.call/cls_pointer.c \ -+libffi.call/err_bad_typedef.c libffi.call/cls_4_1byte.c \ -+libffi.call/cls_9byte2.c libffi.call/cls_multi_schar.c \ -+libffi.call/stret_medium2.c libffi.call/cls_5_1_byte.c \ -+libffi.call/call.exp libffi.call/cls_double.c \ -+libffi.call/cls_align_sint16.c libffi.call/cls_uint.c \ -+libffi.call/return_ll1.c libffi.call/nested_struct3.c \ -+libffi.call/cls_20byte1.c libffi.call/closure_fn4.c \ -+libffi.call/cls_uchar.c libffi.call/struct2.c libffi.call/cls_7byte.c \ -+libffi.call/strlen.c libffi.call/many.c libffi.call/testclosure.c \ -+libffi.call/return_fl.c libffi.call/struct5.c \ -+libffi.call/cls_12byte.c libffi.call/cls_multi_sshortchar.c \ -+libffi.call/cls_align_longdouble_split2.c libffi.call/return_dbl2.c \ -+libffi.call/return_fl3.c libffi.call/stret_medium.c \ -+libffi.call/nested_struct6.c libffi.call/closure_fn3.c \ -+libffi.call/float3.c libffi.call/many2.c \ -+libffi.call/closure_stdcall.c libffi.call/cls_align_uint16.c \ -+libffi.call/cls_9byte1.c libffi.call/closure_fn6.c \ -+libffi.call/cls_double_va.c libffi.call/cls_align_pointer.c \ -+libffi.call/cls_align_longdouble.c libffi.call/closure_fn2.c \ -+libffi.call/cls_sshort.c \ -+libffi.call/nested_struct.c libffi.call/cls_20byte.c \ -+libffi.call/cls_longdouble.c libffi.call/cls_multi_uchar.c \ -+libffi.call/return_uc.c libffi.call/closure_thiscall.c \ -+libffi.call/cls_18byte.c libffi.call/cls_8byte.c \ -+libffi.call/promotion.c \ -+libffi.call/return_dbl.c libffi.call/cls_24byte.c \ -+libffi.call/struct4.c libffi.call/cls_6byte.c \ -+libffi.call/cls_align_uint32.c libffi.call/float.c \ -+libffi.call/float1.c libffi.call/float_va.c libffi.call/negint.c \ -+libffi.call/return_dbl1.c libffi.call/cls_3_1byte.c \ -+libffi.call/cls_align_float.c libffi.call/return_fl1.c \ -+libffi.call/nested_struct10.c libffi.call/nested_struct5.c \ -+libffi.call/cls_align_sint64.c \ -+libffi.call/stret_large2.c libffi.call/return_sl.c \ -+libffi.call/closure_fn0.c libffi.call/cls_5byte.c \ -+libffi.call/cls_2byte.c libffi.call/float2.c \ -+libffi.call/cls_dbls_struct.c libffi.call/cls_sint.c \ -+libffi.call/stret_large.c libffi.call/cls_ulonglong.c \ -+libffi.call/cls_ushort.c libffi.call/nested_struct1.c \ -+libffi.call/err_bad_abi.c libffi.call/cls_longdouble_va.c \ -+libffi.call/cls_float.c libffi.call/cls_pointer_stack.c \ -+libffi.call/pyobjc-tc.c libffi.call/cls_multi_ushortchar.c \ -+libffi.call/struct1.c libffi.call/nested_struct9.c \ -+libffi.call/huge_struct.c libffi.call/problem1.c \ -+libffi.call/float4.c \ -+libffi.call/return_ldl.c \ -+libffi.call/closure_fn5.c \ -+libffi.call/struct6.c libffi.call/return_ll.c libffi.call/struct9.c \ -+libffi.call/return_sc.c libffi.call/struct7.c \ -+libffi.call/cls_align_uint64.c libffi.call/cls_4byte.c \ -+libffi.call/cls_6_1_byte.c \ -+libffi.call/cls_7_1_byte.c libffi.call/unwindtest.cc \ -+libffi.call/unwindtest_ffi_call.cc \ -+lib/wrapper.exp lib/target-libpath.exp \ -+lib/libffi.exp libffi.call/cls_struct_va1.c \ -+libffi.call/cls_uchar_va.c libffi.call/cls_uint_va.c \ -+libffi.call/cls_ulong_va.c libffi.call/cls_ushort_va.c \ -+libffi.call/nested_struct11.c libffi.call/uninitialized.c \ -+libffi.call/va_1.c libffi.call/va_struct1.c libffi.call/va_struct2.c \ -+libffi.call/va_struct3.c \ -+libffi.call/strlen2.c \ -+libffi.call/strlen3.c \ -+libffi.call/strlen4.c - - all: all-am - - .SUFFIXES: - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ -@@ -287,51 +384,57 @@ Makefile: $(srcdir)/Makefile.in $(top_bu - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - $(am__aclocal_m4_deps): - - mostlyclean-libtool: - -rm -f *.lo - - clean-libtool: - -rm -rf .libs _libs --tags: TAGS --TAGS: -+tags TAGS: - --ctags: CTAGS --CTAGS: -+ctags CTAGS: -+ -+cscope cscopelist: - - - check-DEJAGNU: site.exp -- srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ -+ srcdir='$(srcdir)'; export srcdir; \ - EXPECT=$(EXPECT); export EXPECT; \ -- runtest=$(RUNTEST); \ -- if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ -+ if $(SHELL) -c "$(RUNTEST) --version" > /dev/null 2>&1; then \ - exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \ -- if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \ -+ if $(RUNTEST) $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \ - then :; else exit_status=1; fi; \ - done; \ -- else echo "WARNING: could not find \`runtest'" 1>&2; :;\ -+ else echo "WARNING: could not find '$(RUNTEST)'" 1>&2; :;\ - fi; \ - exit $$exit_status --site.exp: Makefile -- @echo 'Making a new site.exp file...' -+site.exp: Makefile $(EXTRA_DEJAGNU_SITE_CONFIG) -+ @echo 'Making a new site.exp file ...' - @echo '## these variables are automatically generated by make ##' >site.tmp - @echo '# Do not edit here. If you wish to override these values' >>site.tmp - @echo '# edit the last section' >>site.tmp -- @echo 'set srcdir $(srcdir)' >>site.tmp -+ @echo 'set srcdir "$(srcdir)"' >>site.tmp - @echo "set objdir `pwd`" >>site.tmp - @echo 'set build_alias "$(build_alias)"' >>site.tmp - @echo 'set build_triplet $(build_triplet)' >>site.tmp - @echo 'set host_alias "$(host_alias)"' >>site.tmp - @echo 'set host_triplet $(host_triplet)' >>site.tmp - @echo 'set target_alias "$(target_alias)"' >>site.tmp - @echo 'set target_triplet $(target_triplet)' >>site.tmp -- @echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp -- @test ! -f site.exp || \ -- sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp -+ @list='$(EXTRA_DEJAGNU_SITE_CONFIG)'; for f in $$list; do \ -+ echo "## Begin content included from file $$f. Do not modify. ##" \ -+ && cat `test -f "$$f" || echo '$(srcdir)/'`$$f \ -+ && echo "## End content included from file $$f. ##" \ -+ || exit 1; \ -+ done >> site.tmp -+ @echo "## End of auto-generated content; you can edit from here. ##" >> site.tmp -+ @if test -f site.exp; then \ -+ sed -e '1,/^## End of auto-generated content.*##/d' site.exp >> site.tmp; \ -+ fi - @-rm -f site.bak - @test ! -f site.exp || mv site.exp site.bak - @mv site.tmp site.exp - - distclean-DEJAGNU: - -rm -f site.exp site.bak - -l='$(DEJATOOL)'; for tool in $$l; do \ - rm -f $$tool.sum $$tool.log; \ -@@ -377,20 +480,25 @@ install-exec: install-exec-am - install-data: install-data-am - uninstall: uninstall-am - - install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - - installcheck: installcheck-am - install-strip: -- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -- `test -z '$(STRIP)' || \ -- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+ if test -z '$(STRIP)'; then \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ install; \ -+ else \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ -+ fi - mostlyclean-generic: - - clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - - distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -@@ -462,23 +570,24 @@ ps: ps-am - - ps-am: - - uninstall-am: - - .MAKE: check-am install-am install-strip - - .PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \ -- clean-libtool distclean distclean-DEJAGNU distclean-generic \ -- distclean-libtool distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -- install-dvi-am install-exec install-exec-am install-html \ -- install-html-am install-info install-info-am install-man \ -- install-pdf install-pdf-am install-ps install-ps-am \ -- install-strip installcheck installcheck-am installdirs \ -- maintainer-clean maintainer-clean-generic mostlyclean \ -- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ -- uninstall uninstall-am -+ clean-libtool cscopelist-am ctags-am distclean \ -+ distclean-DEJAGNU distclean-generic distclean-libtool distdir \ -+ dvi dvi-am html html-am info info-am install install-am \ -+ install-data install-data-am install-dvi install-dvi-am \ -+ install-exec install-exec-am install-html install-html-am \ -+ install-info install-info-am install-man install-pdf \ -+ install-pdf-am install-ps install-ps-am install-strip \ -+ installcheck installcheck-am installdirs maintainer-clean \ -+ maintainer-clean-generic mostlyclean mostlyclean-generic \ -+ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ -+ uninstall-am - - - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. - .NOEXPORT: -diff --git a/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp b/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp -deleted file mode 100644 ---- a/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp -+++ /dev/null -@@ -1,350 +0,0 @@ --# Copyright (C) 2003, 2005, 2008, 2009, 2010 Free Software Foundation, Inc. -- --# This program is free software; you can redistribute it and/or modify --# it under the terms of the GNU General Public License as published by --# the Free Software Foundation; either version 3 of the License, or --# (at your option) any later version. --# --# This program is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. --# --# You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -- --proc load_gcc_lib { filename } { -- global srcdir -- load_file $srcdir/lib/$filename --} -- --load_lib dg.exp --load_lib libgloss.exp --load_gcc_lib target-libpath.exp --load_gcc_lib wrapper.exp -- -- --# Define libffi callbacks for dg.exp. -- --proc libffi-dg-test-1 { target_compile prog do_what extra_tool_flags } { -- -- # To get all \n in dg-output test strings to match printf output -- # in a system that outputs it as \015\012 (i.e. not just \012), we -- # need to change all \n into \r?\n. As there is no dejagnu flag -- # or hook to do that, we simply change the text being tested. -- # Unfortunately, we have to know that the variable is called -- # dg-output-text and lives in the caller of libffi-dg-test, which -- # is two calls up. Overriding proc dg-output would be longer and -- # would necessarily have the same assumption. -- upvar 2 dg-output-text output_match -- -- if { [llength $output_match] > 1 } { -- regsub -all "\n" [lindex $output_match 1] "\r?\n" x -- set output_match [lreplace $output_match 1 1 $x] -- } -- -- # Set up the compiler flags, based on what we're going to do. -- -- set options [list] -- switch $do_what { -- "compile" { -- set compile_type "assembly" -- set output_file "[file rootname [file tail $prog]].s" -- } -- "link" { -- set compile_type "executable" -- set output_file "[file rootname [file tail $prog]].exe" -- # The following line is needed for targets like the i960 where -- # the default output file is b.out. Sigh. -- } -- "run" { -- set compile_type "executable" -- # FIXME: "./" is to cope with "." not being in $PATH. -- # Should this be handled elsewhere? -- # YES. -- set output_file "./[file rootname [file tail $prog]].exe" -- # This is the only place where we care if an executable was -- # created or not. If it was, dg.exp will try to run it. -- remote_file build delete $output_file; -- } -- default { -- perror "$do_what: not a valid dg-do keyword" -- return "" -- } -- } -- -- if { $extra_tool_flags != "" } { -- lappend options "additional_flags=$extra_tool_flags" -- } -- -- set comp_output [libffi_target_compile "$prog" "$output_file" "$compile_type" $options]; -- -- -- return [list $comp_output $output_file] --} -- -- --proc libffi-dg-test { prog do_what extra_tool_flags } { -- return [libffi-dg-test-1 target_compile $prog $do_what $extra_tool_flags] --} -- --proc libffi-init { args } { -- global gluefile wrap_flags; -- global srcdir -- global blddirffi -- global objdir -- global TOOL_OPTIONS -- global tool -- global libffi_include -- global libffi_link_flags -- global tool_root_dir -- global ld_library_path -- -- set blddirffi [pwd]/.. -- verbose "libffi $blddirffi" -- -- set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] -- if {$gccdir != ""} { -- set gccdir [file dirname $gccdir] -- } -- verbose "gccdir $gccdir" -- -- set ld_library_path "." -- append ld_library_path ":${gccdir}" -- -- set compiler "${gccdir}/xgcc" -- if { [is_remote host] == 0 && [which $compiler] != 0 } { -- foreach i "[exec $compiler --print-multi-lib]" { -- set mldir "" -- regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir -- set mldir [string trimright $mldir "\;@"] -- if { "$mldir" == "." } { -- continue -- } -- if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } { -- append ld_library_path ":${gccdir}/${mldir}" -- } -- } -- } -- # add the library path for libffi. -- append ld_library_path ":${blddirffi}/.libs" -- -- verbose "ld_library_path: $ld_library_path" -- -- # Point to the Libffi headers in libffi. -- set libffi_include "${blddirffi}/include" -- verbose "libffi_include $libffi_include" -- -- set libffi_dir "${blddirffi}/.libs" -- verbose "libffi_dir $libffi_dir" -- if { $libffi_dir != "" } { -- set libffi_dir [file dirname ${libffi_dir}] -- set libffi_link_flags "-L${libffi_dir}/.libs" -- } -- -- set_ld_library_path_env_vars -- libffi_maybe_build_wrapper "${objdir}/testglue.o" --} -- --proc libffi_exit { } { -- global gluefile; -- -- if [info exists gluefile] { -- file_on_build delete $gluefile; -- unset gluefile; -- } --} -- --proc libffi_target_compile { source dest type options } { -- global gluefile wrap_flags; -- global srcdir -- global blddirffi -- global TOOL_OPTIONS -- global libffi_link_flags -- global libffi_include -- global target_triplet -- -- -- if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } { -- lappend options "libs=${gluefile}" -- lappend options "ldflags=$wrap_flags" -- } -- -- # TOOL_OPTIONS must come first, so that it doesn't override testcase -- # specific options. -- if [info exists TOOL_OPTIONS] { -- lappend options [concat "additional_flags=$TOOL_OPTIONS" $options]; -- } -- -- # search for ffi_mips.h in srcdir, too -- lappend options "additional_flags=-I${libffi_include} -I${srcdir}/../include -I${libffi_include}/.." -- lappend options "additional_flags=${libffi_link_flags}" -- -- # Darwin needs a stack execution allowed flag. -- -- if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"] -- || [istarget "*-*-darwin2*"] } { -- lappend options "additional_flags=-Wl,-allow_stack_execute" -- } -- -- # If you're building the compiler with --prefix set to a place -- # where it's not yet installed, then the linker won't be able to -- # find the libgcc used by libffi.dylib. We could pass the -- # -dylib_file option, but that's complicated, and it's much easier -- # to just make the linker find libgcc using -L options. -- if { [string match "*-*-darwin*" $target_triplet] } { -- lappend options "libs= -shared-libgcc" -- } -- -- if { [string match "*-*-openbsd*" $target_triplet] } { -- lappend options "libs= -lpthread" -- } -- -- lappend options "libs= -lffi" -- -- verbose "options: $options" -- return [target_compile $source $dest $type $options] --} -- --# Utility routines. -- --# --# search_for -- looks for a string match in a file --# --proc search_for { file pattern } { -- set fd [open $file r] -- while { [gets $fd cur_line]>=0 } { -- if [string match "*$pattern*" $cur_line] then { -- close $fd -- return 1 -- } -- } -- close $fd -- return 0 --} -- --# Modified dg-runtest that can cycle through a list of optimization options --# as c-torture does. --proc libffi-dg-runtest { testcases default-extra-flags } { -- global runtests -- -- foreach test $testcases { -- # If we're only testing specific files and this isn't one of -- # them, skip it. -- if ![runtest_file_p $runtests $test] { -- continue -- } -- -- # Look for a loop within the source code - if we don't find one, -- # don't pass -funroll[-all]-loops. -- global torture_with_loops torture_without_loops -- if [expr [search_for $test "for*("]+[search_for $test "while*("]] { -- set option_list $torture_with_loops -- } else { -- set option_list $torture_without_loops -- } -- -- set nshort [file tail [file dirname $test]]/[file tail $test] -- -- foreach flags $option_list { -- verbose "Testing $nshort, $flags" 1 -- dg-test $test $flags ${default-extra-flags} -- } -- } --} -- -- --# Like check_conditional_xfail, but callable from a dg test. -- --proc dg-xfail-if { args } { -- set args [lreplace $args 0 0] -- set selector "target [join [lindex $args 1]]" -- if { [dg-process-target $selector] == "S" } { -- global compiler_conditional_xfail_data -- set compiler_conditional_xfail_data $args -- } --} -- --proc check-flags { args } { -- -- # The args are within another list; pull them out. -- set args [lindex $args 0] -- -- # The next two arguments are optional. If they were not specified, -- # use the defaults. -- if { [llength $args] == 2 } { -- lappend $args [list "*"] -- } -- if { [llength $args] == 3 } { -- lappend $args [list ""] -- } -- -- # If the option strings are the defaults, or the same as the -- # defaults, there is no need to call check_conditional_xfail to -- # compare them to the actual options. -- if { [string compare [lindex $args 2] "*"] == 0 -- && [string compare [lindex $args 3] "" ] == 0 } { -- set result 1 -- } else { -- # The target list might be an effective-target keyword, so replace -- # the original list with "*-*-*", since we already know it matches. -- set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]] -- } -- -- return $result --} -- --proc dg-skip-if { args } { -- # Verify the number of arguments. The last two are optional. -- set args [lreplace $args 0 0] -- if { [llength $args] < 2 || [llength $args] > 4 } { -- error "dg-skip-if 2: need 2, 3, or 4 arguments" -- } -- -- # Don't bother if we're already skipping the test. -- upvar dg-do-what dg-do-what -- if { [lindex ${dg-do-what} 1] == "N" } { -- return -- } -- -- set selector [list target [lindex $args 1]] -- if { [dg-process-target $selector] == "S" } { -- if [check-flags $args] { -- upvar dg-do-what dg-do-what -- set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] -- } -- } --} -- --# We need to make sure that additional_files and additional_sources --# are both cleared out after every test. It is not enough to clear --# them out *before* the next test run because gcc-target-compile gets --# run directly from some .exp files (outside of any test). (Those --# uses should eventually be eliminated.) -- --# Because the DG framework doesn't provide a hook that is run at the --# end of a test, we must replace dg-test with a wrapper. -- --if { [info procs saved-dg-test] == [list] } { -- rename dg-test saved-dg-test -- -- proc dg-test { args } { -- global additional_files -- global additional_sources -- global errorInfo -- -- if { [ catch { eval saved-dg-test $args } errmsg ] } { -- set saved_info $errorInfo -- set additional_files "" -- set additional_sources "" -- error $errmsg $saved_info -- } -- set additional_files "" -- set additional_sources "" -- } --} -- --# Local Variables: --# tcl-indent-level:4 --# End: -diff --git a/js/src/ctypes/libffi/testsuite/lib/libffi.exp b/js/src/ctypes/libffi/testsuite/lib/libffi.exp -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/lib/libffi.exp -@@ -0,0 +1,409 @@ -+# Copyright (C) 2003, 2005, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; see the file COPYING3. If not see -+# . -+ -+proc load_gcc_lib { filename } { -+ global srcdir -+ load_file $srcdir/lib/$filename -+} -+ -+load_lib dg.exp -+load_lib libgloss.exp -+load_gcc_lib target-libpath.exp -+load_gcc_lib wrapper.exp -+ -+ -+# Define libffi callbacks for dg.exp. -+ -+proc libffi-dg-test-1 { target_compile prog do_what extra_tool_flags } { -+ -+ # To get all \n in dg-output test strings to match printf output -+ # in a system that outputs it as \015\012 (i.e. not just \012), we -+ # need to change all \n into \r?\n. As there is no dejagnu flag -+ # or hook to do that, we simply change the text being tested. -+ # Unfortunately, we have to know that the variable is called -+ # dg-output-text and lives in the caller of libffi-dg-test, which -+ # is two calls up. Overriding proc dg-output would be longer and -+ # would necessarily have the same assumption. -+ upvar 2 dg-output-text output_match -+ -+ if { [llength $output_match] > 1 } { -+ regsub -all "\n" [lindex $output_match 1] "\r?\n" x -+ set output_match [lreplace $output_match 1 1 $x] -+ } -+ -+ # Set up the compiler flags, based on what we're going to do. -+ -+ set options [list] -+ switch $do_what { -+ "compile" { -+ set compile_type "assembly" -+ set output_file "[file rootname [file tail $prog]].s" -+ } -+ "link" { -+ set compile_type "executable" -+ set output_file "[file rootname [file tail $prog]].exe" -+ # The following line is needed for targets like the i960 where -+ # the default output file is b.out. Sigh. -+ } -+ "run" { -+ set compile_type "executable" -+ # FIXME: "./" is to cope with "." not being in $PATH. -+ # Should this be handled elsewhere? -+ # YES. -+ set output_file "./[file rootname [file tail $prog]].exe" -+ # This is the only place where we care if an executable was -+ # created or not. If it was, dg.exp will try to run it. -+ remote_file build delete $output_file; -+ } -+ default { -+ perror "$do_what: not a valid dg-do keyword" -+ return "" -+ } -+ } -+ -+ if { $extra_tool_flags != "" } { -+ lappend options "additional_flags=$extra_tool_flags" -+ } -+ -+ set comp_output [libffi_target_compile "$prog" "$output_file" "$compile_type" $options]; -+ -+ -+ return [list $comp_output $output_file] -+} -+ -+ -+proc libffi-dg-test { prog do_what extra_tool_flags } { -+ return [libffi-dg-test-1 target_compile $prog $do_what $extra_tool_flags] -+} -+ -+proc libffi-init { args } { -+ global gluefile wrap_flags; -+ global srcdir -+ global blddirffi -+ global objdir -+ global TOOL_OPTIONS -+ global tool -+ global libffi_include -+ global libffi_link_flags -+ global tool_root_dir -+ global ld_library_path -+ -+ global using_gcc -+ -+ set blddirffi [pwd]/.. -+ verbose "libffi $blddirffi" -+ -+ # Are we building with GCC? -+ set tmp [grep ../config.status "GCC='yes'"] -+ if { [string match $tmp "GCC='yes'"] } { -+ -+ set using_gcc "yes" -+ -+ set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] -+ if {$gccdir != ""} { -+ set gccdir [file dirname $gccdir] -+ } -+ verbose "gccdir $gccdir" -+ -+ set ld_library_path "." -+ append ld_library_path ":${gccdir}" -+ -+ set compiler "${gccdir}/xgcc" -+ if { [is_remote host] == 0 && [which $compiler] != 0 } { -+ foreach i "[exec $compiler --print-multi-lib]" { -+ set mldir "" -+ regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir -+ set mldir [string trimright $mldir "\;@"] -+ if { "$mldir" == "." } { -+ continue -+ } -+ if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } { -+ append ld_library_path ":${gccdir}/${mldir}" -+ } -+ } -+ } -+ -+ } else { -+ -+ set using_gcc "no" -+ -+ } -+ -+ # add the library path for libffi. -+ append ld_library_path ":${blddirffi}/.libs" -+ -+ verbose "ld_library_path: $ld_library_path" -+ -+ # Point to the Libffi headers in libffi. -+ set libffi_include "${blddirffi}/include" -+ verbose "libffi_include $libffi_include" -+ -+ set libffi_dir "${blddirffi}/.libs" -+ verbose "libffi_dir $libffi_dir" -+ if { $libffi_dir != "" } { -+ set libffi_dir [file dirname ${libffi_dir}] -+ set libffi_link_flags "-L${libffi_dir}/.libs" -+ } -+ -+ set_ld_library_path_env_vars -+ libffi_maybe_build_wrapper "${objdir}/testglue.o" -+} -+ -+proc libffi_exit { } { -+ global gluefile; -+ -+ if [info exists gluefile] { -+ file_on_build delete $gluefile; -+ unset gluefile; -+ } -+} -+ -+proc libffi_target_compile { source dest type options } { -+ global gluefile wrap_flags; -+ global srcdir -+ global blddirffi -+ global TOOL_OPTIONS -+ global libffi_link_flags -+ global libffi_include -+ global target_triplet -+ -+ -+ if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } { -+ lappend options "libs=${gluefile}" -+ lappend options "ldflags=$wrap_flags" -+ } -+ -+ # TOOL_OPTIONS must come first, so that it doesn't override testcase -+ # specific options. -+ if [info exists TOOL_OPTIONS] { -+ lappend options [concat "additional_flags=$TOOL_OPTIONS" $options]; -+ } -+ -+ # search for ffi_mips.h in srcdir, too -+ lappend options "additional_flags=-I${libffi_include} -I${srcdir}/../include -I${libffi_include}/.." -+ lappend options "additional_flags=${libffi_link_flags}" -+ -+ # Darwin needs a stack execution allowed flag. -+ -+ if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"] -+ || [istarget "*-*-darwin2*"] } { -+ lappend options "additional_flags=-Wl,-allow_stack_execute" -+ } -+ -+ # If you're building the compiler with --prefix set to a place -+ # where it's not yet installed, then the linker won't be able to -+ # find the libgcc used by libffi.dylib. We could pass the -+ # -dylib_file option, but that's complicated, and it's much easier -+ # to just make the linker find libgcc using -L options. -+ if { [string match "*-*-darwin*" $target_triplet] } { -+ lappend options "libs= -shared-libgcc" -+ } -+ -+ if { [string match "*-*-openbsd*" $target_triplet] } { -+ lappend options "libs= -lpthread" -+ } -+ -+ lappend options "libs= -lffi" -+ -+ if { [string match "aarch64*-*-linux*" $target_triplet] } { -+ lappend options "libs= -lpthread" -+ } -+ -+ verbose "options: $options" -+ return [target_compile $source $dest $type $options] -+} -+ -+# Utility routines. -+ -+# -+# search_for -- looks for a string match in a file -+# -+proc search_for { file pattern } { -+ set fd [open $file r] -+ while { [gets $fd cur_line]>=0 } { -+ if [string match "*$pattern*" $cur_line] then { -+ close $fd -+ return 1 -+ } -+ } -+ close $fd -+ return 0 -+} -+ -+# Modified dg-runtest that can cycle through a list of optimization options -+# as c-torture does. -+proc libffi-dg-runtest { testcases default-extra-flags } { -+ global runtests -+ -+ foreach test $testcases { -+ # If we're only testing specific files and this isn't one of -+ # them, skip it. -+ if ![runtest_file_p $runtests $test] { -+ continue -+ } -+ -+ # Look for a loop within the source code - if we don't find one, -+ # don't pass -funroll[-all]-loops. -+ global torture_with_loops torture_without_loops -+ if [expr [search_for $test "for*("]+[search_for $test "while*("]] { -+ set option_list $torture_with_loops -+ } else { -+ set option_list $torture_without_loops -+ } -+ -+ set nshort [file tail [file dirname $test]]/[file tail $test] -+ -+ foreach flags $option_list { -+ verbose "Testing $nshort, $flags" 1 -+ dg-test $test $flags ${default-extra-flags} -+ } -+ } -+} -+ -+proc run-many-tests { testcases extra_flags } { -+ global using_gcc -+ if { [string match $using_gcc "yes"] } { -+ set common "-W -Wall" -+ set optimizations { "-O0" "-O2" "-O3" "-Os" "-O2 -fomit-frame-pointer" } -+ } else { -+ # Assume we are using the vendor compiler. -+ set common "" -+ set optimizations { "" } -+ } -+ -+ set targetabis { "" } -+ if [string match $using_gcc "yes"] { -+ if [istarget "i?86-*-*"] { -+ set targetabis { -+ "" -+ "-DABI_NUM=FFI_STDCALL -DABI_ATTR=__STDCALL__" -+ "-DABI_NUM=FFI_THISCALL -DABI_ATTR=__THISCALL__" -+ "-DABI_NUM=FFI_FASTCALL -DABI_ATTR=__FASTCALL__" -+ } -+ } -+ } -+ -+ set common [ concat $common $extra_flags ] -+ foreach test $testcases { -+ set testname [file tail $test] -+ if [search_for $test "ABI_NUM"] { -+ set abis $targetabis -+ } else { -+ set abis { "" } -+ } -+ foreach opt $optimizations { -+ foreach abi $abis { -+ set options [concat $common $opt $abi] -+ verbose "Testing $testname, $options" 1 -+ dg-test $test $options "" -+ } -+ } -+ } -+} -+ -+# Like check_conditional_xfail, but callable from a dg test. -+ -+proc dg-xfail-if { args } { -+ set args [lreplace $args 0 0] -+ set selector "target [join [lindex $args 1]]" -+ if { [dg-process-target $selector] == "S" } { -+ global compiler_conditional_xfail_data -+ set compiler_conditional_xfail_data $args -+ } -+} -+ -+proc check-flags { args } { -+ -+ # The args are within another list; pull them out. -+ set args [lindex $args 0] -+ -+ # The next two arguments are optional. If they were not specified, -+ # use the defaults. -+ if { [llength $args] == 2 } { -+ lappend $args [list "*"] -+ } -+ if { [llength $args] == 3 } { -+ lappend $args [list ""] -+ } -+ -+ # If the option strings are the defaults, or the same as the -+ # defaults, there is no need to call check_conditional_xfail to -+ # compare them to the actual options. -+ if { [string compare [lindex $args 2] "*"] == 0 -+ && [string compare [lindex $args 3] "" ] == 0 } { -+ set result 1 -+ } else { -+ # The target list might be an effective-target keyword, so replace -+ # the original list with "*-*-*", since we already know it matches. -+ set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]] -+ } -+ -+ return $result -+} -+ -+proc dg-skip-if { args } { -+ # Verify the number of arguments. The last two are optional. -+ set args [lreplace $args 0 0] -+ if { [llength $args] < 2 || [llength $args] > 4 } { -+ error "dg-skip-if 2: need 2, 3, or 4 arguments" -+ } -+ -+ # Don't bother if we're already skipping the test. -+ upvar dg-do-what dg-do-what -+ if { [lindex ${dg-do-what} 1] == "N" } { -+ return -+ } -+ -+ set selector [list target [lindex $args 1]] -+ if { [dg-process-target $selector] == "S" } { -+ if [check-flags $args] { -+ upvar dg-do-what dg-do-what -+ set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] -+ } -+ } -+} -+ -+# We need to make sure that additional_files and additional_sources -+# are both cleared out after every test. It is not enough to clear -+# them out *before* the next test run because gcc-target-compile gets -+# run directly from some .exp files (outside of any test). (Those -+# uses should eventually be eliminated.) -+ -+# Because the DG framework doesn't provide a hook that is run at the -+# end of a test, we must replace dg-test with a wrapper. -+ -+if { [info procs saved-dg-test] == [list] } { -+ rename dg-test saved-dg-test -+ -+ proc dg-test { args } { -+ global additional_files -+ global additional_sources -+ global errorInfo -+ -+ if { [ catch { eval saved-dg-test $args } errmsg ] } { -+ set saved_info $errorInfo -+ set additional_files "" -+ set additional_sources "" -+ error $errmsg $saved_info -+ } -+ set additional_files "" -+ set additional_sources "" -+ } -+} -+ -+# Local Variables: -+# tcl-indent-level:4 -+# End: -diff --git a/js/src/ctypes/libffi/testsuite/lib/target-libpath.exp b/js/src/ctypes/libffi/testsuite/lib/target-libpath.exp ---- a/js/src/ctypes/libffi/testsuite/lib/target-libpath.exp -+++ b/js/src/ctypes/libffi/testsuite/lib/target-libpath.exp -@@ -20,41 +20,43 @@ set orig_environment_saved 0 - set orig_ld_library_path_saved 0 - set orig_ld_run_path_saved 0 - set orig_shlib_path_saved 0 - set orig_ld_libraryn32_path_saved 0 - set orig_ld_library64_path_saved 0 - set orig_ld_library_path_32_saved 0 - set orig_ld_library_path_64_saved 0 - set orig_dyld_library_path_saved 0 -- -+set orig_path_saved 0 - - ####################################### - # proc set_ld_library_path_env_vars { } - ####################################### - - proc set_ld_library_path_env_vars { } { - global ld_library_path - global orig_environment_saved - global orig_ld_library_path_saved - global orig_ld_run_path_saved - global orig_shlib_path_saved - global orig_ld_libraryn32_path_saved - global orig_ld_library64_path_saved - global orig_ld_library_path_32_saved - global orig_ld_library_path_64_saved - global orig_dyld_library_path_saved -+ global orig_path_saved - global orig_ld_library_path - global orig_ld_run_path - global orig_shlib_path - global orig_ld_libraryn32_path - global orig_ld_library64_path - global orig_ld_library_path_32 - global orig_ld_library_path_64 - global orig_dyld_library_path -+ global orig_path - global GCC_EXEC_PREFIX - - # Set the relocated compiler prefix, but only if the user hasn't specified one. - if { [info exists GCC_EXEC_PREFIX] && ![info exists env(GCC_EXEC_PREFIX)] } { - setenv GCC_EXEC_PREFIX "$GCC_EXEC_PREFIX" - } - - # Setting the ld library path causes trouble when testing cross-compilers. -@@ -95,16 +97,20 @@ proc set_ld_library_path_env_vars { } { - if [info exists env(LD_LIBRARY_PATH_64)] { - set orig_ld_library_path_64 "$env(LD_LIBRARY_PATH_64)" - set orig_ld_library_path_64_saved 1 - } - if [info exists env(DYLD_LIBRARY_PATH)] { - set orig_dyld_library_path "$env(DYLD_LIBRARY_PATH)" - set orig_dyld_library_path_saved 1 - } -+ if [info exists env(PATH)] { -+ set orig_path "$env(PATH)" -+ set orig_path_saved 1 -+ } - } - - # We need to set ld library path in the environment. Currently, - # unix.exp doesn't set the environment correctly for all systems. - # It only sets SHLIB_PATH and LD_LIBRARY_PATH when it executes a - # program. We also need the environment set for compilations, etc. - # - # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but -@@ -164,16 +170,23 @@ proc set_ld_library_path_env_vars { } { - } else { - setenv LD_LIBRARY_PATH_64 "$ld_library_path" - } - if { $orig_dyld_library_path_saved } { - setenv DYLD_LIBRARY_PATH "$ld_library_path:$orig_dyld_library_path" - } else { - setenv DYLD_LIBRARY_PATH "$ld_library_path" - } -+ if { [istarget *-*-cygwin*] || [istarget *-*-mingw*] } { -+ if { $orig_path_saved } { -+ setenv PATH "$ld_library_path:$orig_path" -+ } else { -+ setenv PATH "$ld_library_path" -+ } -+ } - - verbose -log "set_ld_library_path_env_vars: ld_library_path=$ld_library_path" - } - - ####################################### - # proc restore_ld_library_path_env_vars { } - ####################################### - -@@ -182,24 +195,26 @@ proc restore_ld_library_path_env_vars { - global orig_ld_library_path_saved - global orig_ld_run_path_saved - global orig_shlib_path_saved - global orig_ld_libraryn32_path_saved - global orig_ld_library64_path_saved - global orig_ld_library_path_32_saved - global orig_ld_library_path_64_saved - global orig_dyld_library_path_saved -+ global orig_path_saved - global orig_ld_library_path - global orig_ld_run_path - global orig_shlib_path - global orig_ld_libraryn32_path - global orig_ld_library64_path - global orig_ld_library_path_32 - global orig_ld_library_path_64 - global orig_dyld_library_path -+ global orig_path - - if { $orig_environment_saved == 0 } { - return - } - - if { $orig_ld_library_path_saved } { - setenv LD_LIBRARY_PATH "$orig_ld_library_path" - } elseif [info exists env(LD_LIBRARY_PATH)] { -@@ -235,16 +250,21 @@ proc restore_ld_library_path_env_vars { - } elseif [info exists env(LD_LIBRARY_PATH_64)] { - unsetenv LD_LIBRARY_PATH_64 - } - if { $orig_dyld_library_path_saved } { - setenv DYLD_LIBRARY_PATH "$orig_dyld_library_path" - } elseif [info exists env(DYLD_LIBRARY_PATH)] { - unsetenv DYLD_LIBRARY_PATH - } -+ if { $orig_path_saved } { -+ setenv PATH "$orig_path" -+ } elseif [info exists env(PATH)] { -+ unsetenv PATH -+ } - } - - ####################################### - # proc get_shlib_extension { } - ####################################### - - proc get_shlib_extension { } { - global shlib_ext -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/call.exp b/js/src/ctypes/libffi/testsuite/libffi.call/call.exp ---- a/js/src/ctypes/libffi/testsuite/libffi.call/call.exp -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/call.exp -@@ -1,36 +1,31 @@ --# Copyright (C) 2003, 2006, 2009 Free Software Foundation, Inc. -+# Copyright (C) 2003, 2006, 2009, 2010 Free Software Foundation, Inc. - - # This program is free software; you can redistribute it and/or modify - # it under the terms of the GNU General Public License as published by - # the Free Software Foundation; either version 3 of the License, or - # (at your option) any later version. - # - # This program is distributed in the hope that it will be useful, - # but WITHOUT ANY WARRANTY; without even the implied warranty of - # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - # GNU General Public License for more details. - # - # You should have received a copy of the GNU General Public License - # along with this program; see the file COPYING3. If not see - # . - --# libffi testsuite that uses the 'dg.exp' driver. -- --load_lib libffi-dg.exp -- - dg-init - libffi-init - - global srcdir subdir - --dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O0 -W -Wall" "" --dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O2" "" --dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O3" "" --dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-Os" "" --dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O2 -fomit-frame-pointer" "" -+run-many-tests [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "" -+if { [string match $using_gcc "yes"] } { -+ run-many-tests [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] "-shared-libgcc -lstdc++" -+} - - dg-finish - - # Local Variables: - # tcl-indent-level:4 - # End: -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/closure_stdcall.c b/js/src/ctypes/libffi/testsuite/libffi.call/closure_stdcall.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/closure_stdcall.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/closure_stdcall.c -@@ -1,15 +1,15 @@ - /* Area: closure_call (stdcall convention) - Purpose: Check handling when caller expects stdcall callee - Limitations: none. - PR: none. - Originator: */ - --/* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ -+/* { dg-do run { target i?86-*-* } } */ - #include "ffitest.h" - - static void - closure_test_stdcall(ffi_cif* cif __UNUSED__, void* resp, void** args, - void* userdata) - { - *(ffi_arg*)resp = - (int)*(int *)args[0] + (int)(*(int *)args[1]) -@@ -18,47 +18,39 @@ closure_test_stdcall(ffi_cif* cif __UNUS - - printf("%d %d %d %d: %d\n", - (int)*(int *)args[0], (int)(*(int *)args[1]), - (int)(*(int *)args[2]), (int)(*(int *)args[3]), - (int)*(ffi_arg *)resp); - - } - --typedef int (__stdcall *closure_test_type0)(int, int, int, int); -+typedef int (__STDCALL__ *closure_test_type0)(int, int, int, int); - - int main (void) - { - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - ffi_type * cl_arg_types[17]; - int res; -- void* sp_pre; -- void* sp_post; -- char buf[1024]; - - cl_arg_types[0] = &ffi_type_uint; - cl_arg_types[1] = &ffi_type_uint; - cl_arg_types[2] = &ffi_type_uint; - cl_arg_types[3] = &ffi_type_uint; - cl_arg_types[4] = NULL; - - /* Initialize the cif */ - CHECK(ffi_prep_cif(&cif, FFI_STDCALL, 4, - &ffi_type_sint, cl_arg_types) == FFI_OK); - - CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_stdcall, - (void *) 3 /* userdata */, code) == FFI_OK); - -- asm volatile (" movl %%esp,%0" : "=g" (sp_pre)); - res = (*(closure_test_type0)code)(0, 1, 2, 3); -- asm volatile (" movl %%esp,%0" : "=g" (sp_post)); - /* { dg-output "0 1 2 3: 9" } */ - - printf("res: %d\n",res); - /* { dg-output "\nres: 9" } */ - -- sprintf(buf, "mismatch: pre=%p vs post=%p", sp_pre, sp_post); -- printf("stack pointer %s\n", (sp_pre == sp_post ? "match" : buf)); -- /* { dg-output "\nstack pointer match" } */ - exit(0); - } -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/closure_thiscall.c b/js/src/ctypes/libffi/testsuite/libffi.call/closure_thiscall.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/closure_thiscall.c -@@ -0,0 +1,56 @@ -+/* Area: closure_call (thiscall convention) -+ Purpose: Check handling when caller expects thiscall callee -+ Limitations: none. -+ PR: none. -+ Originator: */ -+ -+/* { dg-do run { target i?86-*-* } } */ -+#include "ffitest.h" -+ -+static void -+closure_test_thiscall(ffi_cif* cif __UNUSED__, void* resp, void** args, -+ void* userdata) -+{ -+ *(ffi_arg*)resp = -+ (int)*(int *)args[0] + (int)(*(int *)args[1]) -+ + (int)(*(int *)args[2]) + (int)(*(int *)args[3]) -+ + (int)(intptr_t)userdata; -+ -+ printf("%d %d %d %d: %d\n", -+ (int)*(int *)args[0], (int)(*(int *)args[1]), -+ (int)(*(int *)args[2]), (int)(*(int *)args[3]), -+ (int)*(ffi_arg *)resp); -+ -+} -+ -+typedef int (__THISCALL__ *closure_test_type0)(int, int, int, int); -+ -+int main (void) -+{ -+ ffi_cif cif; -+ void *code; -+ ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); -+ ffi_type * cl_arg_types[17]; -+ int res; -+ -+ cl_arg_types[0] = &ffi_type_uint; -+ cl_arg_types[1] = &ffi_type_uint; -+ cl_arg_types[2] = &ffi_type_uint; -+ cl_arg_types[3] = &ffi_type_uint; -+ cl_arg_types[4] = NULL; -+ -+ /* Initialize the cif */ -+ CHECK(ffi_prep_cif(&cif, FFI_THISCALL, 4, -+ &ffi_type_sint, cl_arg_types) == FFI_OK); -+ -+ CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_thiscall, -+ (void *) 3 /* userdata */, code) == FFI_OK); -+ -+ res = (*(closure_test_type0)code)(0, 1, 2, 3); -+ /* { dg-output "0 1 2 3: 9" } */ -+ -+ printf("res: %d\n",res); -+ /* { dg-output "\nres: 9" } */ -+ -+ exit(0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_12byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_12byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_12byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_12byte.c -@@ -44,25 +44,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_12byte h_dbl = { 7, 4, 9 }; -+ struct cls_struct_12byte j_dbl = { 1, 5, 3 }; -+ struct cls_struct_12byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_12byte h_dbl = { 7, 4, 9 }; -- struct cls_struct_12byte j_dbl = { 1, 5, 3 }; -- struct cls_struct_12byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_sint; - cls_struct_fields[1] = &ffi_type_sint; - cls_struct_fields[2] = &ffi_type_sint; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_16byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_16byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_16byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_16byte.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_16byte h_dbl = { 7, 8.0, 9 }; -+ struct cls_struct_16byte j_dbl = { 1, 9.0, 3 }; -+ struct cls_struct_16byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_16byte h_dbl = { 7, 8.0, 9 }; -- struct cls_struct_16byte j_dbl = { 1, 9.0, 3 }; -- struct cls_struct_16byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_sint; - cls_struct_fields[1] = &ffi_type_double; - cls_struct_fields[2] = &ffi_type_sint; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_18byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_18byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_18byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_18byte.c -@@ -49,25 +49,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[3]; - ffi_type* cls_struct_fields[5]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[3]; - -+ struct cls_struct_18byte g_dbl = { 1.0, 127, 126, 3.0 }; -+ struct cls_struct_18byte f_dbl = { 4.0, 125, 124, 5.0 }; -+ struct cls_struct_18byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_18byte g_dbl = { 1.0, 127, 126, 3.0 }; -- struct cls_struct_18byte f_dbl = { 4.0, 125, 124, 5.0 }; -- struct cls_struct_18byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = &ffi_type_double; - cls_struct_fields[4] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_19byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_19byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_19byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_19byte.c -@@ -52,25 +52,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[3]; - ffi_type* cls_struct_fields[6]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[3]; - -+ struct cls_struct_19byte g_dbl = { 1.0, 127, 126, 3.0, 120 }; -+ struct cls_struct_19byte f_dbl = { 4.0, 125, 124, 5.0, 119 }; -+ struct cls_struct_19byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_19byte g_dbl = { 1.0, 127, 126, 3.0, 120 }; -- struct cls_struct_19byte f_dbl = { 4.0, 125, 124, 5.0, 119 }; -- struct cls_struct_19byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = &ffi_type_double; - cls_struct_fields[4] = &ffi_type_uchar; - cls_struct_fields[5] = NULL; - - dbl_arg_types[0] = &cls_struct_type; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_1_1byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_1_1byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_1_1byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_1_1byte.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[2]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_1_1byte g_dbl = { 12 }; -+ struct cls_struct_1_1byte f_dbl = { 178 }; -+ struct cls_struct_1_1byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_1_1byte g_dbl = { 12 }; -- struct cls_struct_1_1byte f_dbl = { 178 }; -- struct cls_struct_1_1byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; - - CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_20byte g_dbl = { 1.0, 2.0, 3 }; -+ struct cls_struct_20byte f_dbl = { 4.0, 5.0, 7 }; -+ struct cls_struct_20byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_20byte g_dbl = { 1.0, 2.0, 3 }; -- struct cls_struct_20byte f_dbl = { 4.0, 5.0, 7 }; -- struct cls_struct_20byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_double; - cls_struct_fields[2] = &ffi_type_sint; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte1.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte1.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte1.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte1.c -@@ -47,25 +47,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[3]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[3]; - -+ struct cls_struct_20byte g_dbl = { 1, 2.0, 3.0 }; -+ struct cls_struct_20byte f_dbl = { 4, 5.0, 7.0 }; -+ struct cls_struct_20byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_20byte g_dbl = { 1, 2.0, 3.0 }; -- struct cls_struct_20byte f_dbl = { 4, 5.0, 7.0 }; -- struct cls_struct_20byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_sint; - cls_struct_fields[1] = &ffi_type_double; - cls_struct_fields[2] = &ffi_type_double; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_24byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_24byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_24byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_24byte.c -@@ -56,27 +56,27 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[5]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -- cls_struct_type.size = 0; -- cls_struct_type.alignment = 0; -- cls_struct_type.type = FFI_TYPE_STRUCT; -- cls_struct_type.elements = cls_struct_fields; -- - struct cls_struct_24byte e_dbl = { 9.0, 2.0, 6, 5.0 }; - struct cls_struct_24byte f_dbl = { 1.0, 2.0, 3, 7.0 }; - struct cls_struct_24byte g_dbl = { 4.0, 5.0, 7, 9.0 }; - struct cls_struct_24byte h_dbl = { 8.0, 6.0, 1, 4.0 }; - struct cls_struct_24byte res_dbl; - -+ cls_struct_type.size = 0; -+ cls_struct_type.alignment = 0; -+ cls_struct_type.type = FFI_TYPE_STRUCT; -+ cls_struct_type.elements = cls_struct_fields; -+ - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_double; - cls_struct_fields[2] = &ffi_type_sint; - cls_struct_fields[3] = &ffi_type_float; - cls_struct_fields[4] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_2byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_2byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_2byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_2byte.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_2byte g_dbl = { 12, 127 }; -+ struct cls_struct_2byte f_dbl = { 1, 13 }; -+ struct cls_struct_2byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_2byte g_dbl = { 12, 127 }; -- struct cls_struct_2byte f_dbl = { 1, 13 }; -- struct cls_struct_2byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3_1byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3_1byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3_1byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3_1byte.c -@@ -49,25 +49,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_3_1byte g_dbl = { 12, 13, 14 }; -+ struct cls_struct_3_1byte f_dbl = { 178, 179, 180 }; -+ struct cls_struct_3_1byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_3_1byte g_dbl = { 12, 13, 14 }; -- struct cls_struct_3_1byte f_dbl = { 178, 179, 180 }; -- struct cls_struct_3_1byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte1.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte1.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte1.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte1.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_3byte g_dbl = { 12, 119 }; -+ struct cls_struct_3byte f_dbl = { 1, 15 }; -+ struct cls_struct_3byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_3byte g_dbl = { 12, 119 }; -- struct cls_struct_3byte f_dbl = { 1, 15 }; -- struct cls_struct_3byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_ushort; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte2.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte2.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte2.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte2.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_3byte_1 g_dbl = { 15, 125 }; -+ struct cls_struct_3byte_1 f_dbl = { 9, 19 }; -+ struct cls_struct_3byte_1 res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_3byte_1 g_dbl = { 15, 125 }; -- struct cls_struct_3byte_1 f_dbl = { 9, 19 }; -- struct cls_struct_3byte_1 res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_ushort; - cls_struct_fields[2] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_4_1byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_4_1byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_4_1byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_4_1byte.c -@@ -51,25 +51,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[5]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_4_1byte g_dbl = { 12, 13, 14, 15 }; -+ struct cls_struct_4_1byte f_dbl = { 178, 179, 180, 181 }; -+ struct cls_struct_4_1byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_4_1byte g_dbl = { 12, 13, 14, 15 }; -- struct cls_struct_4_1byte f_dbl = { 178, 179, 180, 181 }; -- struct cls_struct_4_1byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = &ffi_type_uchar; - cls_struct_fields[4] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_4byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_4byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_4byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_4byte.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_4byte g_dbl = { 127, 120 }; -+ struct cls_struct_4byte f_dbl = { 12, 128 }; -+ struct cls_struct_4byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_4byte g_dbl = { 127, 120 }; -- struct cls_struct_4byte f_dbl = { 12, 128 }; -- struct cls_struct_4byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_ushort; - cls_struct_fields[1] = &ffi_type_ushort; - cls_struct_fields[2] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_5_1_byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_5_1_byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_5_1_byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_5_1_byte.c -@@ -53,25 +53,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[6]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_5byte g_dbl = { 127, 120, 1, 3, 4 }; -+ struct cls_struct_5byte f_dbl = { 12, 128, 9, 3, 4 }; -+ struct cls_struct_5byte res_dbl = { 0, 0, 0, 0, 0 }; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_5byte g_dbl = { 127, 120, 1, 3, 4 }; -- struct cls_struct_5byte f_dbl = { 12, 128, 9, 3, 4 }; -- struct cls_struct_5byte res_dbl = { 0, 0, 0, 0, 0 }; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = &ffi_type_uchar; - cls_struct_fields[4] = &ffi_type_uchar; - cls_struct_fields[5] = NULL; - - dbl_arg_types[0] = &cls_struct_type; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_5byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_5byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_5byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_5byte.c -@@ -48,25 +48,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_5byte g_dbl = { 127, 120, 1 }; -+ struct cls_struct_5byte f_dbl = { 12, 128, 9 }; -+ struct cls_struct_5byte res_dbl = { 0, 0, 0 }; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_5byte g_dbl = { 127, 120, 1 }; -- struct cls_struct_5byte f_dbl = { 12, 128, 9 }; -- struct cls_struct_5byte res_dbl = { 0, 0, 0 }; -- - cls_struct_fields[0] = &ffi_type_ushort; - cls_struct_fields[1] = &ffi_type_ushort; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_64byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_64byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_64byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_64byte.c -@@ -61,27 +61,27 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[9]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -- cls_struct_type.size = 0; -- cls_struct_type.alignment = 0; -- cls_struct_type.type = FFI_TYPE_STRUCT; -- cls_struct_type.elements = cls_struct_fields; -- - struct cls_struct_64byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0 }; - struct cls_struct_64byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0 }; - struct cls_struct_64byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0 }; - struct cls_struct_64byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0 }; - struct cls_struct_64byte res_dbl; - -+ cls_struct_type.size = 0; -+ cls_struct_type.alignment = 0; -+ cls_struct_type.type = FFI_TYPE_STRUCT; -+ cls_struct_type.elements = cls_struct_fields; -+ - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_double; - cls_struct_fields[2] = &ffi_type_double; - cls_struct_fields[3] = &ffi_type_double; - cls_struct_fields[4] = &ffi_type_double; - cls_struct_fields[5] = &ffi_type_double; - cls_struct_fields[6] = &ffi_type_double; - cls_struct_fields[7] = &ffi_type_double; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_6_1_byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_6_1_byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_6_1_byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_6_1_byte.c -@@ -55,25 +55,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[7]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_6byte g_dbl = { 127, 120, 1, 3, 4, 5 }; -+ struct cls_struct_6byte f_dbl = { 12, 128, 9, 3, 4, 5 }; -+ struct cls_struct_6byte res_dbl = { 0, 0, 0, 0, 0, 0 }; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_6byte g_dbl = { 127, 120, 1, 3, 4, 5 }; -- struct cls_struct_6byte f_dbl = { 12, 128, 9, 3, 4, 5 }; -- struct cls_struct_6byte res_dbl = { 0, 0, 0, 0, 0, 0 }; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = &ffi_type_uchar; - cls_struct_fields[4] = &ffi_type_uchar; - cls_struct_fields[5] = &ffi_type_uchar; - cls_struct_fields[6] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_6byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_6byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_6byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_6byte.c -@@ -51,25 +51,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[5]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_6byte g_dbl = { 127, 120, 1, 128 }; -+ struct cls_struct_6byte f_dbl = { 12, 128, 9, 127 }; -+ struct cls_struct_6byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_6byte g_dbl = { 127, 120, 1, 128 }; -- struct cls_struct_6byte f_dbl = { 12, 128, 9, 127 }; -- struct cls_struct_6byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_ushort; - cls_struct_fields[1] = &ffi_type_ushort; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = &ffi_type_uchar; - cls_struct_fields[4] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_7_1_byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_7_1_byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_7_1_byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_7_1_byte.c -@@ -57,25 +57,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[8]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_7byte g_dbl = { 127, 120, 1, 3, 4, 5, 6 }; -+ struct cls_struct_7byte f_dbl = { 12, 128, 9, 3, 4, 5, 6 }; -+ struct cls_struct_7byte res_dbl = { 0, 0, 0, 0, 0, 0, 0 }; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_7byte g_dbl = { 127, 120, 1, 3, 4, 5, 6 }; -- struct cls_struct_7byte f_dbl = { 12, 128, 9, 3, 4, 5, 6 }; -- struct cls_struct_7byte res_dbl = { 0, 0, 0, 0, 0, 0, 0 }; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = &ffi_type_uchar; - cls_struct_fields[4] = &ffi_type_uchar; - cls_struct_fields[5] = &ffi_type_uchar; - cls_struct_fields[6] = &ffi_type_uchar; - cls_struct_fields[7] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_7byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_7byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_7byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_7byte.c -@@ -50,25 +50,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[5]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_7byte g_dbl = { 127, 120, 1, 254 }; -+ struct cls_struct_7byte f_dbl = { 12, 128, 9, 255 }; -+ struct cls_struct_7byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_7byte g_dbl = { 127, 120, 1, 254 }; -- struct cls_struct_7byte f_dbl = { 12, 128, 9, 255 }; -- struct cls_struct_7byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_ushort; - cls_struct_fields[1] = &ffi_type_ushort; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = &ffi_type_ushort; - cls_struct_fields[4] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_8byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_8byte.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_8byte.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_8byte.c -@@ -44,25 +44,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_8byte g_dbl = { 1, 2.0 }; -+ struct cls_struct_8byte f_dbl = { 4, 5.0 }; -+ struct cls_struct_8byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_8byte g_dbl = { 1, 2.0 }; -- struct cls_struct_8byte f_dbl = { 4, 5.0 }; -- struct cls_struct_8byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_sint; - cls_struct_fields[1] = &ffi_type_float; - cls_struct_fields[2] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte1.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte1.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte1.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte1.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[3]; - ffi_type* cls_struct_fields[3]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[3]; - -+ struct cls_struct_9byte h_dbl = { 7, 8.0}; -+ struct cls_struct_9byte j_dbl = { 1, 9.0}; -+ struct cls_struct_9byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_9byte h_dbl = { 7, 8.0}; -- struct cls_struct_9byte j_dbl = { 1, 9.0}; -- struct cls_struct_9byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_sint; - cls_struct_fields[1] = &ffi_type_double; - cls_struct_fields[2] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte2.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte2.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte2.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte2.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[3]; - ffi_type* cls_struct_fields[3]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[3]; - -+ struct cls_struct_9byte h_dbl = { 7.0, 8}; -+ struct cls_struct_9byte j_dbl = { 1.0, 9}; -+ struct cls_struct_9byte res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_9byte h_dbl = { 7.0, 8}; -- struct cls_struct_9byte j_dbl = { 1.0, 9}; -- struct cls_struct_9byte res_dbl; -- - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_sint; - cls_struct_fields[2] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_double.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_double.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_double.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_double.c -@@ -47,25 +47,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_align g_dbl = { 12, 4951, 127 }; -+ struct cls_struct_align f_dbl = { 1, 9320, 13 }; -+ struct cls_struct_align res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_align g_dbl = { 12, 4951, 127 }; -- struct cls_struct_align f_dbl = { 1, 9320, 13 }; -- struct cls_struct_align res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_double; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_float.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_float.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_float.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_float.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_align g_dbl = { 12, 4951, 127 }; -+ struct cls_struct_align f_dbl = { 1, 9320, 13 }; -+ struct cls_struct_align res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_align g_dbl = { 12, 4951, 127 }; -- struct cls_struct_align f_dbl = { 1, 9320, 13 }; -- struct cls_struct_align res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_float; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble.c -@@ -46,25 +46,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_align g_dbl = { 12, 4951, 127 }; -+ struct cls_struct_align f_dbl = { 1, 9320, 13 }; -+ struct cls_struct_align res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_align g_dbl = { 12, 4951, 127 }; -- struct cls_struct_align f_dbl = { 1, 9320, 13 }; -- struct cls_struct_align res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_longdouble; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split.c -@@ -1,17 +1,17 @@ - /* Area: ffi_call, closure_call - Purpose: Check structure alignment of long double. - Limitations: none. - PR: none. - Originator: 20031203 */ - - /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ - /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ --/* { dg-options -mlong-double-128 { target powerpc64*-*-* } } */ -+/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ - /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ - - #include "ffitest.h" - - typedef struct cls_struct_align { - long double a; - long double b; - long double c; -@@ -82,25 +82,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[3]; - ffi_type* cls_struct_fields[8]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[3]; - -+ struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 }; -+ struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 }; -+ struct cls_struct_align res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 }; -- struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 }; -- struct cls_struct_align res_dbl; -- - cls_struct_fields[0] = &ffi_type_longdouble; - cls_struct_fields[1] = &ffi_type_longdouble; - cls_struct_fields[2] = &ffi_type_longdouble; - cls_struct_fields[3] = &ffi_type_longdouble; - cls_struct_fields[4] = &ffi_type_longdouble; - cls_struct_fields[5] = &ffi_type_longdouble; - cls_struct_fields[6] = &ffi_type_longdouble; - cls_struct_fields[7] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c -@@ -2,17 +2,17 @@ - Purpose: Check structure alignment of long double. - Limitations: none. - PR: none. - Originator: Blake Chaffin 6/18/2007 - */ - - /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ - /* { dg-do run { xfail strongarm*-*-* } } */ --/* { dg-options -mlong-double-128 { target powerpc64*-*-* } } */ -+/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ - /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ - - #include "ffitest.h" - - typedef struct cls_struct_align { - long double a; - long double b; - long double c; -@@ -62,25 +62,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[3]; - ffi_type* cls_struct_fields[8]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[3]; - -+ struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 }; -+ struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 }; -+ struct cls_struct_align res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 }; -- struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 }; -- struct cls_struct_align res_dbl; -- - cls_struct_fields[0] = &ffi_type_longdouble; - cls_struct_fields[1] = &ffi_type_longdouble; - cls_struct_fields[2] = &ffi_type_longdouble; - cls_struct_fields[3] = &ffi_type_longdouble; - cls_struct_fields[4] = &ffi_type_longdouble; - cls_struct_fields[5] = &ffi_type_double; - cls_struct_fields[6] = &ffi_type_longdouble; - cls_struct_fields[7] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_pointer.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_pointer.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_pointer.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_pointer.c -@@ -49,25 +49,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_align g_dbl = { 12, (void *)4951, 127 }; -+ struct cls_struct_align f_dbl = { 1, (void *)9320, 13 }; -+ struct cls_struct_align res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_align g_dbl = { 12, (void *)4951, 127 }; -- struct cls_struct_align f_dbl = { 1, (void *)9320, 13 }; -- struct cls_struct_align res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_pointer; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint16.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint16.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint16.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint16.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_align g_dbl = { 12, 4951, 127 }; -+ struct cls_struct_align f_dbl = { 1, 9320, 13 }; -+ struct cls_struct_align res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_align g_dbl = { 12, 4951, 127 }; -- struct cls_struct_align f_dbl = { 1, 9320, 13 }; -- struct cls_struct_align res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_sshort; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint32.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint32.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint32.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint32.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_align g_dbl = { 12, 4951, 127 }; -+ struct cls_struct_align f_dbl = { 1, 9320, 13 }; -+ struct cls_struct_align res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_align g_dbl = { 12, 4951, 127 }; -- struct cls_struct_align f_dbl = { 1, 9320, 13 }; -- struct cls_struct_align res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_sint; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint64.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint64.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint64.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint64.c -@@ -46,25 +46,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_align g_dbl = { 12, 4951, 127 }; -+ struct cls_struct_align f_dbl = { 1, 9320, 13 }; -+ struct cls_struct_align res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_align g_dbl = { 12, 4951, 127 }; -- struct cls_struct_align f_dbl = { 1, 9320, 13 }; -- struct cls_struct_align res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_sint64; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint16.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint16.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint16.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint16.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_align g_dbl = { 12, 4951, 127 }; -+ struct cls_struct_align f_dbl = { 1, 9320, 13 }; -+ struct cls_struct_align res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_align g_dbl = { 12, 4951, 127 }; -- struct cls_struct_align f_dbl = { 1, 9320, 13 }; -- struct cls_struct_align res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_ushort; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint32.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint32.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint32.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint32.c -@@ -45,25 +45,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_align g_dbl = { 12, 4951, 127 }; -+ struct cls_struct_align f_dbl = { 1, 9320, 13 }; -+ struct cls_struct_align res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_align g_dbl = { 12, 4951, 127 }; -- struct cls_struct_align f_dbl = { 1, 9320, 13 }; -- struct cls_struct_align res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_uint; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint64.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint64.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint64.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint64.c -@@ -47,25 +47,25 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[4]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_align g_dbl = { 12, 4951, 127 }; -+ struct cls_struct_align f_dbl = { 1, 9320, 13 }; -+ struct cls_struct_align res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - -- struct cls_struct_align g_dbl = { 12, 4951, 127 }; -- struct cls_struct_align f_dbl = { 1, 9320, 13 }; -- struct cls_struct_align res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_uint64; - cls_struct_fields[2] = &ffi_type_uchar; - cls_struct_fields[3] = NULL; - - dbl_arg_types[0] = &cls_struct_type; - dbl_arg_types[1] = &cls_struct_type; - dbl_arg_types[2] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_dbls_struct.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_dbls_struct.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_dbls_struct.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_dbls_struct.c -@@ -32,29 +32,29 @@ int main(int argc __UNUSED__, char** arg - - void *code; - ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - ffi_type* cl_arg_types[1]; - - ffi_type ts1_type; - ffi_type* ts1_type_elements[4]; - -+ Dbls arg = { 1.0, 2.0 }; -+ - ts1_type.size = 0; - ts1_type.alignment = 0; - ts1_type.type = FFI_TYPE_STRUCT; - ts1_type.elements = ts1_type_elements; - - ts1_type_elements[0] = &ffi_type_double; - ts1_type_elements[1] = &ffi_type_double; - ts1_type_elements[2] = NULL; - - cl_arg_types[0] = &ts1_type; - -- Dbls arg = { 1.0, 2.0 }; -- - /* Initialize the cif */ - CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, - &ffi_type_void, cl_arg_types) == FFI_OK); - - CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_gn, NULL, code) == FFI_OK); - - ((void*(*)(Dbls))(code))(arg); - /* { dg-output "1.0 2.0\n" } */ -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c -@@ -1,17 +1,17 @@ - /* Area: ffi_call, closure_call - Purpose: Test doubles passed in variable argument lists. - Limitations: none. - PR: none. - Originator: Blake Chaffin 6/6/2007 */ - - /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ - /* { dg-output "" { xfail avr32*-*-* } } */ --/* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */ -+/* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */ - - #include "ffitest.h" - - static void - cls_double_va_fn(ffi_cif* cif __UNUSED__, void* resp, - void** args, void* userdata __UNUSED__) - { - char* format = *(char**)args[0]; -@@ -31,29 +31,31 @@ int main (void) - char* format = "%.1f\n"; - double doubleArg = 7; - ffi_arg res = 0; - - arg_types[0] = &ffi_type_pointer; - arg_types[1] = &ffi_type_double; - arg_types[2] = NULL; - -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_sint, -- arg_types) == FFI_OK); -+ /* This printf call is variadic */ -+ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_sint, -+ arg_types) == FFI_OK); - - args[0] = &format; - args[1] = &doubleArg; - args[2] = NULL; - - ffi_call(&cif, FFI_FN(printf), &res, args); -- // { dg-output "7.0" } -+ /* { dg-output "7.0" } */ - printf("res: %d\n", (int) res); -- // { dg-output "\nres: 4" } -+ /* { dg-output "\nres: 4" } */ - -- CHECK(ffi_prep_closure_loc(pcl, &cif, cls_double_va_fn, NULL, code) == FFI_OK); -+ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_double_va_fn, NULL, -+ code) == FFI_OK); - -- res = ((int(*)(char*, double))(code))(format, doubleArg); -- // { dg-output "\n7.0" } -+ res = ((int(*)(char*, ...))(code))(format, doubleArg); -+ /* { dg-output "\n7.0" } */ - printf("res: %d\n", (int) res); -- // { dg-output "\nres: 4" } -+ /* { dg-output "\nres: 4" } */ - - exit(0); - } -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble.c -@@ -1,17 +1,19 @@ - /* Area: ffi_call, closure_call - Purpose: Check long double arguments. - Limitations: none. - PR: none. - Originator: Blake Chaffin */ - - /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ --/* { dg-do run { xfail arm*-*-* strongarm*-*-* xscale*-*-* } } */ --/* { dg-options -mlong-double-128 { target powerpc64*-*-* } } */ -+/* This test is known to PASS on armv7l-unknown-linux-gnueabihf, so I have -+ remove the xfail for arm*-*-* below, until we know more. */ -+/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ -+/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ - /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */ - - #include "ffitest.h" - - long double cls_ldouble_fn( - long double a1, - long double a2, - long double a3, -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c -@@ -1,17 +1,17 @@ - /* Area: ffi_call, closure_call - Purpose: Test long doubles passed in variable argument lists. - Limitations: none. - PR: none. - Originator: Blake Chaffin 6/6/2007 */ - - /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ - /* { dg-output "" { xfail avr32*-*-* x86_64-*-mingw* } } */ --/* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */ -+/* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */ - - #include "ffitest.h" - - static void - cls_longdouble_va_fn(ffi_cif* cif __UNUSED__, void* resp, - void** args, void* userdata __UNUSED__) - { - char* format = *(char**)args[0]; -@@ -31,29 +31,31 @@ int main (void) - char* format = "%.1Lf\n"; - long double ldArg = 7; - ffi_arg res = 0; - - arg_types[0] = &ffi_type_pointer; - arg_types[1] = &ffi_type_longdouble; - arg_types[2] = NULL; - -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_sint, -- arg_types) == FFI_OK); -+ /* This printf call is variadic */ -+ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_sint, -+ arg_types) == FFI_OK); - - args[0] = &format; - args[1] = &ldArg; - args[2] = NULL; - - ffi_call(&cif, FFI_FN(printf), &res, args); -- // { dg-output "7.0" } -+ /* { dg-output "7.0" } */ - printf("res: %d\n", (int) res); -- // { dg-output "\nres: 4" } -+ /* { dg-output "\nres: 4" } */ - -- CHECK(ffi_prep_closure_loc(pcl, &cif, cls_longdouble_va_fn, NULL, code) == FFI_OK); -+ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_longdouble_va_fn, NULL, -+ code) == FFI_OK); - -- res = ((int(*)(char*, long double))(code))(format, ldArg); -- // { dg-output "\n7.0" } -+ res = ((int(*)(char*, ...))(code))(format, ldArg); -+ /* { dg-output "\n7.0" } */ - printf("res: %d\n", (int) res); -- // { dg-output "\nres: 4" } -+ /* { dg-output "\nres: 4" } */ - - exit(0); - } -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer.c -@@ -30,17 +30,17 @@ cls_pointer_gn(ffi_cif* cif __UNUSED__, - } - - int main (void) - { - ffi_cif cif; - void *code; - ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args[3]; --// ffi_type cls_pointer_type; -+ /* ffi_type cls_pointer_type; */ - ffi_type* arg_types[3]; - - /* cls_pointer_type.size = sizeof(void*); - cls_pointer_type.alignment = 0; - cls_pointer_type.type = FFI_TYPE_POINTER; - cls_pointer_type.elements = NULL;*/ - - void* arg1 = (void*)0x12345678; -@@ -60,15 +60,15 @@ int main (void) - - ffi_call(&cif, FFI_FN(cls_pointer_fn), &res, args); - /* { dg-output "0x12345678 0x89abcdef: 0x9be02467" } */ - printf("res: 0x%08x\n", (unsigned int) res); - /* { dg-output "\nres: 0x9be02467" } */ - - CHECK(ffi_prep_closure_loc(pcl, &cif, cls_pointer_gn, NULL, code) == FFI_OK); - -- res = (ffi_arg)((void*(*)(void*, void*))(code))(arg1, arg2); -+ res = (ffi_arg)(uintptr_t)((void*(*)(void*, void*))(code))(arg1, arg2); - /* { dg-output "\n0x12345678 0x89abcdef: 0x9be02467" } */ - printf("res: 0x%08x\n", (unsigned int) res); - /* { dg-output "\nres: 0x9be02467" } */ - - exit(0); - } -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer_stack.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer_stack.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer_stack.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer_stack.c -@@ -23,21 +23,22 @@ void* cls_pointer_fn2(void* a1, void* a2 - long double trample1 = (intptr_t)a1 + (intptr_t)a2; - char trample2 = ((char*)&a1)[0] + ((char*)&a2)[0]; - long double trample3 = (intptr_t)trample1 + (intptr_t)a1; - char trample4 = trample2 + ((char*)&a1)[1]; - long double trample5 = (intptr_t)trample3 + (intptr_t)a2; - char trample6 = trample4 + ((char*)&a2)[1]; - long double trample7 = (intptr_t)trample5 + (intptr_t)trample1; - char trample8 = trample6 + trample2; -+ void* result; - - dummyVar = dummy_func(trample1, trample2, trample3, trample4, - trample5, trample6, trample7, trample8); - -- void* result = (void*)((intptr_t)a1 + (intptr_t)a2); -+ result = (void*)((intptr_t)a1 + (intptr_t)a2); - - printf("0x%08x 0x%08x: 0x%08x\n", - (unsigned int)(uintptr_t) a1, - (unsigned int)(uintptr_t) a2, - (unsigned int)(uintptr_t) result); - - return result; - } -@@ -47,21 +48,22 @@ void* cls_pointer_fn1(void* a1, void* a2 - long double trample1 = (intptr_t)a1 + (intptr_t)a2; - char trample2 = ((char*)&a1)[0] + ((char*)&a2)[0]; - long double trample3 = (intptr_t)trample1 + (intptr_t)a1; - char trample4 = trample2 + ((char*)&a1)[1]; - long double trample5 = (intptr_t)trample3 + (intptr_t)a2; - char trample6 = trample4 + ((char*)&a2)[1]; - long double trample7 = (intptr_t)trample5 + (intptr_t)trample1; - char trample8 = trample6 + trample2; -+ void* result; - - dummyVar = dummy_func(trample1, trample2, trample3, trample4, - trample5, trample6, trample7, trample8); - -- void* result = (void*)((intptr_t)a1 + (intptr_t)a2); -+ result = (void*)((intptr_t)a1 + (intptr_t)a2); - - printf("0x%08x 0x%08x: 0x%08x\n", - (unsigned int)(intptr_t) a1, - (unsigned int)(intptr_t) a2, - (unsigned int)(intptr_t) result); - - result = cls_pointer_fn2(result, a1); - -@@ -91,17 +93,17 @@ cls_pointer_gn(ffi_cif* cif __UNUSED__, - } - - int main (void) - { - ffi_cif cif; - void *code; - ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args[3]; --// ffi_type cls_pointer_type; -+ /* ffi_type cls_pointer_type; */ - ffi_type* arg_types[3]; - - /* cls_pointer_type.size = sizeof(void*); - cls_pointer_type.alignment = 0; - cls_pointer_type.type = FFI_TYPE_POINTER; - cls_pointer_type.elements = NULL;*/ - - void* arg1 = (void*)0x01234567; -@@ -118,23 +120,23 @@ int main (void) - args[0] = &arg1; - args[1] = &arg2; - args[2] = NULL; - - printf("\n"); - ffi_call(&cif, FFI_FN(cls_pointer_fn1), &res, args); - - printf("res: 0x%08x\n", (unsigned int) res); -- // { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } -- // { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } -- // { dg-output "\nres: 0x8bf258bd" } -+ /* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */ -+ /* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */ -+ /* { dg-output "\nres: 0x8bf258bd" } */ - - CHECK(ffi_prep_closure_loc(pcl, &cif, cls_pointer_gn, NULL, code) == FFI_OK); - -- res = (ffi_arg)((void*(*)(void*, void*))(code))(arg1, arg2); -+ res = (ffi_arg)(uintptr_t)((void*(*)(void*, void*))(code))(arg1, arg2); - - printf("res: 0x%08x\n", (unsigned int) res); -- // { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } -- // { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } -- // { dg-output "\nres: 0x8bf258bd" } -+ /* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */ -+ /* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */ -+ /* { dg-output "\nres: 0x8bf258bd" } */ - - exit(0); - } -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_struct_va1.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_struct_va1.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_struct_va1.c -@@ -0,0 +1,114 @@ -+/* Area: ffi_call, closure_call -+ Purpose: Test doubles passed in variable argument lists. -+ Limitations: none. -+ PR: none. -+ Originator: Blake Chaffin 6/6/2007 */ -+ -+/* { dg-do run } */ -+/* { dg-output "" { xfail avr32*-*-* } } */ -+#include "ffitest.h" -+ -+struct small_tag -+{ -+ unsigned char a; -+ unsigned char b; -+}; -+ -+struct large_tag -+{ -+ unsigned a; -+ unsigned b; -+ unsigned c; -+ unsigned d; -+ unsigned e; -+}; -+ -+static void -+test_fn (ffi_cif* cif __UNUSED__, void* resp, -+ void** args, void* userdata __UNUSED__) -+{ -+ int n = *(int*)args[0]; -+ struct small_tag s1 = * (struct small_tag *) args[1]; -+ struct large_tag l1 = * (struct large_tag *) args[2]; -+ struct small_tag s2 = * (struct small_tag *) args[3]; -+ -+ printf ("%d %d %d %d %d %d %d %d %d %d\n", n, s1.a, s1.b, -+ l1.a, l1.b, l1.c, l1.d, l1.e, -+ s2.a, s2.b); -+ * (ffi_arg*) resp = 42; -+} -+ -+int -+main (void) -+{ -+ ffi_cif cif; -+ void *code; -+ ffi_closure *pcl = ffi_closure_alloc (sizeof (ffi_closure), &code); -+ ffi_type* arg_types[5]; -+ -+ ffi_arg res = 0; -+ -+ ffi_type s_type; -+ ffi_type *s_type_elements[3]; -+ -+ ffi_type l_type; -+ ffi_type *l_type_elements[6]; -+ -+ struct small_tag s1; -+ struct small_tag s2; -+ struct large_tag l1; -+ -+ int si; -+ -+ s_type.size = 0; -+ s_type.alignment = 0; -+ s_type.type = FFI_TYPE_STRUCT; -+ s_type.elements = s_type_elements; -+ -+ s_type_elements[0] = &ffi_type_uchar; -+ s_type_elements[1] = &ffi_type_uchar; -+ s_type_elements[2] = NULL; -+ -+ l_type.size = 0; -+ l_type.alignment = 0; -+ l_type.type = FFI_TYPE_STRUCT; -+ l_type.elements = l_type_elements; -+ -+ l_type_elements[0] = &ffi_type_uint; -+ l_type_elements[1] = &ffi_type_uint; -+ l_type_elements[2] = &ffi_type_uint; -+ l_type_elements[3] = &ffi_type_uint; -+ l_type_elements[4] = &ffi_type_uint; -+ l_type_elements[5] = NULL; -+ -+ arg_types[0] = &ffi_type_sint; -+ arg_types[1] = &s_type; -+ arg_types[2] = &l_type; -+ arg_types[3] = &s_type; -+ arg_types[4] = NULL; -+ -+ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &ffi_type_sint, -+ arg_types) == FFI_OK); -+ -+ si = 4; -+ s1.a = 5; -+ s1.b = 6; -+ -+ s2.a = 20; -+ s2.b = 21; -+ -+ l1.a = 10; -+ l1.b = 11; -+ l1.c = 12; -+ l1.d = 13; -+ l1.e = 14; -+ -+ CHECK(ffi_prep_closure_loc(pcl, &cif, test_fn, NULL, code) == FFI_OK); -+ -+ res = ((int (*)(int, ...))(code))(si, s1, l1, s2); -+ /* { dg-output "4 5 6 10 11 12 13 14 20 21" } */ -+ printf("res: %d\n", (int) res); -+ /* { dg-output "\nres: 42" } */ -+ -+ exit(0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_uchar_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_uchar_va.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_uchar_va.c -@@ -0,0 +1,44 @@ -+/* Area: closure_call -+ Purpose: Test anonymous unsigned char argument. -+ Limitations: none. -+ PR: none. -+ Originator: ARM Ltd. */ -+ -+/* { dg-do run } */ -+#include "ffitest.h" -+ -+typedef unsigned char T; -+ -+static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, -+ void* userdata __UNUSED__) -+ { -+ *(ffi_arg *)resp = *(T *)args[0]; -+ -+ printf("%d: %d %d\n", (int)(*(ffi_arg *)resp), *(T *)args[0], *(T *)args[1]); -+ } -+ -+typedef T (*cls_ret_T)(T, ...); -+ -+int main (void) -+{ -+ ffi_cif cif; -+ void *code; -+ ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); -+ ffi_type * cl_arg_types[3]; -+ T res; -+ -+ cl_arg_types[0] = &ffi_type_uchar; -+ cl_arg_types[1] = &ffi_type_uchar; -+ cl_arg_types[2] = NULL; -+ -+ /* Initialize the cif */ -+ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, -+ &ffi_type_uchar, cl_arg_types) == FFI_OK); -+ -+ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK); -+ res = ((((cls_ret_T)code)(67, 4))); -+ /* { dg-output "67: 67 4" } */ -+ printf("res: %d\n", res); -+ /* { dg-output "\nres: 67" } */ -+ exit(0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_uint_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_uint_va.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_uint_va.c -@@ -0,0 +1,45 @@ -+/* Area: closure_call -+ Purpose: Test anonymous unsigned int argument. -+ Limitations: none. -+ PR: none. -+ Originator: ARM Ltd. */ -+ -+/* { dg-do run } */ -+ -+#include "ffitest.h" -+ -+typedef unsigned int T; -+ -+static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, -+ void* userdata __UNUSED__) -+ { -+ *(ffi_arg *)resp = *(T *)args[0]; -+ -+ printf("%d: %d %d\n", (int)*(ffi_arg *)resp, *(T *)args[0], *(T *)args[1]); -+ } -+ -+typedef T (*cls_ret_T)(T, ...); -+ -+int main (void) -+{ -+ ffi_cif cif; -+ void *code; -+ ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); -+ ffi_type * cl_arg_types[3]; -+ T res; -+ -+ cl_arg_types[0] = &ffi_type_uint; -+ cl_arg_types[1] = &ffi_type_uint; -+ cl_arg_types[2] = NULL; -+ -+ /* Initialize the cif */ -+ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, -+ &ffi_type_uint, cl_arg_types) == FFI_OK); -+ -+ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK); -+ res = ((((cls_ret_T)code)(67, 4))); -+ /* { dg-output "67: 67 4" } */ -+ printf("res: %d\n", res); -+ /* { dg-output "\nres: 67" } */ -+ exit(0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulong_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulong_va.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulong_va.c -@@ -0,0 +1,45 @@ -+/* Area: closure_call -+ Purpose: Test anonymous unsigned long argument. -+ Limitations: none. -+ PR: none. -+ Originator: ARM Ltd. */ -+ -+/* { dg-do run } */ -+ -+#include "ffitest.h" -+ -+typedef unsigned long T; -+ -+static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, -+ void* userdata __UNUSED__) -+ { -+ *(T *)resp = *(T *)args[0]; -+ -+ printf("%ld: %ld %ld\n", *(T *)resp, *(T *)args[0], *(T *)args[1]); -+ } -+ -+typedef T (*cls_ret_T)(T, ...); -+ -+int main (void) -+{ -+ ffi_cif cif; -+ void *code; -+ ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); -+ ffi_type * cl_arg_types[3]; -+ T res; -+ -+ cl_arg_types[0] = &ffi_type_ulong; -+ cl_arg_types[1] = &ffi_type_ulong; -+ cl_arg_types[2] = NULL; -+ -+ /* Initialize the cif */ -+ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, -+ &ffi_type_ulong, cl_arg_types) == FFI_OK); -+ -+ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK); -+ res = ((((cls_ret_T)code)(67, 4))); -+ /* { dg-output "67: 67 4" } */ -+ printf("res: %ld\n", res); -+ /* { dg-output "\nres: 67" } */ -+ exit(0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c -@@ -6,17 +6,17 @@ - - /* { dg-do run } */ - /* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */ - #include "ffitest.h" - - static void cls_ret_ulonglong_fn(ffi_cif* cif __UNUSED__, void* resp, - void** args, void* userdata __UNUSED__) - { -- *(unsigned long long *)resp= *(unsigned long long *)args[0]; -+ *(unsigned long long *)resp= 0xfffffffffffffffLL ^ *(unsigned long long *)args[0]; - - printf("%" PRIuLL ": %" PRIuLL "\n",*(unsigned long long *)args[0], - *(unsigned long long *)(resp)); - } - typedef unsigned long long (*cls_ret_ulonglong)(unsigned long long); - - int main (void) - { -@@ -29,19 +29,19 @@ int main (void) - cl_arg_types[0] = &ffi_type_uint64; - cl_arg_types[1] = NULL; - - /* Initialize the cif */ - CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, - &ffi_type_uint64, cl_arg_types) == FFI_OK); - CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_ulonglong_fn, NULL, code) == FFI_OK); - res = (*((cls_ret_ulonglong)code))(214LL); -- /* { dg-output "214: 214" } */ -+ /* { dg-output "214: 1152921504606846761" } */ - printf("res: %" PRIdLL "\n", res); -- /* { dg-output "\nres: 214" } */ -+ /* { dg-output "\nres: 1152921504606846761" } */ - - res = (*((cls_ret_ulonglong)code))(9223372035854775808LL); -- /* { dg-output "\n9223372035854775808: 9223372035854775808" } */ -+ /* { dg-output "\n9223372035854775808: 8070450533247928831" } */ - printf("res: %" PRIdLL "\n", res); -- /* { dg-output "\nres: 9223372035854775808" } */ -+ /* { dg-output "\nres: 8070450533247928831" } */ - - exit(0); - } -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_ushort_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ushort_va.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ushort_va.c -@@ -0,0 +1,44 @@ -+/* Area: closure_call -+ Purpose: Test anonymous unsigned short argument. -+ Limitations: none. -+ PR: none. -+ Originator: ARM Ltd. */ -+ -+/* { dg-do run } */ -+#include "ffitest.h" -+ -+typedef unsigned short T; -+ -+static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, -+ void* userdata __UNUSED__) -+ { -+ *(ffi_arg *)resp = *(T *)args[0]; -+ -+ printf("%d: %d %d\n", (int)(*(ffi_arg *)resp), *(T *)args[0], *(T *)args[1]); -+ } -+ -+typedef T (*cls_ret_T)(T, ...); -+ -+int main (void) -+{ -+ ffi_cif cif; -+ void *code; -+ ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); -+ ffi_type * cl_arg_types[3]; -+ T res; -+ -+ cl_arg_types[0] = &ffi_type_ushort; -+ cl_arg_types[1] = &ffi_type_ushort; -+ cl_arg_types[2] = NULL; -+ -+ /* Initialize the cif */ -+ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, -+ &ffi_type_ushort, cl_arg_types) == FFI_OK); -+ -+ CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK); -+ res = ((((cls_ret_T)code)(67, 4))); -+ /* { dg-output "67: 67 4" } */ -+ printf("res: %d\n", res); -+ /* { dg-output "\nres: 67" } */ -+ exit(0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_abi.c b/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_abi.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_abi.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_abi.c -@@ -1,15 +1,16 @@ - /* Area: ffi_prep_cif, ffi_prep_closure - Purpose: Test error return for bad ABIs. - Limitations: none. - PR: none. - Originator: Blake Chaffin 6/6/2007 */ - --/* { dg-do run { xfail *-*-* } } */ -+/* { dg-do run } */ -+ - #include "ffitest.h" - - static void - dummy_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, - void** args __UNUSED__, void* userdata __UNUSED__) - {} - - int main (void) -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_typedef.c b/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_typedef.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_typedef.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_typedef.c -@@ -1,25 +1,26 @@ - /* Area: ffi_prep_cif - Purpose: Test error return for bad typedefs. - Limitations: none. - PR: none. - Originator: Blake Chaffin 6/6/2007 */ - --/* { dg-do run { xfail *-*-* } } */ -+/* { dg-do run } */ -+ - #include "ffitest.h" - - int main (void) - { - ffi_cif cif; - ffi_type* arg_types[1]; - -+ ffi_type badType = ffi_type_void; -+ - arg_types[0] = NULL; - -- ffi_type badType = ffi_type_void; -- - badType.size = 0; - - CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &badType, - arg_types) == FFI_BAD_TYPEDEF); - - exit(0); - } -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/ffitest.h b/js/src/ctypes/libffi/testsuite/libffi.call/ffitest.h ---- a/js/src/ctypes/libffi/testsuite/libffi.call/ffitest.h -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/ffitest.h -@@ -10,24 +10,35 @@ - #endif - - #if defined HAVE_INTTYPES_H - #include - #endif - - #define MAX_ARGS 256 - --#define CHECK(x) !(x) ? abort() : 0 -+#define CHECK(x) (!(x) ? (abort(), 1) : 0) - --/* Define __UNUSED__ that also other compilers than gcc can run the tests. */ -+/* Define macros so that compilers other than gcc can run the tests. */ - #undef __UNUSED__ - #if defined(__GNUC__) - #define __UNUSED__ __attribute__((__unused__)) -+#define __STDCALL__ __attribute__((stdcall)) -+#define __THISCALL__ __attribute__((thiscall)) -+#define __FASTCALL__ __attribute__((fastcall)) - #else - #define __UNUSED__ -+#define __STDCALL__ __stdcall -+#define __THISCALL__ __thiscall -+#define __FASTCALL__ __fastcall -+#endif -+ -+#ifndef ABI_NUM -+#define ABI_NUM FFI_DEFAULT_ABI -+#define ABI_ATTR - #endif - - /* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a - file open. */ - #ifdef HAVE_MMAP_ANON - # undef HAVE_MMAP_DEV_ZERO - - # include -@@ -62,68 +73,63 @@ - - /* Tru64 UNIX kludge. */ - #if defined(__alpha__) && defined(__osf__) - /* Tru64 UNIX V4.0 doesn't support %lld/%lld, but long is 64-bit. */ - #undef PRIdLL - #define PRIdLL "ld" - #undef PRIuLL - #define PRIuLL "lu" -+#define PRId8 "hd" -+#define PRIu8 "hu" - #define PRId64 "ld" - #define PRIu64 "lu" - #define PRIuPTR "lu" - #endif - - /* PA HP-UX kludge. */ - #if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR) - #define PRIuPTR "lu" - #endif - -+/* IRIX kludge. */ -+#if defined(__sgi) -+/* IRIX 6.5 provides all definitions, but only for C99 -+ compilations. */ -+#define PRId8 "hhd" -+#define PRIu8 "hhu" -+#if (_MIPS_SZLONG == 32) -+#define PRId64 "lld" -+#define PRIu64 "llu" -+#endif -+/* This doesn't match , which always has "lld" here, but the -+ arguments are uint64_t, int64_t, which are unsigned long, long for -+ 64-bit in . */ -+#if (_MIPS_SZLONG == 64) -+#define PRId64 "ld" -+#define PRIu64 "lu" -+#endif -+/* This doesn't match , which has "u" here, but the arguments -+ are uintptr_t, which is always unsigned long. */ -+#define PRIuPTR "lu" -+#endif -+ - /* Solaris < 10 kludge. */ - #if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR) - #if defined(__arch64__) || defined (__x86_64__) - #define PRIuPTR "lu" - #else - #define PRIuPTR "u" - #endif - #endif - --#ifdef USING_MMAP --static inline void * --allocate_mmap (size_t size) --{ -- void *page; --#if defined (HAVE_MMAP_DEV_ZERO) -- static int dev_zero_fd = -1; -+/* MSVC kludge. */ -+#if defined _MSC_VER -+#define PRIuPTR "lu" -+#define PRIu8 "u" -+#define PRId8 "d" -+#define PRIu64 "I64u" -+#define PRId64 "I64d" - #endif - --#ifdef HAVE_MMAP_DEV_ZERO -- if (dev_zero_fd == -1) -- { -- dev_zero_fd = open ("/dev/zero", O_RDONLY); -- if (dev_zero_fd == -1) -- { -- perror ("open /dev/zero: %m"); -- exit (1); -- } -- } -+#ifndef PRIuPTR -+#define PRIuPTR "u" - #endif -- -- --#ifdef HAVE_MMAP_ANON -- page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC, -- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); --#endif --#ifdef HAVE_MMAP_DEV_ZERO -- page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC, -- MAP_PRIVATE, dev_zero_fd, 0); --#endif -- -- if (page == (void *) MAP_FAILED) -- { -- perror ("virtual memory exhausted"); -- exit (1); -- } -- -- return page; --} -- --#endif -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/float_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/float_va.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/float_va.c -@@ -0,0 +1,107 @@ -+/* Area: fp and variadics -+ Purpose: check fp inputs and returns work on variadics, even the fixed params -+ Limitations: None -+ PR: none -+ Originator: 2011-01-25 -+ -+ Intended to stress the difference in ABI on ARM vfp -+*/ -+ -+/* { dg-do run } */ -+ -+#include -+ -+#include "ffitest.h" -+ -+/* prints out all the parameters, and returns the sum of them all. -+ * 'x' is the number of variadic parameters all of which are double in this test -+ */ -+double float_va_fn(unsigned int x, double y,...) -+{ -+ double total=0.0; -+ va_list ap; -+ unsigned int i; -+ -+ total+=(double)x; -+ total+=y; -+ -+ printf("%u: %.1f :", x, y); -+ -+ va_start(ap, y); -+ for(i=0;i - #include -+#include - --static float many(float f1, -- float f2, -- float f3, -- float f4, -- float f5, -- float f6, -- float f7, -- float f8, -- float f9, -- float f10, -- float f11, -- float f12, -- float f13) -+static float ABI_ATTR many(float f1, float f2, float f3, float f4, float f5, float f6, float f7, float f8, float f9, float f10, float f11, float f12, float f13) - { - #if 0 - printf("%f %f %f %f %f %f %f %f %f %f %f %f %f\n", - (double) f1, (double) f2, (double) f3, (double) f4, (double) f5, - (double) f6, (double) f7, (double) f8, (double) f9, (double) f10, - (double) f11, (double) f12, (double) f13); - #endif - -- return ((f1/f2+f3/f4+f5/f6+f7/f8+f9/f10+f11/f12) * f13); -+ return f1+f2+f3+f4+f5+f6+f7+f8+f9+f10+f11+f12+f13; - } - - int main (void) - { - ffi_cif cif; - ffi_type *args[13]; - void *values[13]; - float fa[13]; -@@ -45,25 +35,25 @@ int main (void) - for (i = 0; i < 13; i++) - { - args[i] = &ffi_type_float; - values[i] = &fa[i]; - fa[i] = (float) i; - } - - /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 13, -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 13, - &ffi_type_float, args) == FFI_OK); - - ffi_call(&cif, FFI_FN(many), &f, values); - - ff = many(fa[0], fa[1], - fa[2], fa[3], - fa[4], fa[5], - fa[6], fa[7], - fa[8], fa[9], - fa[10],fa[11],fa[12]); - -- if (f - ff < FLT_EPSILON) -+ if (fabs(f - ff) < FLT_EPSILON) - exit(0); - else - abort(); - } -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/many2.c b/js/src/ctypes/libffi/testsuite/libffi.call/many2.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/many2.c -@@ -0,0 +1,57 @@ -+/* Area: ffi_call -+ Purpose: Check uint8_t arguments. -+ Limitations: none. -+ PR: PR45677. -+ Originator: Dan Witte 20100916 */ -+ -+/* { dg-do run } */ -+ -+#include "ffitest.h" -+ -+#define NARGS 7 -+ -+typedef unsigned char u8; -+ -+#ifdef __GNUC__ -+__attribute__((noinline)) -+#endif -+uint8_t -+foo (uint8_t a, uint8_t b, uint8_t c, uint8_t d, -+ uint8_t e, uint8_t f, uint8_t g) -+{ -+ return a + b + c + d + e + f + g; -+} -+ -+uint8_t ABI_ATTR -+bar (uint8_t a, uint8_t b, uint8_t c, uint8_t d, -+ uint8_t e, uint8_t f, uint8_t g) -+{ -+ return foo (a, b, c, d, e, f, g); -+} -+ -+int -+main (void) -+{ -+ ffi_type *ffitypes[NARGS]; -+ int i; -+ ffi_cif cif; -+ ffi_arg result = 0; -+ uint8_t args[NARGS]; -+ void *argptrs[NARGS]; -+ -+ for (i = 0; i < NARGS; ++i) -+ ffitypes[i] = &ffi_type_uint8; -+ -+ CHECK (ffi_prep_cif (&cif, ABI_NUM, NARGS, -+ &ffi_type_uint8, ffitypes) == FFI_OK); -+ -+ for (i = 0; i < NARGS; ++i) -+ { -+ args[i] = i; -+ argptrs[i] = &args[i]; -+ } -+ ffi_call (&cif, FFI_FN (bar), &result, argptrs); -+ -+ CHECK (result == 21); -+ return 0; -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/many_win32.c b/js/src/ctypes/libffi/testsuite/libffi.call/many_win32.c -deleted file mode 100644 ---- a/js/src/ctypes/libffi/testsuite/libffi.call/many_win32.c -+++ /dev/null -@@ -1,63 +0,0 @@ --/* Area: ffi_call -- Purpose: Check stdcall many call on X86_WIN32 systems. -- Limitations: none. -- PR: none. -- Originator: From the original ffitest.c */ -- --/* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ -- --#include "ffitest.h" --#include -- --static float __attribute__((stdcall)) stdcall_many(float f1, -- float f2, -- float f3, -- float f4, -- float f5, -- float f6, -- float f7, -- float f8, -- float f9, -- float f10, -- float f11, -- float f12, -- float f13) --{ -- return ((f1/f2+f3/f4+f5/f6+f7/f8+f9/f10+f11/f12) * f13); --} -- --int main (void) --{ -- ffi_cif cif; -- ffi_type *args[13]; -- void *values[13]; -- float fa[13]; -- float f, ff; -- unsigned long ul; -- -- for (ul = 0; ul < 13; ul++) -- { -- args[ul] = &ffi_type_float; -- values[ul] = &fa[ul]; -- fa[ul] = (float) ul; -- } -- -- /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_STDCALL, 13, -- &ffi_type_float, args) == FFI_OK); -- -- ff = stdcall_many(fa[0], fa[1], -- fa[2], fa[3], -- fa[4], fa[5], -- fa[6], fa[7], -- fa[8], fa[9], -- fa[10], fa[11], fa[12]); -- -- ffi_call(&cif, FFI_FN(stdcall_many), &f, values); -- -- if (f - ff < FLT_EPSILON) -- printf("stdcall many arg tests ok!\n"); -- else -- CHECK(0); -- exit(0); --} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/negint.c b/js/src/ctypes/libffi/testsuite/libffi.call/negint.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/negint.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/negint.c -@@ -1,16 +1,15 @@ - /* Area: ffi_call - Purpose: Check that negative integers are passed correctly. - Limitations: none. - PR: none. - Originator: From the original ffitest.c */ - - /* { dg-do run } */ --/* { dg-options -O2 } */ - - #include "ffitest.h" - - static int checking(int a, short b, signed char c) - { - - return (a < 0 && b < 0 && c < 0); - } -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct.c -@@ -72,37 +72,37 @@ int main (void) - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[5]; - ffi_type* cls_struct_fields1[5]; - ffi_type* cls_struct_fields2[5]; - ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6}; -+ struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0}; -+ struct cls_struct_combined g_dbl = {{4.0, 5.0, 6}, -+ {3, 1.0, 8.0}}; -+ struct cls_struct_combined res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - - cls_struct_type1.size = 0; - cls_struct_type1.alignment = 0; - cls_struct_type1.type = FFI_TYPE_STRUCT; - cls_struct_type1.elements = cls_struct_fields1; - - cls_struct_type2.size = 0; - cls_struct_type2.alignment = 0; - cls_struct_type2.type = FFI_TYPE_STRUCT; - cls_struct_type2.elements = cls_struct_fields2; - -- struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6}; -- struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0}; -- struct cls_struct_combined g_dbl = {{4.0, 5.0, 6}, -- {3, 1.0, 8.0}}; -- struct cls_struct_combined res_dbl; -- - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_float; - cls_struct_fields[2] = &ffi_type_sint; - cls_struct_fields[3] = NULL; - - cls_struct_fields1[0] = &ffi_type_sint; - cls_struct_fields1[1] = &ffi_type_double; - cls_struct_fields1[2] = &ffi_type_float; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct1.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct1.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct1.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct1.c -@@ -76,38 +76,38 @@ int main (void) - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[5]; - ffi_type* cls_struct_fields1[5]; - ffi_type* cls_struct_fields2[5]; - ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6}; -+ struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0}; -+ struct cls_struct_combined g_dbl = {{4.0, 5.0, 6}, -+ {3, 1.0, 8.0}}; -+ struct cls_struct_16byte1 h_dbl = { 3.0, 2.0, 4}; -+ struct cls_struct_combined res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - - cls_struct_type1.size = 0; - cls_struct_type1.alignment = 0; - cls_struct_type1.type = FFI_TYPE_STRUCT; - cls_struct_type1.elements = cls_struct_fields1; - - cls_struct_type2.size = 0; - cls_struct_type2.alignment = 0; - cls_struct_type2.type = FFI_TYPE_STRUCT; - cls_struct_type2.elements = cls_struct_fields2; - -- struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6}; -- struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0}; -- struct cls_struct_combined g_dbl = {{4.0, 5.0, 6}, -- {3, 1.0, 8.0}}; -- struct cls_struct_16byte1 h_dbl = { 3.0, 2.0, 4}; -- struct cls_struct_combined res_dbl; -- - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_float; - cls_struct_fields[2] = &ffi_type_sint; - cls_struct_fields[3] = NULL; - - cls_struct_fields1[0] = &ffi_type_sint; - cls_struct_fields1[1] = &ffi_type_double; - cls_struct_fields1[2] = &ffi_type_float; -@@ -151,11 +151,11 @@ int main (void) - (code))(e_dbl, f_dbl, g_dbl, h_dbl); - /* { dg-output "\n9 2 6 1 2 3 4 5 6 3 1 8 3 2 4: 15 10 13 10 12 13" } */ - CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a)); - CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b)); - CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c)); - CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii)); - CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); - CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); -- // CHECK( 1 == 0); -+ /* CHECK( 1 == 0); */ - exit(0); - } -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct10.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct10.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct10.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct10.c -@@ -62,37 +62,37 @@ int main (void) - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[4]; - ffi_type* cls_struct_fields[3]; - ffi_type* cls_struct_fields1[4]; - ffi_type* cls_struct_fields2[3]; - ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; - ffi_type* dbl_arg_types[4]; - -+ struct A e_dbl = { 1LL, 7}; -+ struct B f_dbl = { 99, {12LL , 127}, 255}; -+ struct C g_dbl = { 2LL, 9}; -+ -+ struct B res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - - cls_struct_type1.size = 0; - cls_struct_type1.alignment = 0; - cls_struct_type1.type = FFI_TYPE_STRUCT; - cls_struct_type1.elements = cls_struct_fields1; - - cls_struct_type2.size = 0; - cls_struct_type2.alignment = 0; - cls_struct_type2.type = FFI_TYPE_STRUCT; - cls_struct_type2.elements = cls_struct_fields2; - -- struct A e_dbl = { 1LL, 7}; -- struct B f_dbl = { 99, {12LL , 127}, 255}; -- struct C g_dbl = { 2LL, 9}; -- -- struct B res_dbl; -- - cls_struct_fields[0] = &ffi_type_uint64; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = NULL; - - cls_struct_fields1[0] = &ffi_type_uchar; - cls_struct_fields1[1] = &cls_struct_type; - cls_struct_fields1[2] = &ffi_type_uint; - cls_struct_fields1[3] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct11.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct11.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct11.c -@@ -0,0 +1,121 @@ -+/* Area: ffi_call, closure_call -+ Purpose: Check parameter passing with nested structs -+ of a single type. This tests the special cases -+ for homogeneous floating-point aggregates in the -+ AArch64 PCS. -+ Limitations: none. -+ PR: none. -+ Originator: ARM Ltd. */ -+ -+/* { dg-do run } */ -+#include "ffitest.h" -+ -+typedef struct A { -+ float a_x; -+ float a_y; -+} A; -+ -+typedef struct B { -+ float b_x; -+ float b_y; -+} B; -+ -+typedef struct C { -+ A a; -+ B b; -+} C; -+ -+static C C_fn (int x, int y, int z, C source, int i, int j, int k) -+{ -+ C result; -+ result.a.a_x = source.a.a_x; -+ result.a.a_y = source.a.a_y; -+ result.b.b_x = source.b.b_x; -+ result.b.b_y = source.b.b_y; -+ -+ printf ("%d, %d, %d, %d, %d, %d\n", x, y, z, i, j, k); -+ -+ printf ("%.1f, %.1f, %.1f, %.1f, " -+ "%.1f, %.1f, %.1f, %.1f\n", -+ source.a.a_x, source.a.a_y, -+ source.b.b_x, source.b.b_y, -+ result.a.a_x, result.a.a_y, -+ result.b.b_x, result.b.b_y); -+ -+ return result; -+} -+ -+int main (void) -+{ -+ ffi_cif cif; -+ -+ ffi_type* struct_fields_source_a[3]; -+ ffi_type* struct_fields_source_b[3]; -+ ffi_type* struct_fields_source_c[3]; -+ ffi_type* arg_types[8]; -+ -+ ffi_type struct_type_a, struct_type_b, struct_type_c; -+ -+ struct A source_fld_a = {1.0, 2.0}; -+ struct B source_fld_b = {4.0, 8.0}; -+ int k = 1; -+ -+ struct C result; -+ struct C source = {source_fld_a, source_fld_b}; -+ -+ struct_type_a.size = 0; -+ struct_type_a.alignment = 0; -+ struct_type_a.type = FFI_TYPE_STRUCT; -+ struct_type_a.elements = struct_fields_source_a; -+ -+ struct_type_b.size = 0; -+ struct_type_b.alignment = 0; -+ struct_type_b.type = FFI_TYPE_STRUCT; -+ struct_type_b.elements = struct_fields_source_b; -+ -+ struct_type_c.size = 0; -+ struct_type_c.alignment = 0; -+ struct_type_c.type = FFI_TYPE_STRUCT; -+ struct_type_c.elements = struct_fields_source_c; -+ -+ struct_fields_source_a[0] = &ffi_type_float; -+ struct_fields_source_a[1] = &ffi_type_float; -+ struct_fields_source_a[2] = NULL; -+ -+ struct_fields_source_b[0] = &ffi_type_float; -+ struct_fields_source_b[1] = &ffi_type_float; -+ struct_fields_source_b[2] = NULL; -+ -+ struct_fields_source_c[0] = &struct_type_a; -+ struct_fields_source_c[1] = &struct_type_b; -+ struct_fields_source_c[2] = NULL; -+ -+ arg_types[0] = &ffi_type_sint32; -+ arg_types[1] = &ffi_type_sint32; -+ arg_types[2] = &ffi_type_sint32; -+ arg_types[3] = &struct_type_c; -+ arg_types[4] = &ffi_type_sint32; -+ arg_types[5] = &ffi_type_sint32; -+ arg_types[6] = &ffi_type_sint32; -+ arg_types[7] = NULL; -+ -+ void *args[7]; -+ args[0] = &k; -+ args[1] = &k; -+ args[2] = &k; -+ args[3] = &source; -+ args[4] = &k; -+ args[5] = &k; -+ args[6] = &k; -+ CHECK (ffi_prep_cif (&cif, FFI_DEFAULT_ABI, 7, &struct_type_c, -+ arg_types) == FFI_OK); -+ -+ ffi_call (&cif, FFI_FN (C_fn), &result, args); -+ /* { dg-output "1, 1, 1, 1, 1, 1\n" } */ -+ /* { dg-output "1.0, 2.0, 4.0, 8.0, 1.0, 2.0, 4.0, 8.0" } */ -+ CHECK (result.a.a_x == source.a.a_x); -+ CHECK (result.a.a_y == source.a.a_y); -+ CHECK (result.b.b_x == source.b.b_x); -+ CHECK (result.b.b_y == source.b.b_y); -+ exit (0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct2.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct2.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct2.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct2.c -@@ -52,31 +52,31 @@ int main (void) - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[3]; - ffi_type* cls_struct_fields[3]; - ffi_type* cls_struct_fields1[3]; - ffi_type cls_struct_type, cls_struct_type1; - ffi_type* dbl_arg_types[3]; - -+ struct A e_dbl = { 1, 7}; -+ struct B f_dbl = {{12 , 127}, 99}; -+ -+ struct B res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - - cls_struct_type1.size = 0; - cls_struct_type1.alignment = 0; - cls_struct_type1.type = FFI_TYPE_STRUCT; - cls_struct_type1.elements = cls_struct_fields1; - -- struct A e_dbl = { 1, 7}; -- struct B f_dbl = {{12 , 127}, 99}; -- -- struct B res_dbl; -- - cls_struct_fields[0] = &ffi_type_ulong; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = NULL; - - cls_struct_fields1[0] = &cls_struct_type; - cls_struct_fields1[1] = &ffi_type_uchar; - cls_struct_fields1[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct3.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct3.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct3.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct3.c -@@ -53,31 +53,31 @@ int main (void) - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[3]; - ffi_type* cls_struct_fields[3]; - ffi_type* cls_struct_fields1[3]; - ffi_type cls_struct_type, cls_struct_type1; - ffi_type* dbl_arg_types[3]; - -+ struct A e_dbl = { 1LL, 7}; -+ struct B f_dbl = {{12LL , 127}, 99}; -+ -+ struct B res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - - cls_struct_type1.size = 0; - cls_struct_type1.alignment = 0; - cls_struct_type1.type = FFI_TYPE_STRUCT; - cls_struct_type1.elements = cls_struct_fields1; - -- struct A e_dbl = { 1LL, 7}; -- struct B f_dbl = {{12LL , 127}, 99}; -- -- struct B res_dbl; -- - cls_struct_fields[0] = &ffi_type_uint64; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = NULL; - - cls_struct_fields1[0] = &cls_struct_type; - cls_struct_fields1[1] = &ffi_type_uchar; - cls_struct_fields1[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct4.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct4.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct4.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct4.c -@@ -53,31 +53,31 @@ int main (void) - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[3]; - ffi_type* cls_struct_fields[3]; - ffi_type* cls_struct_fields1[3]; - ffi_type cls_struct_type, cls_struct_type1; - ffi_type* dbl_arg_types[3]; - -+ struct A e_dbl = { 1.0, 7}; -+ struct B f_dbl = {{12.0 , 127}, 99}; -+ -+ struct B res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - - cls_struct_type1.size = 0; - cls_struct_type1.alignment = 0; - cls_struct_type1.type = FFI_TYPE_STRUCT; - cls_struct_type1.elements = cls_struct_fields1; - -- struct A e_dbl = { 1.0, 7}; -- struct B f_dbl = {{12.0 , 127}, 99}; -- -- struct B res_dbl; -- - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = NULL; - - cls_struct_fields1[0] = &cls_struct_type; - cls_struct_fields1[1] = &ffi_type_uchar; - cls_struct_fields1[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct5.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct5.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct5.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct5.c -@@ -53,31 +53,31 @@ int main (void) - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[3]; - ffi_type* cls_struct_fields[3]; - ffi_type* cls_struct_fields1[3]; - ffi_type cls_struct_type, cls_struct_type1; - ffi_type* dbl_arg_types[3]; - -+ struct A e_dbl = { 1.0, 7}; -+ struct B f_dbl = {{12.0 , 127}, 99}; -+ -+ struct B res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - - cls_struct_type1.size = 0; - cls_struct_type1.alignment = 0; - cls_struct_type1.type = FFI_TYPE_STRUCT; - cls_struct_type1.elements = cls_struct_fields1; - -- struct A e_dbl = { 1.0, 7}; -- struct B f_dbl = {{12.0 , 127}, 99}; -- -- struct B res_dbl; -- - cls_struct_fields[0] = &ffi_type_longdouble; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = NULL; - - cls_struct_fields1[0] = &cls_struct_type; - cls_struct_fields1[1] = &ffi_type_uchar; - cls_struct_fields1[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct6.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct6.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct6.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct6.c -@@ -61,37 +61,37 @@ int main (void) - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[4]; - ffi_type* cls_struct_fields[3]; - ffi_type* cls_struct_fields1[3]; - ffi_type* cls_struct_fields2[3]; - ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; - ffi_type* dbl_arg_types[4]; - -+ struct A e_dbl = { 1.0, 7}; -+ struct B f_dbl = {{12.0 , 127}, 99}; -+ struct C g_dbl = { 2, 9}; -+ -+ struct B res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - - cls_struct_type1.size = 0; - cls_struct_type1.alignment = 0; - cls_struct_type1.type = FFI_TYPE_STRUCT; - cls_struct_type1.elements = cls_struct_fields1; - - cls_struct_type2.size = 0; - cls_struct_type2.alignment = 0; - cls_struct_type2.type = FFI_TYPE_STRUCT; - cls_struct_type2.elements = cls_struct_fields2; - -- struct A e_dbl = { 1.0, 7}; -- struct B f_dbl = {{12.0 , 127}, 99}; -- struct C g_dbl = { 2, 9}; -- -- struct B res_dbl; -- - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = NULL; - - cls_struct_fields1[0] = &cls_struct_type; - cls_struct_fields1[1] = &ffi_type_uchar; - cls_struct_fields1[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct7.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct7.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct7.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct7.c -@@ -53,31 +53,31 @@ int main (void) - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[3]; - ffi_type* cls_struct_fields[3]; - ffi_type* cls_struct_fields1[3]; - ffi_type cls_struct_type, cls_struct_type1; - ffi_type* dbl_arg_types[3]; - -+ struct A e_dbl = { 1LL, 7}; -+ struct B f_dbl = {{12.0 , 127}, 99}; -+ -+ struct B res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - - cls_struct_type1.size = 0; - cls_struct_type1.alignment = 0; - cls_struct_type1.type = FFI_TYPE_STRUCT; - cls_struct_type1.elements = cls_struct_fields1; - -- struct A e_dbl = { 1LL, 7}; -- struct B f_dbl = {{12.0 , 127}, 99}; -- -- struct B res_dbl; -- - cls_struct_fields[0] = &ffi_type_uint64; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = NULL; - - cls_struct_fields1[0] = &cls_struct_type; - cls_struct_fields1[1] = &ffi_type_uchar; - cls_struct_fields1[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct8.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct8.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct8.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct8.c -@@ -61,37 +61,37 @@ int main (void) - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[4]; - ffi_type* cls_struct_fields[3]; - ffi_type* cls_struct_fields1[3]; - ffi_type* cls_struct_fields2[3]; - ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; - ffi_type* dbl_arg_types[4]; - -+ struct A e_dbl = { 1LL, 7}; -+ struct B f_dbl = {{12LL , 127}, 99}; -+ struct C g_dbl = { 2LL, 9}; -+ -+ struct B res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - - cls_struct_type1.size = 0; - cls_struct_type1.alignment = 0; - cls_struct_type1.type = FFI_TYPE_STRUCT; - cls_struct_type1.elements = cls_struct_fields1; - - cls_struct_type2.size = 0; - cls_struct_type2.alignment = 0; - cls_struct_type2.type = FFI_TYPE_STRUCT; - cls_struct_type2.elements = cls_struct_fields2; - -- struct A e_dbl = { 1LL, 7}; -- struct B f_dbl = {{12LL , 127}, 99}; -- struct C g_dbl = { 2LL, 9}; -- -- struct B res_dbl; -- - cls_struct_fields[0] = &ffi_type_uint64; - cls_struct_fields[1] = &ffi_type_uchar; - cls_struct_fields[2] = NULL; - - cls_struct_fields1[0] = &cls_struct_type; - cls_struct_fields1[1] = &ffi_type_uchar; - cls_struct_fields1[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct9.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct9.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct9.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct9.c -@@ -61,37 +61,37 @@ int main (void) - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[4]; - ffi_type* cls_struct_fields[3]; - ffi_type* cls_struct_fields1[3]; - ffi_type* cls_struct_fields2[3]; - ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; - ffi_type* dbl_arg_types[4]; - -+ struct A e_dbl = { 1, 7LL}; -+ struct B f_dbl = {{12.0 , 127}, 99}; -+ struct C g_dbl = { 2, 9}; -+ -+ struct B res_dbl; -+ - cls_struct_type.size = 0; - cls_struct_type.alignment = 0; - cls_struct_type.type = FFI_TYPE_STRUCT; - cls_struct_type.elements = cls_struct_fields; - - cls_struct_type1.size = 0; - cls_struct_type1.alignment = 0; - cls_struct_type1.type = FFI_TYPE_STRUCT; - cls_struct_type1.elements = cls_struct_fields1; - - cls_struct_type2.size = 0; - cls_struct_type2.alignment = 0; - cls_struct_type2.type = FFI_TYPE_STRUCT; - cls_struct_type2.elements = cls_struct_fields2; - -- struct A e_dbl = { 1, 7LL}; -- struct B f_dbl = {{12.0 , 127}, 99}; -- struct C g_dbl = { 2, 9}; -- -- struct B res_dbl; -- - cls_struct_fields[0] = &ffi_type_uchar; - cls_struct_fields[1] = &ffi_type_uint64; - cls_struct_fields[2] = NULL; - - cls_struct_fields1[0] = &cls_struct_type; - cls_struct_fields1[1] = &ffi_type_uchar; - cls_struct_fields1[2] = NULL; - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/return_dbl.c b/js/src/ctypes/libffi/testsuite/libffi.call/return_dbl.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/return_dbl.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/return_dbl.c -@@ -4,16 +4,17 @@ - PR: none. - Originator: 20050212 */ - - /* { dg-do run } */ - #include "ffitest.h" - - static double return_dbl(double dbl) - { -+ printf ("%f\n", dbl); - return 2 * dbl; - } - int main (void) - { - ffi_cif cif; - ffi_type *args[MAX_ARGS]; - void *values[MAX_ARGS]; - double dbl, rdbl; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/return_sc.c b/js/src/ctypes/libffi/testsuite/libffi.call/return_sc.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/return_sc.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/return_sc.c -@@ -25,12 +25,12 @@ int main (void) - /* Initialize the cif */ - CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, - &ffi_type_schar, args) == FFI_OK); - - for (sc = (signed char) -127; - sc < (signed char) 127; sc++) - { - ffi_call(&cif, FFI_FN(return_sc), &rint, values); -- CHECK(rint == (ffi_arg) sc); -+ CHECK((signed char)rint == sc); - } - exit(0); - } -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/return_uc.c b/js/src/ctypes/libffi/testsuite/libffi.call/return_uc.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/return_uc.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/return_uc.c -@@ -27,12 +27,12 @@ int main (void) - /* Initialize the cif */ - CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, - &ffi_type_uchar, args) == FFI_OK); - - for (uc = (unsigned char) '\x00'; - uc < (unsigned char) '\xff'; uc++) - { - ffi_call(&cif, FFI_FN(return_uc), &rint, values); -- CHECK(rint == (signed int) uc); -+ CHECK((unsigned char)rint == uc); - } - exit(0); - } -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/stret_large.c b/js/src/ctypes/libffi/testsuite/libffi.call/stret_large.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/stret_large.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/stret_large.c -@@ -4,18 +4,18 @@ - the gp and fp register count on Darwin/AIX/ppc64. - Limitations: none. - PR: none. - Originator: Blake Chaffin 6/21/2007 */ - - /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ - #include "ffitest.h" - --// 13 FPRs: 104 bytes --// 14 FPRs: 112 bytes -+/* 13 FPRs: 104 bytes */ -+/* 14 FPRs: 112 bytes */ - - typedef struct struct_108byte { - double a; - double b; - double c; - double d; - double e; - double f; -@@ -77,27 +77,27 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[15]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -- cls_struct_type.size = 0; -- cls_struct_type.alignment = 0; -- cls_struct_type.type = FFI_TYPE_STRUCT; -- cls_struct_type.elements = cls_struct_fields; -- - struct_108byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 1.0, 2.0, 3.0, 7.0, 2.0, 7 }; - struct_108byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0, 5.0, 7.0, 9.0, 1.0, 4 }; - struct_108byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 8.0, 6.0, 1.0, 4.0, 0.0, 3 }; - struct_108byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 9.0, 2.0, 6.0, 5.0, 3.0, 2 }; - struct_108byte res_dbl; - -+ cls_struct_type.size = 0; -+ cls_struct_type.alignment = 0; -+ cls_struct_type.type = FFI_TYPE_STRUCT; -+ cls_struct_type.elements = cls_struct_fields; -+ - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_double; - cls_struct_fields[2] = &ffi_type_double; - cls_struct_fields[3] = &ffi_type_double; - cls_struct_fields[4] = &ffi_type_double; - cls_struct_fields[5] = &ffi_type_double; - cls_struct_fields[6] = &ffi_type_double; - cls_struct_fields[7] = &ffi_type_double; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/stret_large2.c b/js/src/ctypes/libffi/testsuite/libffi.call/stret_large2.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/stret_large2.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/stret_large2.c -@@ -4,18 +4,18 @@ - the gp and fp register count on Darwin/AIX/ppc64. - Limitations: none. - PR: none. - Originator: Blake Chaffin 6/21/2007 */ - - /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ - #include "ffitest.h" - --// 13 FPRs: 104 bytes --// 14 FPRs: 112 bytes -+/* 13 FPRs: 104 bytes */ -+/* 14 FPRs: 112 bytes */ - - typedef struct struct_116byte { - double a; - double b; - double c; - double d; - double e; - double f; -@@ -79,27 +79,27 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[16]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -- cls_struct_type.size = 0; -- cls_struct_type.alignment = 0; -- cls_struct_type.type = FFI_TYPE_STRUCT; -- cls_struct_type.elements = cls_struct_fields; -- - struct_116byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 7 }; - struct_116byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0, 5.0, 7.0, 9.0, 1.0, 6.0, 4 }; - struct_116byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 8.0, 6.0, 1.0, 4.0, 0.0, 7.0, 3 }; - struct_116byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 9.0, 2.0, 6.0, 5.0, 3.0, 8.0, 2 }; - struct_116byte res_dbl; - -+ cls_struct_type.size = 0; -+ cls_struct_type.alignment = 0; -+ cls_struct_type.type = FFI_TYPE_STRUCT; -+ cls_struct_type.elements = cls_struct_fields; -+ - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_double; - cls_struct_fields[2] = &ffi_type_double; - cls_struct_fields[3] = &ffi_type_double; - cls_struct_fields[4] = &ffi_type_double; - cls_struct_fields[5] = &ffi_type_double; - cls_struct_fields[6] = &ffi_type_double; - cls_struct_fields[7] = &ffi_type_double; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium.c b/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium.c -@@ -63,27 +63,27 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[10]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -- cls_struct_type.size = 0; -- cls_struct_type.alignment = 0; -- cls_struct_type.type = FFI_TYPE_STRUCT; -- cls_struct_type.elements = cls_struct_fields; -- - struct_72byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 7.0 }; - struct_72byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0 }; - struct_72byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 3.0 }; - struct_72byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 2.0 }; - struct_72byte res_dbl; - -+ cls_struct_type.size = 0; -+ cls_struct_type.alignment = 0; -+ cls_struct_type.type = FFI_TYPE_STRUCT; -+ cls_struct_type.elements = cls_struct_fields; -+ - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_double; - cls_struct_fields[2] = &ffi_type_double; - cls_struct_fields[3] = &ffi_type_double; - cls_struct_fields[4] = &ffi_type_double; - cls_struct_fields[5] = &ffi_type_double; - cls_struct_fields[6] = &ffi_type_double; - cls_struct_fields[7] = &ffi_type_double; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium2.c b/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium2.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium2.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium2.c -@@ -64,27 +64,27 @@ int main (void) - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - void* args_dbl[5]; - ffi_type* cls_struct_fields[10]; - ffi_type cls_struct_type; - ffi_type* dbl_arg_types[5]; - -- cls_struct_type.size = 0; -- cls_struct_type.alignment = 0; -- cls_struct_type.type = FFI_TYPE_STRUCT; -- cls_struct_type.elements = cls_struct_fields; -- - struct_72byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 7 }; - struct_72byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4 }; - struct_72byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 3 }; - struct_72byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 2 }; - struct_72byte res_dbl; - -+ cls_struct_type.size = 0; -+ cls_struct_type.alignment = 0; -+ cls_struct_type.type = FFI_TYPE_STRUCT; -+ cls_struct_type.elements = cls_struct_fields; -+ - cls_struct_fields[0] = &ffi_type_double; - cls_struct_fields[1] = &ffi_type_double; - cls_struct_fields[2] = &ffi_type_double; - cls_struct_fields[3] = &ffi_type_double; - cls_struct_fields[4] = &ffi_type_double; - cls_struct_fields[5] = &ffi_type_double; - cls_struct_fields[6] = &ffi_type_double; - cls_struct_fields[7] = &ffi_type_double; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/strlen.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/strlen.c -@@ -2,34 +2,34 @@ - Purpose: Check strlen function call. - Limitations: none. - PR: none. - Originator: From the original ffitest.c */ - - /* { dg-do run } */ - #include "ffitest.h" - --static size_t my_strlen(char *s) -+static size_t ABI_ATTR my_strlen(char *s) - { - return (strlen(s)); - } - - int main (void) - { - ffi_cif cif; - ffi_type *args[MAX_ARGS]; - void *values[MAX_ARGS]; - ffi_arg rint; - char *s; - - args[0] = &ffi_type_pointer; - values[0] = (void*) &s; - - /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, - &ffi_type_sint, args) == FFI_OK); - - s = "a"; - ffi_call(&cif, FFI_FN(my_strlen), &rint, values); - CHECK(rint == 1); - - s = "1234567"; - ffi_call(&cif, FFI_FN(my_strlen), &rint, values); -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen2.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen2.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/strlen2.c -@@ -0,0 +1,49 @@ -+/* Area: ffi_call -+ Purpose: Check strlen function call with additional arguments. -+ Limitations: none. -+ PR: none. -+ Originator: From the original ffitest.c */ -+ -+/* { dg-do run } */ -+ -+#include "ffitest.h" -+ -+static size_t ABI_ATTR my_f(char *s, float a) -+{ -+ return (size_t) ((int) strlen(s) + (int) a); -+} -+ -+int main (void) -+{ -+ ffi_cif cif; -+ ffi_type *args[MAX_ARGS]; -+ void *values[MAX_ARGS]; -+ ffi_arg rint; -+ char *s; -+ float v2; -+ args[0] = &ffi_type_pointer; -+ args[1] = &ffi_type_float; -+ values[0] = (void*) &s; -+ values[1] = (void*) &v2; -+ -+ /* Initialize the cif */ -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, -+ &ffi_type_sint, args) == FFI_OK); -+ -+ s = "a"; -+ v2 = 0.0; -+ ffi_call(&cif, FFI_FN(my_f), &rint, values); -+ CHECK(rint == 1); -+ -+ s = "1234567"; -+ v2 = -1.0; -+ ffi_call(&cif, FFI_FN(my_f), &rint, values); -+ CHECK(rint == 6); -+ -+ s = "1234567890123456789012345"; -+ v2 = 1.0; -+ ffi_call(&cif, FFI_FN(my_f), &rint, values); -+ CHECK(rint == 26); -+ -+ exit(0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen3.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen3.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/strlen3.c -@@ -0,0 +1,49 @@ -+/* Area: ffi_call -+ Purpose: Check strlen function call with additional arguments. -+ Limitations: none. -+ PR: none. -+ Originator: From the original ffitest.c */ -+ -+/* { dg-do run } */ -+ -+#include "ffitest.h" -+ -+static size_t ABI_ATTR my_f(float a, char *s) -+{ -+ return (size_t) ((int) strlen(s) + (int) a); -+} -+ -+int main (void) -+{ -+ ffi_cif cif; -+ ffi_type *args[MAX_ARGS]; -+ void *values[MAX_ARGS]; -+ ffi_arg rint; -+ char *s; -+ float v2; -+ args[1] = &ffi_type_pointer; -+ args[0] = &ffi_type_float; -+ values[1] = (void*) &s; -+ values[0] = (void*) &v2; -+ -+ /* Initialize the cif */ -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, -+ &ffi_type_sint, args) == FFI_OK); -+ -+ s = "a"; -+ v2 = 0.0; -+ ffi_call(&cif, FFI_FN(my_f), &rint, values); -+ CHECK(rint == 1); -+ -+ s = "1234567"; -+ v2 = -1.0; -+ ffi_call(&cif, FFI_FN(my_f), &rint, values); -+ CHECK(rint == 6); -+ -+ s = "1234567890123456789012345"; -+ v2 = 1.0; -+ ffi_call(&cif, FFI_FN(my_f), &rint, values); -+ CHECK(rint == 26); -+ -+ exit(0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen4.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen4.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/strlen4.c -@@ -0,0 +1,55 @@ -+/* Area: ffi_call -+ Purpose: Check strlen function call with additional arguments. -+ Limitations: none. -+ PR: none. -+ Originator: From the original ffitest.c */ -+ -+/* { dg-do run } */ -+ -+#include "ffitest.h" -+ -+static size_t ABI_ATTR my_f(float a, char *s, int i) -+{ -+ return (size_t) ((int) strlen(s) + (int) a + i); -+} -+ -+int main (void) -+{ -+ ffi_cif cif; -+ ffi_type *args[MAX_ARGS]; -+ void *values[MAX_ARGS]; -+ ffi_arg rint; -+ char *s; -+ int v1; -+ float v2; -+ args[2] = &ffi_type_sint; -+ args[1] = &ffi_type_pointer; -+ args[0] = &ffi_type_float; -+ values[2] = (void*) &v1; -+ values[1] = (void*) &s; -+ values[0] = (void*) &v2; -+ -+ /* Initialize the cif */ -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 3, -+ &ffi_type_sint, args) == FFI_OK); -+ -+ s = "a"; -+ v1 = 1; -+ v2 = 0.0; -+ ffi_call(&cif, FFI_FN(my_f), &rint, values); -+ CHECK(rint == 2); -+ -+ s = "1234567"; -+ v2 = -1.0; -+ v1 = -2; -+ ffi_call(&cif, FFI_FN(my_f), &rint, values); -+ CHECK(rint == 4); -+ -+ s = "1234567890123456789012345"; -+ v2 = 1.0; -+ v1 = 2; -+ ffi_call(&cif, FFI_FN(my_f), &rint, values); -+ CHECK(rint == 28); -+ -+ exit(0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen_win32.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen_win32.c -deleted file mode 100644 ---- a/js/src/ctypes/libffi/testsuite/libffi.call/strlen_win32.c -+++ /dev/null -@@ -1,44 +0,0 @@ --/* Area: ffi_call -- Purpose: Check stdcall strlen call on X86_WIN32 systems. -- Limitations: none. -- PR: none. -- Originator: From the original ffitest.c */ -- --/* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */ -- --#include "ffitest.h" -- --static size_t __attribute__((stdcall)) my_stdcall_strlen(char *s) --{ -- return (strlen(s)); --} -- --int main (void) --{ -- ffi_cif cif; -- ffi_type *args[MAX_ARGS]; -- void *values[MAX_ARGS]; -- ffi_arg rint; -- char *s; -- args[0] = &ffi_type_pointer; -- values[0] = (void*) &s; -- -- /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_STDCALL, 1, -- &ffi_type_sint, args) == FFI_OK); -- -- s = "a"; -- ffi_call(&cif, FFI_FN(my_stdcall_strlen), &rint, values); -- CHECK(rint == 1); -- -- s = "1234567"; -- ffi_call(&cif, FFI_FN(my_stdcall_strlen), &rint, values); -- CHECK(rint == 7); -- -- s = "1234567890123456789012345"; -- ffi_call(&cif, FFI_FN(my_stdcall_strlen), &rint, values); -- CHECK(rint == 25); -- -- printf("stdcall strlen tests passed\n"); -- exit(0); --} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct1.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct1.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct1.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct1.c -@@ -9,51 +9,53 @@ - - typedef struct - { - unsigned char uc; - double d; - unsigned int ui; - } test_structure_1; - --static test_structure_1 struct1(test_structure_1 ts) -+static test_structure_1 ABI_ATTR struct1(test_structure_1 ts) - { - ts.uc++; - ts.d--; - ts.ui++; - - return ts; - } - - int main (void) - { - ffi_cif cif; - ffi_type *args[MAX_ARGS]; - void *values[MAX_ARGS]; - ffi_type ts1_type; - ffi_type *ts1_type_elements[4]; -+ -+ test_structure_1 ts1_arg; -+ -+ /* This is a hack to get a properly aligned result buffer */ -+ test_structure_1 *ts1_result = -+ (test_structure_1 *) malloc (sizeof(test_structure_1)); -+ - ts1_type.size = 0; - ts1_type.alignment = 0; - ts1_type.type = FFI_TYPE_STRUCT; - ts1_type.elements = ts1_type_elements; - ts1_type_elements[0] = &ffi_type_uchar; - ts1_type_elements[1] = &ffi_type_double; - ts1_type_elements[2] = &ffi_type_uint; - ts1_type_elements[3] = NULL; - -- test_structure_1 ts1_arg; -- /* This is a hack to get a properly aligned result buffer */ -- test_structure_1 *ts1_result = -- (test_structure_1 *) malloc (sizeof(test_structure_1)); -- - args[0] = &ts1_type; - values[0] = &ts1_arg; - - /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, - &ts1_type, args) == FFI_OK); - - ts1_arg.uc = '\x01'; - ts1_arg.d = 3.14159; - ts1_arg.ui = 555; - - ffi_call(&cif, FFI_FN(struct1), ts1_result, values); - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct2.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct2.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct2.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct2.c -@@ -8,50 +8,50 @@ - #include "ffitest.h" - - typedef struct - { - double d1; - double d2; - } test_structure_2; - --static test_structure_2 struct2(test_structure_2 ts) -+static test_structure_2 ABI_ATTR struct2(test_structure_2 ts) - { - ts.d1--; - ts.d2--; - - return ts; - } - - int main (void) - { - ffi_cif cif; - ffi_type *args[MAX_ARGS]; - void *values[MAX_ARGS]; - test_structure_2 ts2_arg; - ffi_type ts2_type; - ffi_type *ts2_type_elements[3]; -+ -+ /* This is a hack to get a properly aligned result buffer */ -+ test_structure_2 *ts2_result = -+ (test_structure_2 *) malloc (sizeof(test_structure_2)); -+ - ts2_type.size = 0; - ts2_type.alignment = 0; - ts2_type.type = FFI_TYPE_STRUCT; - ts2_type.elements = ts2_type_elements; - ts2_type_elements[0] = &ffi_type_double; - ts2_type_elements[1] = &ffi_type_double; - ts2_type_elements[2] = NULL; - -- -- /* This is a hack to get a properly aligned result buffer */ -- test_structure_2 *ts2_result = -- (test_structure_2 *) malloc (sizeof(test_structure_2)); -- - args[0] = &ts2_type; - values[0] = &ts2_arg; - - /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts2_type, args) == FFI_OK); -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts2_type, args) == FFI_OK); - - ts2_arg.d1 = 5.55; - ts2_arg.d2 = 6.66; - - printf ("%g\n", ts2_arg.d1); - printf ("%g\n", ts2_arg.d2); - - ffi_call(&cif, FFI_FN(struct2), ts2_result, values); -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct3.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct3.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct3.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct3.c -@@ -7,47 +7,48 @@ - /* { dg-do run } */ - #include "ffitest.h" - - typedef struct - { - int si; - } test_structure_3; - --static test_structure_3 struct3(test_structure_3 ts) -+static test_structure_3 ABI_ATTR struct3(test_structure_3 ts) - { - ts.si = -(ts.si*2); - - return ts; - } - - int main (void) - { - ffi_cif cif; - ffi_type *args[MAX_ARGS]; - void *values[MAX_ARGS]; - int compare_value; - ffi_type ts3_type; - ffi_type *ts3_type_elements[2]; -+ -+ test_structure_3 ts3_arg; -+ test_structure_3 *ts3_result = -+ (test_structure_3 *) malloc (sizeof(test_structure_3)); -+ - ts3_type.size = 0; - ts3_type.alignment = 0; - ts3_type.type = FFI_TYPE_STRUCT; - ts3_type.elements = ts3_type_elements; - ts3_type_elements[0] = &ffi_type_sint; - ts3_type_elements[1] = NULL; - -- test_structure_3 ts3_arg; -- test_structure_3 *ts3_result = -- (test_structure_3 *) malloc (sizeof(test_structure_3)); -- - args[0] = &ts3_type; - values[0] = &ts3_arg; - - /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, - &ts3_type, args) == FFI_OK); - - ts3_arg.si = -123; - compare_value = ts3_arg.si; - - ffi_call(&cif, FFI_FN(struct3), ts3_result, values); - - printf ("%d %d\n", ts3_result->si, -(compare_value*2)); -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct4.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct4.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct4.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct4.c -@@ -9,50 +9,51 @@ - - typedef struct - { - unsigned ui1; - unsigned ui2; - unsigned ui3; - } test_structure_4; - --static test_structure_4 struct4(test_structure_4 ts) -+static test_structure_4 ABI_ATTR struct4(test_structure_4 ts) - { - ts.ui3 = ts.ui1 * ts.ui2 * ts.ui3; - - return ts; - } - - int main (void) - { - ffi_cif cif; - ffi_type *args[MAX_ARGS]; - void *values[MAX_ARGS]; - ffi_type ts4_type; - ffi_type *ts4_type_elements[4]; -+ -+ test_structure_4 ts4_arg; -+ -+ /* This is a hack to get a properly aligned result buffer */ -+ test_structure_4 *ts4_result = -+ (test_structure_4 *) malloc (sizeof(test_structure_4)); -+ - ts4_type.size = 0; - ts4_type.alignment = 0; - ts4_type.type = FFI_TYPE_STRUCT; -- test_structure_4 ts4_arg; - ts4_type.elements = ts4_type_elements; - ts4_type_elements[0] = &ffi_type_uint; - ts4_type_elements[1] = &ffi_type_uint; - ts4_type_elements[2] = &ffi_type_uint; - ts4_type_elements[3] = NULL; - -- -- /* This is a hack to get a properly aligned result buffer */ -- test_structure_4 *ts4_result = -- (test_structure_4 *) malloc (sizeof(test_structure_4)); -- - args[0] = &ts4_type; - values[0] = &ts4_arg; - - /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts4_type, args) == FFI_OK); -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts4_type, args) == FFI_OK); - - ts4_arg.ui1 = 2; - ts4_arg.ui2 = 3; - ts4_arg.ui3 = 4; - - ffi_call (&cif, FFI_FN(struct4), ts4_result, values); - - CHECK(ts4_result->ui3 == 2U * 3U * 4U); -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct5.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct5.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct5.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct5.c -@@ -7,52 +7,53 @@ - /* { dg-do run } */ - #include "ffitest.h" - typedef struct - { - char c1; - char c2; - } test_structure_5; - --static test_structure_5 struct5(test_structure_5 ts1, test_structure_5 ts2) -+static test_structure_5 ABI_ATTR struct5(test_structure_5 ts1, test_structure_5 ts2) - { - ts1.c1 += ts2.c1; - ts1.c2 -= ts2.c2; - - return ts1; - } - - int main (void) - { - ffi_cif cif; - ffi_type *args[MAX_ARGS]; - void *values[MAX_ARGS]; - ffi_type ts5_type; - ffi_type *ts5_type_elements[3]; -+ -+ test_structure_5 ts5_arg1, ts5_arg2; -+ -+ /* This is a hack to get a properly aligned result buffer */ -+ test_structure_5 *ts5_result = -+ (test_structure_5 *) malloc (sizeof(test_structure_5)); -+ - ts5_type.size = 0; - ts5_type.alignment = 0; - ts5_type.type = FFI_TYPE_STRUCT; - ts5_type.elements = ts5_type_elements; - ts5_type_elements[0] = &ffi_type_schar; - ts5_type_elements[1] = &ffi_type_schar; - ts5_type_elements[2] = NULL; - -- test_structure_5 ts5_arg1, ts5_arg2; -- -- /* This is a hack to get a properly aligned result buffer */ -- test_structure_5 *ts5_result = -- (test_structure_5 *) malloc (sizeof(test_structure_5)); -- - args[0] = &ts5_type; - args[1] = &ts5_type; - values[0] = &ts5_arg1; - values[1] = &ts5_arg2; - - /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ts5_type, args) == FFI_OK); -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts5_type, args) == FFI_OK); - - ts5_arg1.c1 = 2; - ts5_arg1.c2 = 6; - ts5_arg2.c1 = 5; - ts5_arg2.c2 = 3; - - ffi_call (&cif, FFI_FN(struct5), ts5_result, values); - -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct6.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct6.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct6.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct6.c -@@ -7,51 +7,51 @@ - /* { dg-do run } */ - #include "ffitest.h" - typedef struct - { - float f; - double d; - } test_structure_6; - --static test_structure_6 struct6 (test_structure_6 ts) -+static test_structure_6 ABI_ATTR struct6 (test_structure_6 ts) - { - ts.f += 1; - ts.d += 1; - - return ts; - } - - int main (void) - { - ffi_cif cif; - ffi_type *args[MAX_ARGS]; - void *values[MAX_ARGS]; - ffi_type ts6_type; - ffi_type *ts6_type_elements[3]; -+ -+ test_structure_6 ts6_arg; -+ -+ /* This is a hack to get a properly aligned result buffer */ -+ test_structure_6 *ts6_result = -+ (test_structure_6 *) malloc (sizeof(test_structure_6)); -+ - ts6_type.size = 0; - ts6_type.alignment = 0; - ts6_type.type = FFI_TYPE_STRUCT; - ts6_type.elements = ts6_type_elements; - ts6_type_elements[0] = &ffi_type_float; - ts6_type_elements[1] = &ffi_type_double; - ts6_type_elements[2] = NULL; - -- -- test_structure_6 ts6_arg; -- -- /* This is a hack to get a properly aligned result buffer */ -- test_structure_6 *ts6_result = -- (test_structure_6 *) malloc (sizeof(test_structure_6)); -- - args[0] = &ts6_type; - values[0] = &ts6_arg; - - /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts6_type, args) == FFI_OK); -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts6_type, args) == FFI_OK); - - ts6_arg.f = 5.55f; - ts6_arg.d = 6.66; - - printf ("%g\n", ts6_arg.f); - printf ("%g\n", ts6_arg.d); - - ffi_call(&cif, FFI_FN(struct6), ts6_result, values); -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct7.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct7.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct7.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct7.c -@@ -8,53 +8,53 @@ - #include "ffitest.h" - typedef struct - { - float f1; - float f2; - double d; - } test_structure_7; - --static test_structure_7 struct7 (test_structure_7 ts) -+static test_structure_7 ABI_ATTR struct7 (test_structure_7 ts) - { - ts.f1 += 1; - ts.f2 += 1; - ts.d += 1; - - return ts; - } - - int main (void) - { - ffi_cif cif; - ffi_type *args[MAX_ARGS]; - void *values[MAX_ARGS]; - ffi_type ts7_type; - ffi_type *ts7_type_elements[4]; -+ -+ test_structure_7 ts7_arg; -+ -+ /* This is a hack to get a properly aligned result buffer */ -+ test_structure_7 *ts7_result = -+ (test_structure_7 *) malloc (sizeof(test_structure_7)); -+ - ts7_type.size = 0; - ts7_type.alignment = 0; - ts7_type.type = FFI_TYPE_STRUCT; - ts7_type.elements = ts7_type_elements; - ts7_type_elements[0] = &ffi_type_float; - ts7_type_elements[1] = &ffi_type_float; - ts7_type_elements[2] = &ffi_type_double; - ts7_type_elements[3] = NULL; - -- -- test_structure_7 ts7_arg; -- -- /* This is a hack to get a properly aligned result buffer */ -- test_structure_7 *ts7_result = -- (test_structure_7 *) malloc (sizeof(test_structure_7)); -- - args[0] = &ts7_type; - values[0] = &ts7_arg; - - /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts7_type, args) == FFI_OK); -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts7_type, args) == FFI_OK); - - ts7_arg.f1 = 5.55f; - ts7_arg.f2 = 55.5f; - ts7_arg.d = 6.66; - - printf ("%g\n", ts7_arg.f1); - printf ("%g\n", ts7_arg.f2); - printf ("%g\n", ts7_arg.d); -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct8.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct8.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct8.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct8.c -@@ -9,54 +9,55 @@ - typedef struct - { - float f1; - float f2; - float f3; - float f4; - } test_structure_8; - --static test_structure_8 struct8 (test_structure_8 ts) -+static test_structure_8 ABI_ATTR struct8 (test_structure_8 ts) - { - ts.f1 += 1; - ts.f2 += 1; - ts.f3 += 1; - ts.f4 += 1; - - return ts; - } - - int main (void) - { - ffi_cif cif; - ffi_type *args[MAX_ARGS]; - void *values[MAX_ARGS]; - ffi_type ts8_type; - ffi_type *ts8_type_elements[5]; -+ -+ test_structure_8 ts8_arg; -+ -+ /* This is a hack to get a properly aligned result buffer */ -+ test_structure_8 *ts8_result = -+ (test_structure_8 *) malloc (sizeof(test_structure_8)); -+ - ts8_type.size = 0; - ts8_type.alignment = 0; - ts8_type.type = FFI_TYPE_STRUCT; - ts8_type.elements = ts8_type_elements; - ts8_type_elements[0] = &ffi_type_float; - ts8_type_elements[1] = &ffi_type_float; - ts8_type_elements[2] = &ffi_type_float; - ts8_type_elements[3] = &ffi_type_float; - ts8_type_elements[4] = NULL; - -- test_structure_8 ts8_arg; -- -- /* This is a hack to get a properly aligned result buffer */ -- test_structure_8 *ts8_result = -- (test_structure_8 *) malloc (sizeof(test_structure_8)); -- - args[0] = &ts8_type; - values[0] = &ts8_arg; - - /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts8_type, args) == FFI_OK); -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts8_type, args) == FFI_OK); - - ts8_arg.f1 = 5.55f; - ts8_arg.f2 = 55.5f; - ts8_arg.f3 = -5.55f; - ts8_arg.f4 = -55.5f; - - printf ("%g\n", ts8_arg.f1); - printf ("%g\n", ts8_arg.f2); -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct9.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct9.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct9.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct9.c -@@ -8,50 +8,51 @@ - #include "ffitest.h" - - typedef struct - { - float f; - int i; - } test_structure_9; - --static test_structure_9 struct9 (test_structure_9 ts) -+static test_structure_9 ABI_ATTR struct9 (test_structure_9 ts) - { - ts.f += 1; - ts.i += 1; - - return ts; - } - - int main (void) - { - ffi_cif cif; - ffi_type *args[MAX_ARGS]; - void *values[MAX_ARGS]; - ffi_type ts9_type; - ffi_type *ts9_type_elements[3]; -+ -+ test_structure_9 ts9_arg; -+ -+ /* This is a hack to get a properly aligned result buffer */ -+ test_structure_9 *ts9_result = -+ (test_structure_9 *) malloc (sizeof(test_structure_9)); -+ - ts9_type.size = 0; - ts9_type.alignment = 0; - ts9_type.type = FFI_TYPE_STRUCT; - ts9_type.elements = ts9_type_elements; - ts9_type_elements[0] = &ffi_type_float; - ts9_type_elements[1] = &ffi_type_sint; - ts9_type_elements[2] = NULL; - -- test_structure_9 ts9_arg; -- -- /* This is a hack to get a properly aligned result buffer */ -- test_structure_9 *ts9_result = -- (test_structure_9 *) malloc (sizeof(test_structure_9)); -- - args[0] = &ts9_type; - values[0] = &ts9_arg; - - /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts9_type, args) == FFI_OK); -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts9_type, args) == FFI_OK); - - ts9_arg.f = 5.55f; - ts9_arg.i = 5; - - printf ("%g\n", ts9_arg.f); - printf ("%d\n", ts9_arg.i); - - ffi_call(&cif, FFI_FN(struct9), ts9_result, values); -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/testclosure.c b/js/src/ctypes/libffi/testsuite/libffi.call/testclosure.c ---- a/js/src/ctypes/libffi/testsuite/libffi.call/testclosure.c -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/testclosure.c -@@ -38,23 +38,23 @@ int main (void) - { - ffi_cif cif; - void *code; - ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); - ffi_type* cls_struct_fields0[5]; - ffi_type cls_struct_type0; - ffi_type* dbl_arg_types[5]; - -+ struct cls_struct_combined g_dbl = {4.0, 5.0, 1.0, 8.0}; -+ - cls_struct_type0.size = 0; - cls_struct_type0.alignment = 0; - cls_struct_type0.type = FFI_TYPE_STRUCT; - cls_struct_type0.elements = cls_struct_fields0; - -- struct cls_struct_combined g_dbl = {4.0, 5.0, 1.0, 8.0}; -- - cls_struct_fields0[0] = &ffi_type_float; - cls_struct_fields0[1] = &ffi_type_float; - cls_struct_fields0[2] = &ffi_type_float; - cls_struct_fields0[3] = &ffi_type_float; - cls_struct_fields0[4] = NULL; - - dbl_arg_types[0] = &cls_struct_type0; - dbl_arg_types[1] = NULL; -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/uninitialized.c b/js/src/ctypes/libffi/testsuite/libffi.call/uninitialized.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/uninitialized.c -@@ -0,0 +1,61 @@ -+/* { dg-do run } */ -+#include "ffitest.h" -+ -+typedef struct -+{ -+ unsigned char uc; -+ double d; -+ unsigned int ui; -+} test_structure_1; -+ -+static test_structure_1 struct1(test_structure_1 ts) -+{ -+ ts.uc++; -+ ts.d--; -+ ts.ui++; -+ -+ return ts; -+} -+ -+int main (void) -+{ -+ ffi_cif cif; -+ ffi_type *args[MAX_ARGS]; -+ void *values[MAX_ARGS]; -+ ffi_type ts1_type; -+ ffi_type *ts1_type_elements[4]; -+ -+ memset(&cif, 1, sizeof(cif)); -+ ts1_type.size = 0; -+ ts1_type.alignment = 0; -+ ts1_type.type = FFI_TYPE_STRUCT; -+ ts1_type.elements = ts1_type_elements; -+ ts1_type_elements[0] = &ffi_type_uchar; -+ ts1_type_elements[1] = &ffi_type_double; -+ ts1_type_elements[2] = &ffi_type_uint; -+ ts1_type_elements[3] = NULL; -+ -+ test_structure_1 ts1_arg; -+ /* This is a hack to get a properly aligned result buffer */ -+ test_structure_1 *ts1_result = -+ (test_structure_1 *) malloc (sizeof(test_structure_1)); -+ -+ args[0] = &ts1_type; -+ values[0] = &ts1_arg; -+ -+ /* Initialize the cif */ -+ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, -+ &ts1_type, args) == FFI_OK); -+ -+ ts1_arg.uc = '\x01'; -+ ts1_arg.d = 3.14159; -+ ts1_arg.ui = 555; -+ -+ ffi_call(&cif, FFI_FN(struct1), ts1_result, values); -+ -+ CHECK(ts1_result->ui == 556); -+ CHECK(ts1_result->d == 3.14159 - 1); -+ -+ free (ts1_result); -+ exit(0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest.cc b/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest.cc -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest.cc -@@ -0,0 +1,117 @@ -+/* Area: ffi_closure, unwind info -+ Purpose: Check if the unwind information is passed correctly. -+ Limitations: none. -+ PR: none. -+ Originator: Jeff Sturm */ -+ -+/* { dg-do run } */ -+ -+#include "ffitest.h" -+ -+void ABI_ATTR -+closure_test_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, -+ void** args __UNUSED__, void* userdata __UNUSED__) -+{ -+ throw 9; -+} -+ -+typedef void (*closure_test_type)(); -+ -+void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp, -+ void** args, void* userdata __UNUSED__) -+ { -+ *(ffi_arg*)resp = -+ (int)*(float *)args[0] +(int)(*(float *)args[1]) + -+ (int)(*(float *)args[2]) + (int)*(float *)args[3] + -+ (int)(*(signed short *)args[4]) + (int)(*(float *)args[5]) + -+ (int)*(float *)args[6] + (int)(*(int *)args[7]) + -+ (int)(*(double*)args[8]) + (int)*(int *)args[9] + -+ (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + -+ (int)*(int *)args[12] + (int)(*(int *)args[13]) + -+ (int)(*(int *)args[14]) + *(int *)args[15] + (int)(intptr_t)userdata; -+ -+ printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", -+ (int)*(float *)args[0], (int)(*(float *)args[1]), -+ (int)(*(float *)args[2]), (int)*(float *)args[3], -+ (int)(*(signed short *)args[4]), (int)(*(float *)args[5]), -+ (int)*(float *)args[6], (int)(*(int *)args[7]), -+ (int)(*(double *)args[8]), (int)*(int *)args[9], -+ (int)(*(int *)args[10]), (int)(*(float *)args[11]), -+ (int)*(int *)args[12], (int)(*(int *)args[13]), -+ (int)(*(int *)args[14]), *(int *)args[15], -+ (int)(intptr_t)userdata, (int)*(ffi_arg*)resp); -+ -+ throw (int)*(ffi_arg*)resp; -+} -+ -+typedef int (*closure_test_type1)(float, float, float, float, signed short, -+ float, float, int, double, int, int, float, -+ int, int, int, int); -+ -+int main (void) -+{ -+ ffi_cif cif; -+ void *code; -+ ffi_closure *pcl = (ffi_closure *)ffi_closure_alloc(sizeof(ffi_closure), &code); -+ ffi_type * cl_arg_types[17]; -+ -+ { -+ cl_arg_types[1] = NULL; -+ -+ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, -+ &ffi_type_void, cl_arg_types) == FFI_OK); -+ CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn, NULL, code) == FFI_OK); -+ -+ try -+ { -+ (*((closure_test_type)(code)))(); -+ } catch (int exception_code) -+ { -+ CHECK(exception_code == 9); -+ } -+ -+ printf("part one OK\n"); -+ /* { dg-output "part one OK" } */ -+ } -+ -+ { -+ -+ cl_arg_types[0] = &ffi_type_float; -+ cl_arg_types[1] = &ffi_type_float; -+ cl_arg_types[2] = &ffi_type_float; -+ cl_arg_types[3] = &ffi_type_float; -+ cl_arg_types[4] = &ffi_type_sshort; -+ cl_arg_types[5] = &ffi_type_float; -+ cl_arg_types[6] = &ffi_type_float; -+ cl_arg_types[7] = &ffi_type_uint; -+ cl_arg_types[8] = &ffi_type_double; -+ cl_arg_types[9] = &ffi_type_uint; -+ cl_arg_types[10] = &ffi_type_uint; -+ cl_arg_types[11] = &ffi_type_float; -+ cl_arg_types[12] = &ffi_type_uint; -+ cl_arg_types[13] = &ffi_type_uint; -+ cl_arg_types[14] = &ffi_type_uint; -+ cl_arg_types[15] = &ffi_type_uint; -+ cl_arg_types[16] = NULL; -+ -+ /* Initialize the cif */ -+ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, -+ &ffi_type_sint, cl_arg_types) == FFI_OK); -+ -+ CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn1, -+ (void *) 3 /* userdata */, code) == FFI_OK); -+ try -+ { -+ (*((closure_test_type1)code)) -+ (1.1, 2.2, 3.3, 4.4, 127, 5.5, 6.6, 8, 9, 10, 11, 12.0, 13, -+ 19, 21, 1); -+ /* { dg-output "\n1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */ -+ } catch (int exception_code) -+ { -+ CHECK(exception_code == 255); -+ } -+ printf("part two OK\n"); -+ /* { dg-output "\npart two OK" } */ -+ } -+ exit(0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc b/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc -@@ -0,0 +1,54 @@ -+/* Area: ffi_call, unwind info -+ Purpose: Check if the unwind information is passed correctly. -+ Limitations: none. -+ PR: none. -+ Originator: Andreas Tobler 20061213 */ -+ -+/* { dg-do run } */ -+ -+#include "ffitest.h" -+ -+static int checking(int a __UNUSED__, short b __UNUSED__, -+ signed char c __UNUSED__) -+{ -+ throw 9; -+} -+ -+int main (void) -+{ -+ ffi_cif cif; -+ ffi_type *args[MAX_ARGS]; -+ void *values[MAX_ARGS]; -+ ffi_arg rint; -+ -+ signed int si; -+ signed short ss; -+ signed char sc; -+ -+ args[0] = &ffi_type_sint; -+ values[0] = &si; -+ args[1] = &ffi_type_sshort; -+ values[1] = &ss; -+ args[2] = &ffi_type_schar; -+ values[2] = ≻ -+ -+ /* Initialize the cif */ -+ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, -+ &ffi_type_sint, args) == FFI_OK); -+ -+ si = -6; -+ ss = -12; -+ sc = -1; -+ { -+ try -+ { -+ ffi_call(&cif, FFI_FN(checking), &rint, values); -+ } catch (int exception_code) -+ { -+ CHECK(exception_code == 9); -+ } -+ printf("part one OK\n"); -+ /* { dg-output "part one OK" } */ -+ } -+ exit(0); -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/va_1.c b/js/src/ctypes/libffi/testsuite/libffi.call/va_1.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/va_1.c -@@ -0,0 +1,196 @@ -+/* Area: ffi_call -+ Purpose: Test passing struct in variable argument lists. -+ Limitations: none. -+ PR: none. -+ Originator: ARM Ltd. */ -+ -+/* { dg-do run } */ -+/* { dg-output "" { xfail avr32*-*-* } } */ -+ -+#include "ffitest.h" -+#include -+ -+struct small_tag -+{ -+ unsigned char a; -+ unsigned char b; -+}; -+ -+struct large_tag -+{ -+ unsigned a; -+ unsigned b; -+ unsigned c; -+ unsigned d; -+ unsigned e; -+}; -+ -+static int -+test_fn (int n, ...) -+{ -+ va_list ap; -+ struct small_tag s1; -+ struct small_tag s2; -+ struct large_tag l; -+ unsigned char uc; -+ signed char sc; -+ unsigned short us; -+ signed short ss; -+ unsigned int ui; -+ signed int si; -+ unsigned long ul; -+ signed long sl; -+ float f; -+ double d; -+ -+ va_start (ap, n); -+ s1 = va_arg (ap, struct small_tag); -+ l = va_arg (ap, struct large_tag); -+ s2 = va_arg (ap, struct small_tag); -+ -+ uc = va_arg (ap, unsigned); -+ sc = va_arg (ap, signed); -+ -+ us = va_arg (ap, unsigned); -+ ss = va_arg (ap, signed); -+ -+ ui = va_arg (ap, unsigned int); -+ si = va_arg (ap, signed int); -+ -+ ul = va_arg (ap, unsigned long); -+ sl = va_arg (ap, signed long); -+ -+ f = va_arg (ap, double); /* C standard promotes float->double -+ when anonymous */ -+ d = va_arg (ap, double); -+ -+ printf ("%u %u %u %u %u %u %u %u %u uc=%u sc=%d %u %d %u %d %lu %ld %f %f\n", -+ s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, -+ s2.a, s2.b, -+ uc, sc, -+ us, ss, -+ ui, si, -+ ul, sl, -+ f, d); -+ va_end (ap); -+ return n + 1; -+} -+ -+int -+main (void) -+{ -+ ffi_cif cif; -+ void* args[15]; -+ ffi_type* arg_types[15]; -+ -+ ffi_type s_type; -+ ffi_type *s_type_elements[3]; -+ -+ ffi_type l_type; -+ ffi_type *l_type_elements[6]; -+ -+ struct small_tag s1; -+ struct small_tag s2; -+ struct large_tag l1; -+ -+ int n; -+ ffi_arg res; -+ -+ unsigned char uc; -+ signed char sc; -+ unsigned short us; -+ signed short ss; -+ unsigned int ui; -+ signed int si; -+ unsigned long ul; -+ signed long sl; -+ double d1; -+ double f1; -+ -+ s_type.size = 0; -+ s_type.alignment = 0; -+ s_type.type = FFI_TYPE_STRUCT; -+ s_type.elements = s_type_elements; -+ -+ s_type_elements[0] = &ffi_type_uchar; -+ s_type_elements[1] = &ffi_type_uchar; -+ s_type_elements[2] = NULL; -+ -+ l_type.size = 0; -+ l_type.alignment = 0; -+ l_type.type = FFI_TYPE_STRUCT; -+ l_type.elements = l_type_elements; -+ -+ l_type_elements[0] = &ffi_type_uint; -+ l_type_elements[1] = &ffi_type_uint; -+ l_type_elements[2] = &ffi_type_uint; -+ l_type_elements[3] = &ffi_type_uint; -+ l_type_elements[4] = &ffi_type_uint; -+ l_type_elements[5] = NULL; -+ -+ arg_types[0] = &ffi_type_sint; -+ arg_types[1] = &s_type; -+ arg_types[2] = &l_type; -+ arg_types[3] = &s_type; -+ arg_types[4] = &ffi_type_uchar; -+ arg_types[5] = &ffi_type_schar; -+ arg_types[6] = &ffi_type_ushort; -+ arg_types[7] = &ffi_type_sshort; -+ arg_types[8] = &ffi_type_uint; -+ arg_types[9] = &ffi_type_sint; -+ arg_types[10] = &ffi_type_ulong; -+ arg_types[11] = &ffi_type_slong; -+ arg_types[12] = &ffi_type_double; -+ arg_types[13] = &ffi_type_double; -+ arg_types[14] = NULL; -+ -+ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 14, &ffi_type_sint, arg_types) == FFI_OK); -+ -+ s1.a = 5; -+ s1.b = 6; -+ -+ l1.a = 10; -+ l1.b = 11; -+ l1.c = 12; -+ l1.d = 13; -+ l1.e = 14; -+ -+ s2.a = 7; -+ s2.b = 8; -+ -+ n = 41; -+ -+ uc = 9; -+ sc = 10; -+ us = 11; -+ ss = 12; -+ ui = 13; -+ si = 14; -+ ul = 15; -+ sl = 16; -+ f1 = 2.12; -+ d1 = 3.13; -+ -+ args[0] = &n; -+ args[1] = &s1; -+ args[2] = &l1; -+ args[3] = &s2; -+ args[4] = &uc; -+ args[5] = ≻ -+ args[6] = &us; -+ args[7] = &ss; -+ args[8] = &ui; -+ args[9] = &si; -+ args[10] = &ul; -+ args[11] = &sl; -+ args[12] = &f1; -+ args[13] = &d1; -+ args[14] = NULL; -+ -+ ffi_call(&cif, FFI_FN(test_fn), &res, args); -+ /* { dg-output "5 6 10 11 12 13 14 7 8 uc=9 sc=10 11 12 13 14 15 16 2.120000 3.130000" } */ -+ printf("res: %d\n", (int) res); -+ /* { dg-output "\nres: 42" } */ -+ -+ return 0; -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/va_struct1.c b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct1.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct1.c -@@ -0,0 +1,121 @@ -+/* Area: ffi_call -+ Purpose: Test passing struct in variable argument lists. -+ Limitations: none. -+ PR: none. -+ Originator: ARM Ltd. */ -+ -+/* { dg-do run } */ -+/* { dg-output "" { xfail avr32*-*-* } } */ -+ -+#include "ffitest.h" -+#include -+ -+struct small_tag -+{ -+ unsigned char a; -+ unsigned char b; -+}; -+ -+struct large_tag -+{ -+ unsigned a; -+ unsigned b; -+ unsigned c; -+ unsigned d; -+ unsigned e; -+}; -+ -+static int -+test_fn (int n, ...) -+{ -+ va_list ap; -+ struct small_tag s1; -+ struct small_tag s2; -+ struct large_tag l; -+ -+ va_start (ap, n); -+ s1 = va_arg (ap, struct small_tag); -+ l = va_arg (ap, struct large_tag); -+ s2 = va_arg (ap, struct small_tag); -+ printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, -+ s2.a, s2.b); -+ va_end (ap); -+ return n + 1; -+} -+ -+int -+main (void) -+{ -+ ffi_cif cif; -+ void* args[5]; -+ ffi_type* arg_types[5]; -+ -+ ffi_type s_type; -+ ffi_type *s_type_elements[3]; -+ -+ ffi_type l_type; -+ ffi_type *l_type_elements[6]; -+ -+ struct small_tag s1; -+ struct small_tag s2; -+ struct large_tag l1; -+ -+ int n; -+ ffi_arg res; -+ -+ s_type.size = 0; -+ s_type.alignment = 0; -+ s_type.type = FFI_TYPE_STRUCT; -+ s_type.elements = s_type_elements; -+ -+ s_type_elements[0] = &ffi_type_uchar; -+ s_type_elements[1] = &ffi_type_uchar; -+ s_type_elements[2] = NULL; -+ -+ l_type.size = 0; -+ l_type.alignment = 0; -+ l_type.type = FFI_TYPE_STRUCT; -+ l_type.elements = l_type_elements; -+ -+ l_type_elements[0] = &ffi_type_uint; -+ l_type_elements[1] = &ffi_type_uint; -+ l_type_elements[2] = &ffi_type_uint; -+ l_type_elements[3] = &ffi_type_uint; -+ l_type_elements[4] = &ffi_type_uint; -+ l_type_elements[5] = NULL; -+ -+ arg_types[0] = &ffi_type_sint; -+ arg_types[1] = &s_type; -+ arg_types[2] = &l_type; -+ arg_types[3] = &s_type; -+ arg_types[4] = NULL; -+ -+ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &ffi_type_sint, arg_types) == FFI_OK); -+ -+ s1.a = 5; -+ s1.b = 6; -+ -+ l1.a = 10; -+ l1.b = 11; -+ l1.c = 12; -+ l1.d = 13; -+ l1.e = 14; -+ -+ s2.a = 7; -+ s2.b = 8; -+ -+ n = 41; -+ -+ args[0] = &n; -+ args[1] = &s1; -+ args[2] = &l1; -+ args[3] = &s2; -+ args[4] = NULL; -+ -+ ffi_call(&cif, FFI_FN(test_fn), &res, args); -+ /* { dg-output "5 6 10 11 12 13 14 7 8" } */ -+ printf("res: %d\n", (int) res); -+ /* { dg-output "\nres: 42" } */ -+ -+ return 0; -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/va_struct2.c b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct2.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct2.c -@@ -0,0 +1,123 @@ -+/* Area: ffi_call -+ Purpose: Test passing struct in variable argument lists. -+ Limitations: none. -+ PR: none. -+ Originator: ARM Ltd. */ -+ -+/* { dg-do run } */ -+/* { dg-output "" { xfail avr32*-*-* } } */ -+ -+#include "ffitest.h" -+#include -+ -+struct small_tag -+{ -+ unsigned char a; -+ unsigned char b; -+}; -+ -+struct large_tag -+{ -+ unsigned a; -+ unsigned b; -+ unsigned c; -+ unsigned d; -+ unsigned e; -+}; -+ -+static struct small_tag -+test_fn (int n, ...) -+{ -+ va_list ap; -+ struct small_tag s1; -+ struct small_tag s2; -+ struct large_tag l; -+ -+ va_start (ap, n); -+ s1 = va_arg (ap, struct small_tag); -+ l = va_arg (ap, struct large_tag); -+ s2 = va_arg (ap, struct small_tag); -+ printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, -+ s2.a, s2.b); -+ va_end (ap); -+ s1.a += s2.a; -+ s1.b += s2.b; -+ return s1; -+} -+ -+int -+main (void) -+{ -+ ffi_cif cif; -+ void* args[5]; -+ ffi_type* arg_types[5]; -+ -+ ffi_type s_type; -+ ffi_type *s_type_elements[3]; -+ -+ ffi_type l_type; -+ ffi_type *l_type_elements[6]; -+ -+ struct small_tag s1; -+ struct small_tag s2; -+ struct large_tag l1; -+ -+ int n; -+ struct small_tag res; -+ -+ s_type.size = 0; -+ s_type.alignment = 0; -+ s_type.type = FFI_TYPE_STRUCT; -+ s_type.elements = s_type_elements; -+ -+ s_type_elements[0] = &ffi_type_uchar; -+ s_type_elements[1] = &ffi_type_uchar; -+ s_type_elements[2] = NULL; -+ -+ l_type.size = 0; -+ l_type.alignment = 0; -+ l_type.type = FFI_TYPE_STRUCT; -+ l_type.elements = l_type_elements; -+ -+ l_type_elements[0] = &ffi_type_uint; -+ l_type_elements[1] = &ffi_type_uint; -+ l_type_elements[2] = &ffi_type_uint; -+ l_type_elements[3] = &ffi_type_uint; -+ l_type_elements[4] = &ffi_type_uint; -+ l_type_elements[5] = NULL; -+ -+ arg_types[0] = &ffi_type_sint; -+ arg_types[1] = &s_type; -+ arg_types[2] = &l_type; -+ arg_types[3] = &s_type; -+ arg_types[4] = NULL; -+ -+ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &s_type, arg_types) == FFI_OK); -+ -+ s1.a = 5; -+ s1.b = 6; -+ -+ l1.a = 10; -+ l1.b = 11; -+ l1.c = 12; -+ l1.d = 13; -+ l1.e = 14; -+ -+ s2.a = 7; -+ s2.b = 8; -+ -+ n = 41; -+ -+ args[0] = &n; -+ args[1] = &s1; -+ args[2] = &l1; -+ args[3] = &s2; -+ args[4] = NULL; -+ -+ ffi_call(&cif, FFI_FN(test_fn), &res, args); -+ /* { dg-output "5 6 10 11 12 13 14 7 8" } */ -+ printf("res: %d %d\n", res.a, res.b); -+ /* { dg-output "\nres: 12 14" } */ -+ -+ return 0; -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/va_struct3.c b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct3.c -new file mode 100644 ---- /dev/null -+++ b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct3.c -@@ -0,0 +1,125 @@ -+/* Area: ffi_call -+ Purpose: Test passing struct in variable argument lists. -+ Limitations: none. -+ PR: none. -+ Originator: ARM Ltd. */ -+ -+/* { dg-do run } */ -+/* { dg-output "" { xfail avr32*-*-* } } */ -+ -+#include "ffitest.h" -+#include -+ -+struct small_tag -+{ -+ unsigned char a; -+ unsigned char b; -+}; -+ -+struct large_tag -+{ -+ unsigned a; -+ unsigned b; -+ unsigned c; -+ unsigned d; -+ unsigned e; -+}; -+ -+static struct large_tag -+test_fn (int n, ...) -+{ -+ va_list ap; -+ struct small_tag s1; -+ struct small_tag s2; -+ struct large_tag l; -+ -+ va_start (ap, n); -+ s1 = va_arg (ap, struct small_tag); -+ l = va_arg (ap, struct large_tag); -+ s2 = va_arg (ap, struct small_tag); -+ printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, -+ s2.a, s2.b); -+ va_end (ap); -+ l.a += s1.a; -+ l.b += s1.b; -+ l.c += s2.a; -+ l.d += s2.b; -+ return l; -+} -+ -+int -+main (void) -+{ -+ ffi_cif cif; -+ void* args[5]; -+ ffi_type* arg_types[5]; -+ -+ ffi_type s_type; -+ ffi_type *s_type_elements[3]; -+ -+ ffi_type l_type; -+ ffi_type *l_type_elements[6]; -+ -+ struct small_tag s1; -+ struct small_tag s2; -+ struct large_tag l1; -+ -+ int n; -+ struct large_tag res; -+ -+ s_type.size = 0; -+ s_type.alignment = 0; -+ s_type.type = FFI_TYPE_STRUCT; -+ s_type.elements = s_type_elements; -+ -+ s_type_elements[0] = &ffi_type_uchar; -+ s_type_elements[1] = &ffi_type_uchar; -+ s_type_elements[2] = NULL; -+ -+ l_type.size = 0; -+ l_type.alignment = 0; -+ l_type.type = FFI_TYPE_STRUCT; -+ l_type.elements = l_type_elements; -+ -+ l_type_elements[0] = &ffi_type_uint; -+ l_type_elements[1] = &ffi_type_uint; -+ l_type_elements[2] = &ffi_type_uint; -+ l_type_elements[3] = &ffi_type_uint; -+ l_type_elements[4] = &ffi_type_uint; -+ l_type_elements[5] = NULL; -+ -+ arg_types[0] = &ffi_type_sint; -+ arg_types[1] = &s_type; -+ arg_types[2] = &l_type; -+ arg_types[3] = &s_type; -+ arg_types[4] = NULL; -+ -+ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &l_type, arg_types) == FFI_OK); -+ -+ s1.a = 5; -+ s1.b = 6; -+ -+ l1.a = 10; -+ l1.b = 11; -+ l1.c = 12; -+ l1.d = 13; -+ l1.e = 14; -+ -+ s2.a = 7; -+ s2.b = 8; -+ -+ n = 41; -+ -+ args[0] = &n; -+ args[1] = &s1; -+ args[2] = &l1; -+ args[3] = &s2; -+ args[4] = NULL; -+ -+ ffi_call(&cif, FFI_FN(test_fn), &res, args); -+ /* { dg-output "5 6 10 11 12 13 14 7 8" } */ -+ printf("res: %d %d %d %d %d\n", res.a, res.b, res.c, res.d, res.e); -+ /* { dg-output "\nres: 15 17 19 21 14" } */ -+ -+ return 0; -+} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.special/ffitestcxx.h b/js/src/ctypes/libffi/testsuite/libffi.special/ffitestcxx.h -deleted file mode 100644 ---- a/js/src/ctypes/libffi/testsuite/libffi.special/ffitestcxx.h -+++ /dev/null -@@ -1,96 +0,0 @@ --#include --#include --#include --#include --#include "fficonfig.h" -- --#define MAX_ARGS 256 -- -- --/* Define __UNUSED__ that also other compilers than gcc can run the tests. */ --#undef __UNUSED__ --#if defined(__GNUC__) --#define __UNUSED__ __attribute__((__unused__)) --#else --#define __UNUSED__ --#endif -- --#define CHECK(x) (!(x) ? abort() : (void)0) -- --/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a -- file open. */ --#ifdef HAVE_MMAP_ANON --# undef HAVE_MMAP_DEV_ZERO -- --# include --# ifndef MAP_FAILED --# define MAP_FAILED -1 --# endif --# if !defined (MAP_ANONYMOUS) && defined (MAP_ANON) --# define MAP_ANONYMOUS MAP_ANON --# endif --# define USING_MMAP -- --#endif -- --#ifdef HAVE_MMAP_DEV_ZERO -- --# include --# ifndef MAP_FAILED --# define MAP_FAILED -1 --# endif --# define USING_MMAP -- --#endif -- -- --/* MinGW kludge. */ --#ifdef _WIN64 --#define PRIdLL "I64d" --#define PRIuLL "I64u" --#else --#define PRIdLL "lld" --#define PRIuLL "llu" --#endif -- --#ifdef USING_MMAP --static inline void * --allocate_mmap (size_t size) --{ -- void *page; --#if defined (HAVE_MMAP_DEV_ZERO) -- static int dev_zero_fd = -1; --#endif -- --#ifdef HAVE_MMAP_DEV_ZERO -- if (dev_zero_fd == -1) -- { -- dev_zero_fd = open ("/dev/zero", O_RDONLY); -- if (dev_zero_fd == -1) -- { -- perror ("open /dev/zero: %m"); -- exit (1); -- } -- } --#endif -- -- --#ifdef HAVE_MMAP_ANON -- page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC, -- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); --#endif --#ifdef HAVE_MMAP_DEV_ZERO -- page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC, -- MAP_PRIVATE, dev_zero_fd, 0); --#endif -- -- if (page == (char *) MAP_FAILED) -- { -- perror ("virtual memory exhausted"); -- exit (1); -- } -- -- return page; --} -- --#endif -diff --git a/js/src/ctypes/libffi/testsuite/libffi.special/special.exp b/js/src/ctypes/libffi/testsuite/libffi.special/special.exp -deleted file mode 100644 ---- a/js/src/ctypes/libffi/testsuite/libffi.special/special.exp -+++ /dev/null -@@ -1,37 +0,0 @@ --# Copyright (C) 2003, 2006, 2009 Free Software Foundation, Inc. -- --# This program is free software; you can redistribute it and/or modify --# it under the terms of the GNU General Public License as published by --# the Free Software Foundation; either version 3 of the License, or --# (at your option) any later version. --# --# This program is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. --# --# You should have received a copy of the GNU General Public License --# along with this program; see the file COPYING3. If not see --# . -- --load_lib libffi-dg.exp -- --dg-init --libffi-init -- --global srcdir subdir -- --global cxx_options -- --set cxx_options " -shared-libgcc -lstdc++" -- --dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O0 -W -Wall" --dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O2" --dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O3" --dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-Os" -- --dg-finish -- --# Local Variables: --# tcl-indent-level:4 --# End: -diff --git a/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest.cc b/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest.cc -deleted file mode 100644 ---- a/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest.cc -+++ /dev/null -@@ -1,124 +0,0 @@ --/* Area: ffi_closure, unwind info -- Purpose: Check if the unwind information is passed correctly. -- Limitations: none. -- PR: none. -- Originator: Jeff Sturm */ -- --/* { dg-do run } */ --#include "ffitestcxx.h" -- --#if defined HAVE_STDINT_H --#include --#endif -- --#if defined HAVE_INTTYPES_H --#include --#endif -- --void --closure_test_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, -- void** args __UNUSED__, void* userdata __UNUSED__) --{ -- throw 9; --} -- --typedef void (*closure_test_type)(); -- --void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp, -- void** args, void* userdata __UNUSED__) -- { -- *(ffi_arg*)resp = -- (int)*(float *)args[0] +(int)(*(float *)args[1]) + -- (int)(*(float *)args[2]) + (int)*(float *)args[3] + -- (int)(*(signed short *)args[4]) + (int)(*(float *)args[5]) + -- (int)*(float *)args[6] + (int)(*(int *)args[7]) + -- (int)(*(double*)args[8]) + (int)*(int *)args[9] + -- (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + -- (int)*(int *)args[12] + (int)(*(int *)args[13]) + -- (int)(*(int *)args[14]) + *(int *)args[15] + (int)(intptr_t)userdata; -- -- printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", -- (int)*(float *)args[0], (int)(*(float *)args[1]), -- (int)(*(float *)args[2]), (int)*(float *)args[3], -- (int)(*(signed short *)args[4]), (int)(*(float *)args[5]), -- (int)*(float *)args[6], (int)(*(int *)args[7]), -- (int)(*(double *)args[8]), (int)*(int *)args[9], -- (int)(*(int *)args[10]), (int)(*(float *)args[11]), -- (int)*(int *)args[12], (int)(*(int *)args[13]), -- (int)(*(int *)args[14]), *(int *)args[15], -- (int)(intptr_t)userdata, (int)*(ffi_arg*)resp); -- -- throw (int)*(ffi_arg*)resp; --} -- --typedef int (*closure_test_type1)(float, float, float, float, signed short, -- float, float, int, double, int, int, float, -- int, int, int, int); -- --int main (void) --{ -- ffi_cif cif; -- void *code; -- ffi_closure *pcl = (ffi_closure *)ffi_closure_alloc(sizeof(ffi_closure), &code); -- ffi_type * cl_arg_types[17]; -- -- { -- cl_arg_types[1] = NULL; -- -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, -- &ffi_type_void, cl_arg_types) == FFI_OK); -- CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn, NULL, code) == FFI_OK); -- -- try -- { -- (*((closure_test_type)(code)))(); -- } catch (int exception_code) -- { -- CHECK(exception_code == 9); -- } -- -- printf("part one OK\n"); -- /* { dg-output "part one OK" } */ -- } -- -- { -- -- cl_arg_types[0] = &ffi_type_float; -- cl_arg_types[1] = &ffi_type_float; -- cl_arg_types[2] = &ffi_type_float; -- cl_arg_types[3] = &ffi_type_float; -- cl_arg_types[4] = &ffi_type_sshort; -- cl_arg_types[5] = &ffi_type_float; -- cl_arg_types[6] = &ffi_type_float; -- cl_arg_types[7] = &ffi_type_uint; -- cl_arg_types[8] = &ffi_type_double; -- cl_arg_types[9] = &ffi_type_uint; -- cl_arg_types[10] = &ffi_type_uint; -- cl_arg_types[11] = &ffi_type_float; -- cl_arg_types[12] = &ffi_type_uint; -- cl_arg_types[13] = &ffi_type_uint; -- cl_arg_types[14] = &ffi_type_uint; -- cl_arg_types[15] = &ffi_type_uint; -- cl_arg_types[16] = NULL; -- -- /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, -- &ffi_type_sint, cl_arg_types) == FFI_OK); -- -- CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn1, -- (void *) 3 /* userdata */, code) == FFI_OK); -- try -- { -- (*((closure_test_type1)code)) -- (1.1, 2.2, 3.3, 4.4, 127, 5.5, 6.6, 8, 9, 10, 11, 12.0, 13, -- 19, 21, 1); -- /* { dg-output "\n1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */ -- } catch (int exception_code) -- { -- CHECK(exception_code == 255); -- } -- printf("part two OK\n"); -- /* { dg-output "\npart two OK" } */ -- } -- exit(0); --} -diff --git a/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc b/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc -deleted file mode 100644 ---- a/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc -+++ /dev/null -@@ -1,53 +0,0 @@ --/* Area: ffi_call, unwind info -- Purpose: Check if the unwind information is passed correctly. -- Limitations: none. -- PR: none. -- Originator: Andreas Tobler 20061213 */ -- --/* { dg-do run } */ --#include "ffitestcxx.h" -- --static int checking(int a __UNUSED__, short b __UNUSED__, -- signed char c __UNUSED__) --{ -- throw 9; --} -- --int main (void) --{ -- ffi_cif cif; -- ffi_type *args[MAX_ARGS]; -- void *values[MAX_ARGS]; -- ffi_arg rint; -- -- signed int si; -- signed short ss; -- signed char sc; -- -- args[0] = &ffi_type_sint; -- values[0] = &si; -- args[1] = &ffi_type_sshort; -- values[1] = &ss; -- args[2] = &ffi_type_schar; -- values[2] = ≻ -- -- /* Initialize the cif */ -- CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, -- &ffi_type_sint, args) == FFI_OK); -- -- si = -6; -- ss = -12; -- sc = -1; -- { -- try -- { -- ffi_call(&cif, FFI_FN(checking), &rint, values); -- } catch (int exception_code) -- { -- CHECK(exception_code == 9); -- } -- printf("part one OK\n"); -- /* { dg-output "part one OK" } */ -- } -- exit(0); --} ---- a/js/src/ctypes/patches-libffi/00-base.patch -+++ /dev/null -@@ -1,1349 +0,0 @@ --Patch libffi to fix bug 550602, bug 538216, bug545634, bug 594611, bug 605421 --and bug 631928. -- --diff --git a/js/src/ctypes/libffi/Makefile.in b/js/src/ctypes/libffi/Makefile.in ----- a/js/src/ctypes/libffi/Makefile.in --+++ b/js/src/ctypes/libffi/Makefile.in --@@ -199,17 +199,17 @@ LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIB -- CCLD = $(CC) -- LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ -- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ -- $(LDFLAGS) -o $@ -- SOURCES = $(libffi_la_SOURCES) $(nodist_libffi_la_SOURCES) \ -- $(libffi_convenience_la_SOURCES) \ -- $(nodist_libffi_convenience_la_SOURCES) -- DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES) ---INFO_DEPS = $(srcdir)/doc/libffi.info --+INFO_DEPS = -- am__TEXINFO_TEX_DIR = $(srcdir) -- DVIS = doc/libffi.dvi -- PDFS = doc/libffi.pdf -- PSS = doc/libffi.ps -- HTMLS = doc/libffi.html -- TEXINFOS = doc/libffi.texi -- TEXI2DVI = texi2dvi -- TEXI2PDF = $(TEXI2DVI) --pdf --batch --@@ -986,57 +986,57 @@ distclean-compile: -- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi.Plo@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi64.Plo@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/freebsd.Plo@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/sysv.Plo@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/unix64.Plo@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win32.Plo@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win64.Plo@am__quote@ -- ---.S.o: --+%.o: %.S -- @am__fastdepCCAS_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -- @am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -- @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -- @am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ $< -- ---.S.obj: --+%.obj: %.S -- @am__fastdepCCAS_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -- @am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -- @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -- @am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` -- ---.S.lo: --+%.lo: %.S -- @am__fastdepCCAS_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -- @am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -- @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -- @am__fastdepCCAS_FALSE@ $(LTCPPASCOMPILE) -c -o $@ $< -- ---.c.o: --+%.o: %.c -- @am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -- @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -- @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -- @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -- @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -- @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< -- ---.c.obj: --+%.obj: %.c -- @am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -- @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -- @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -- @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -- @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -- @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` -- ---.c.lo: --+%.lo: %.c -- @am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -- @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -- @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -- @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -- @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -- @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -- -- mostlyclean-libtool: --@@ -1129,17 +1129,17 @@ doc/libffi.html: doc/libffi.texi $(srcdi -- -@rm -f vti.tmp -- @cp $(srcdir)/doc/version.texi $@ -- -- mostlyclean-vti: -- -rm -f vti.tmp -- -- maintainer-clean-vti: -- @MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/doc/stamp-vti $(srcdir)/doc/version.texi ---.dvi.ps: --+%.ps: %.dvi -- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ -- $(DVIPS) -o $@ $< -- -- uninstall-dvi-am: -- @$(NORMAL_UNINSTALL) -- @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ -- for p in $$list; do \ -- $(am__strip_dir) \ --diff --git a/js/src/ctypes/libffi/aclocal.m4 b/js/src/ctypes/libffi/aclocal.m4 ----- a/js/src/ctypes/libffi/aclocal.m4 --+++ b/js/src/ctypes/libffi/aclocal.m4 --@@ -4703,17 +4703,17 @@ dnl Note also adjust exclude_expsyms for -- # Tell ltmain to make .dll files, not .so files. -- shrext_cmds=".dll" -- # FIXME: Setting linknames here is a bad hack. -- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' -- # The linker will automatically build a .lib file if we build a DLL. -- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' -- # FIXME: Should let the user specify the lib program. -- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' --- _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' --+ _LT_TAGVAR(fix_srcfile_path, $1)='' -- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -- ;; -- -- darwin* | rhapsody*) -- _LT_DARWIN_LINKER_FEATURES($1) -- ;; -- -- dgux*) --diff --git a/js/src/ctypes/libffi/config.sub b/js/src/ctypes/libffi/config.sub ----- a/js/src/ctypes/libffi/config.sub --+++ b/js/src/ctypes/libffi/config.sub --@@ -1,15 +1,15 @@ -- #! /bin/sh -- # Configuration validation subroutine script. -- # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -- # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 -- # Free Software Foundation, Inc. -- ---timestamp='2009-11-07' --+timestamp='2011-01-03' -- -- # This file is (in principle) common to ALL GNU software. -- # The presence of a machine in this file suggests that SOME GNU software -- # can handle that machine. It does not imply ALL GNU software can. -- # -- # This file is free software; you can redistribute it and/or modify -- # it under the terms of the GNU General Public License as published by -- # the Free Software Foundation; either version 2 of the License, or --@@ -121,17 +121,17 @@ esac -- -- # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -- # Here we must recognize all the valid KERNEL-OS combinations. -- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -- case $maybe_os in -- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ -- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ -- kopensolaris*-gnu* | \ --- storm-chaos* | os2-emx* | rtmk-nova*) --+ storm-chaos* | os2-emx* | rtmk-nova* | wince-winmo*) -- os=-$maybe_os -- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` -- ;; -- *) -- basic_machine=`echo $1 | sed 's/-[^-]*$//'` -- if [ $basic_machine != $1 ] -- then os=`echo $1 | sed 's/.*-/-/'` -- else os=; fi --@@ -282,32 +282,30 @@ case $basic_machine in -- | mt \ -- | msp430 \ -- | nios | nios2 \ -- | ns16k | ns32k \ -- | or32 \ -- | pdp10 | pdp11 | pj | pjl \ -- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ -- | pyramid \ --- | rx \ -- | score \ -- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ -- | sh64 | sh64le \ -- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ -- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ -- | spu | strongarm \ -- | tahoe | thumb | tic4x | tic80 | tron \ --- | ubicom32 \ -- | v850 | v850e \ -- | we32k \ -- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ -- | z8k | z80) -- basic_machine=$basic_machine-unknown -- ;; --- m6811 | m68hc11 | m6812 | m68hc12 | picochip) --+ m6811 | m68hc11 | m6812 | m68hc12) -- # Motorola 68HC11/12. -- basic_machine=$basic_machine-unknown -- os=-none -- ;; -- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) -- ;; -- ms1) -- basic_machine=mt-unknown --@@ -368,26 +366,25 @@ case $basic_machine in -- | mt-* \ -- | msp430-* \ -- | nios-* | nios2-* \ -- | none-* | np1-* | ns16k-* | ns32k-* \ -- | orion-* \ -- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ -- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ -- | pyramid-* \ --- | romp-* | rs6000-* | rx-* \ --+ | romp-* | rs6000-* \ -- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ -- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ -- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ -- | sparclite-* \ -- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ -- | tahoe-* | thumb-* \ -- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ -- | tron-* \ --- | ubicom32-* \ -- | v850-* | v850e-* | vax-* \ -- | we32k-* \ -- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ -- | xstormy16-* | xtensa*-* \ -- | ymp-* \ -- | z8k-* | z80-*) -- ;; -- # Recognize the basic CPU types without company name, with glob match. --@@ -1294,17 +1291,17 @@ case $os in -- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ -- | -uxpv* | -beos* | -mpeix* | -udk* \ -- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ -- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ -- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ -- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ -- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ --- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) --+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -winmo*) -- # Remember, each alternative MUST END IN *, to match a version number. -- ;; -- -qnx*) -- case $basic_machine in -- x86-* | i*86-*) -- ;; -- *) -- os=-nto$os --@@ -1336,16 +1333,19 @@ case $os in -- os=`echo $os | sed -e 's|sunos6|solaris3|'` -- ;; -- -opened*) -- os=-openedition -- ;; -- -os400*) -- os=-os400 -- ;; --+ -wince-winmo*) --+ os=-wince-winmo --+ ;; -- -wince*) -- os=-wince -- ;; -- -osfrose*) -- os=-osfrose -- ;; -- -osf*) -- os=-osf --@@ -1427,16 +1427,19 @@ case $os in -- os=-kaos -- ;; -- -zvmoe) -- os=-zvmoe -- ;; -- -dicos*) -- os=-dicos -- ;; --+ -android*) --+ os=-android --+ ;; -- -none) -- ;; -- *) -- # Get rid of the `-' at the beginning of $os. -- os=`echo $os | sed 's/[^-]*-//'` -- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 -- exit 1 -- ;; --@@ -1681,16 +1684,19 @@ case $basic_machine in -- vendor=apple -- ;; -- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -- vendor=atari -- ;; -- -vos*) -- vendor=stratus -- ;; --+ *-android*|*-linuxandroid*) --+ vendor=linux- --+ ;; -- esac -- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` -- ;; -- esac -- -- echo $basic_machine$os -- exit -- --diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure ----- a/js/src/ctypes/libffi/configure --+++ b/js/src/ctypes/libffi/configure --@@ -8903,17 +8903,17 @@ if test -z "$aix_libpath"; then aix_libp -- # Tell ltmain to make .dll files, not .so files. -- shrext_cmds=".dll" -- # FIXME: Setting linknames here is a bad hack. -- archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' -- # The linker will automatically build a .lib file if we build a DLL. -- old_archive_from_new_cmds='true' -- # FIXME: Should let the user specify the lib program. -- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' --- fix_srcfile_path='`cygpath -w "$srcfile"`' --+ fix_srcfile_path='' -- enable_shared_with_static_runtimes=yes -- ;; -- -- darwin* | rhapsody*) -- -- -- archive_cmds_need_lc=no -- hardcode_direct=no --@@ -12270,20 +12270,20 @@ fi -- -- if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5 -- $as_echo_n "checking assembler supports pc related relocs... " >&6; } -- if test "${libffi_cv_as_x86_pcrel+set}" = set; then : -- $as_echo_n "(cached) " >&6 -- else -- --- libffi_cv_as_x86_pcrel=yes --+ libffi_cv_as_x86_pcrel=no -- echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s --- if $CC $CFLAGS -c conftest.s 2>&1 | $EGREP -i 'illegal|warning' > /dev/null; then --- libffi_cv_as_x86_pcrel=no --+ if $CC $CFLAGS -c conftest.s > /dev/null; then --+ libffi_cv_as_x86_pcrel=yes -- fi -- -- fi -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_pcrel" >&5 -- $as_echo "$libffi_cv_as_x86_pcrel" >&6; } -- if test "x$libffi_cv_as_x86_pcrel" = xyes; then -- -- $as_echo "#define HAVE_AS_X86_PCREL 1" >>confdefs.h --diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac ----- a/js/src/ctypes/libffi/configure.ac --+++ b/js/src/ctypes/libffi/configure.ac --@@ -272,20 +272,20 @@ if test x$TARGET = xSPARC; then -- AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1, -- [Define if your assembler supports .register.]) -- fi -- fi -- -- if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then -- AC_CACHE_CHECK([assembler supports pc related relocs], -- libffi_cv_as_x86_pcrel, [ --- libffi_cv_as_x86_pcrel=yes --+ libffi_cv_as_x86_pcrel=no -- echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s --- if $CC $CFLAGS -c conftest.s 2>&1 | $EGREP -i 'illegal|warning' > /dev/null; then --- libffi_cv_as_x86_pcrel=no --+ if $CC $CFLAGS -c conftest.s > /dev/null; then --+ libffi_cv_as_x86_pcrel=yes -- fi -- ]) -- if test "x$libffi_cv_as_x86_pcrel" = xyes; then -- AC_DEFINE(HAVE_AS_X86_PCREL, 1, -- [Define if your assembler supports PC relative relocs.]) -- fi -- -- AC_CACHE_CHECK([assembler .ascii pseudo-op support], --diff --git a/js/src/ctypes/libffi/include/ffi.h.in b/js/src/ctypes/libffi/include/ffi.h.in ----- a/js/src/ctypes/libffi/include/ffi.h.in --+++ b/js/src/ctypes/libffi/include/ffi.h.in --@@ -72,25 +72,37 @@ extern "C" { -- #endif -- -- #include -- #include -- -- /* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). -- But we can find it either under the correct ANSI name, or under GNU -- C's internal name. */ --+ --+#define FFI_64_BIT_MAX 9223372036854775807 --+ -- #ifdef LONG_LONG_MAX -- # define FFI_LONG_LONG_MAX LONG_LONG_MAX -- #else -- # ifdef LLONG_MAX -- # define FFI_LONG_LONG_MAX LLONG_MAX -- # else -- # ifdef __GNUC__ -- # define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ -- # endif --+# ifdef _AIX --+# ifndef __PPC64__ --+# if defined (__IBMC__) || defined (__IBMCPP__) --+# define FFI_LONG_LONG_MAX LONGLONG_MAX --+# endif --+# endif /* __PPC64__ */ --+# undef FFI_64_BIT_MAX --+# define FFI_64_BIT_MAX 9223372036854775807LL --+# endif -- # endif -- #endif -- -- /* The closure code assumes that this works on pointers, i.e. a size_t */ -- /* can hold a pointer. */ -- -- typedef struct _ffi_type -- { --@@ -127,27 +139,27 @@ typedef struct _ffi_type -- #elif INT_MAX == 9223372036854775807 -- # define ffi_type_uint ffi_type_uint64 -- # define ffi_type_sint ffi_type_sint64 -- #else -- #error "int size not supported" -- #endif -- -- #if LONG_MAX == 2147483647 ---# if FFI_LONG_LONG_MAX != 9223372036854775807 --+# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX -- #error "no 64-bit data type supported" -- # endif ---#elif LONG_MAX != 9223372036854775807 --+#elif LONG_MAX != FFI_64_BIT_MAX -- #error "long size not supported" -- #endif -- -- #if LONG_MAX == 2147483647 -- # define ffi_type_ulong ffi_type_uint32 -- # define ffi_type_slong ffi_type_sint32 ---#elif LONG_MAX == 9223372036854775807 --+#elif LONG_MAX == FFI_64_BIT_MAX -- # define ffi_type_ulong ffi_type_uint64 -- # define ffi_type_slong ffi_type_sint64 -- #else -- #error "long size not supported" -- #endif -- -- /* These are defined in types.c */ -- extern ffi_type ffi_type_void; --@@ -190,17 +202,17 @@ typedef struct { -- #endif -- } ffi_cif; -- -- /* ---- Definitions for the raw API -------------------------------------- */ -- -- #ifndef FFI_SIZEOF_ARG -- # if LONG_MAX == 2147483647 -- # define FFI_SIZEOF_ARG 4 ---# elif LONG_MAX == 9223372036854775807 --+# elif LONG_MAX == FFI_64_BIT_MAX -- # define FFI_SIZEOF_ARG 8 -- # endif -- #endif -- -- #ifndef FFI_SIZEOF_JAVA_RAW -- # define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG -- #endif -- --diff --git a/js/src/ctypes/libffi/src/arm/ffi.c b/js/src/ctypes/libffi/src/arm/ffi.c ----- a/js/src/ctypes/libffi/src/arm/ffi.c --+++ b/js/src/ctypes/libffi/src/arm/ffi.c --@@ -24,22 +24,30 @@ -- DEALINGS IN THE SOFTWARE. -- ----------------------------------------------------------------------- */ -- -- #include -- #include -- -- #include -- --+/* Forward declares. */ --+static int vfp_type_p (ffi_type *); --+static void layout_vfp_args (ffi_cif *); --+ -- /* ffi_prep_args is called by the assembly routine once stack space --- has been allocated for the function's arguments */ --- ---void ffi_prep_args(char *stack, extended_cif *ecif) --+ has been allocated for the function's arguments --+ --+ The vfp_space parameter is the load area for VFP regs, the return --+ value is cif->vfp_used (word bitset of VFP regs used for passing --+ arguments). These are only used for the VFP hard-float ABI. --+*/ --+int ffi_prep_args(char *stack, extended_cif *ecif, float *vfp_space) -- { --- register unsigned int i; --+ register unsigned int i, vi = 0; -- register void **p_argv; -- register char *argp; -- register ffi_type **p_arg; -- -- argp = stack; -- -- if ( ecif->cif->flags == FFI_TYPE_STRUCT ) { -- *(void **) argp = ecif->rvalue; --@@ -49,16 +57,31 @@ void ffi_prep_args(char *stack, extended -- p_argv = ecif->avalue; -- -- for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; -- (i != 0); -- i--, p_arg++) -- { -- size_t z; -- --+ /* Allocated in VFP registers. */ --+ if (ecif->cif->abi == FFI_VFP --+ && vi < ecif->cif->vfp_nargs && vfp_type_p (*p_arg)) --+ { --+ float* vfp_slot = vfp_space + ecif->cif->vfp_args[vi++]; --+ if ((*p_arg)->type == FFI_TYPE_FLOAT) --+ *((float*)vfp_slot) = *((float*)*p_argv); --+ else if ((*p_arg)->type == FFI_TYPE_DOUBLE) --+ *((double*)vfp_slot) = *((double*)*p_argv); --+ else --+ memcpy(vfp_slot, *p_argv, (*p_arg)->size); --+ p_argv++; --+ continue; --+ } --+ -- /* Align if necessary */ -- if (((*p_arg)->alignment - 1) & (unsigned) argp) { -- argp = (char *) ALIGN(argp, (*p_arg)->alignment); -- } -- -- if ((*p_arg)->type == FFI_TYPE_STRUCT) -- argp = (char *) ALIGN(argp, 4); -- --@@ -98,23 +121,25 @@ void ffi_prep_args(char *stack, extended -- } -- else -- { -- memcpy(argp, *p_argv, z); -- } -- p_argv++; -- argp += z; -- } --- --- return; --+ --+ /* Indicate the VFP registers used. */ --+ return ecif->cif->vfp_used; -- } -- -- /* Perform machine dependent cif processing */ -- ffi_status ffi_prep_cif_machdep(ffi_cif *cif) -- { --+ int type_code; -- /* Round the stack up to a multiple of 8 bytes. This isn't needed -- everywhere, but it is on some platforms, and it doesn't harm anything -- when it isn't needed. */ -- cif->bytes = (cif->bytes + 7) & ~7; -- -- /* Set the return type flag */ -- switch (cif->rtype->type) -- { --@@ -125,137 +150,176 @@ ffi_status ffi_prep_cif_machdep(ffi_cif -- break; -- -- case FFI_TYPE_SINT64: -- case FFI_TYPE_UINT64: -- cif->flags = (unsigned) FFI_TYPE_SINT64; -- break; -- -- case FFI_TYPE_STRUCT: --- if (cif->rtype->size <= 4) --+ if (cif->abi == FFI_VFP --+ && (type_code = vfp_type_p (cif->rtype)) != 0) --+ { --+ /* A Composite Type passed in VFP registers, either --+ FFI_TYPE_STRUCT_VFP_FLOAT or FFI_TYPE_STRUCT_VFP_DOUBLE. */ --+ cif->flags = (unsigned) type_code; --+ } --+ else if (cif->rtype->size <= 4) -- /* A Composite Type not larger than 4 bytes is returned in r0. */ -- cif->flags = (unsigned)FFI_TYPE_INT; -- else -- /* A Composite Type larger than 4 bytes, or whose size cannot -- be determined statically ... is stored in memory at an -- address passed [in r0]. */ -- cif->flags = (unsigned)FFI_TYPE_STRUCT; -- break; -- -- default: -- cif->flags = FFI_TYPE_INT; -- break; -- } -- --+ /* Map out the register placements of VFP register args. --+ The VFP hard-float calling conventions are slightly more sophisticated than --+ the base calling conventions, so we do it here instead of in ffi_prep_args(). */ --+ if (cif->abi == FFI_VFP) --+ layout_vfp_args (cif); --+ -- return FFI_OK; -- } -- ---extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, --- unsigned, unsigned, unsigned *, void (*fn)(void)); --+/* Prototypes for assembly functions, in sysv.S */ --+extern void ffi_call_SYSV (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *); --+extern void ffi_call_VFP (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *); -- -- void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) -- { -- extended_cif ecif; -- -- int small_struct = (cif->flags == FFI_TYPE_INT -- && cif->rtype->type == FFI_TYPE_STRUCT); --+ int vfp_struct = (cif->flags == FFI_TYPE_STRUCT_VFP_FLOAT --+ || cif->flags == FFI_TYPE_STRUCT_VFP_DOUBLE); -- -- ecif.cif = cif; -- ecif.avalue = avalue; -- -- unsigned int temp; -- -- /* If the return value is a struct and we don't have a return */ -- /* value address then we need to make one */ -- -- if ((rvalue == NULL) && -- (cif->flags == FFI_TYPE_STRUCT)) -- { -- ecif.rvalue = alloca(cif->rtype->size); -- } -- else if (small_struct) -- ecif.rvalue = &temp; --+ else if (vfp_struct) --+ { --+ /* Largest case is double x 4. */ --+ ecif.rvalue = alloca(32); --+ } -- else -- ecif.rvalue = rvalue; -- -- switch (cif->abi) -- { -- case FFI_SYSV: --- ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, --- fn); --+ ffi_call_SYSV (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue); --+ break; -- --+ case FFI_VFP: --+ ffi_call_VFP (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue); -- break; --+ -- default: -- FFI_ASSERT(0); -- break; -- } -- if (small_struct) -- memcpy (rvalue, &temp, cif->rtype->size); --+ else if (vfp_struct) --+ memcpy (rvalue, ecif.rvalue, cif->rtype->size); -- } -- -- /** private members **/ -- -- static void ffi_prep_incoming_args_SYSV (char *stack, void **ret, --- void** args, ffi_cif* cif); --+ void** args, ffi_cif* cif, float *vfp_stack); -- -- void ffi_closure_SYSV (ffi_closure *); -- --+void ffi_closure_VFP (ffi_closure *); --+ -- /* This function is jumped to by the trampoline */ -- -- unsigned int ---ffi_closure_SYSV_inner (closure, respp, args) --+ffi_closure_SYSV_inner (closure, respp, args, vfp_args) -- ffi_closure *closure; -- void **respp; -- void *args; --+ void *vfp_args; -- { -- // our various things... -- ffi_cif *cif; -- void **arg_area; -- -- cif = closure->cif; -- arg_area = (void**) alloca (cif->nargs * sizeof (void*)); -- -- /* this call will initialize ARG_AREA, such that each -- * element in that array points to the corresponding -- * value on the stack; and if the function returns -- * a structure, it will re-set RESP to point to the -- * structure return address. */ -- --- ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif); --+ ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args); -- -- (closure->fun) (cif, *respp, arg_area, closure->user_data); -- -- return cif->flags; -- } -- -- /*@-exportheader@*/ -- static void -- ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, --- void **avalue, ffi_cif *cif) --+ void **avalue, ffi_cif *cif, --+ /* Used only under VFP hard-float ABI. */ --+ float *vfp_stack) -- /*@=exportheader@*/ -- { --- register unsigned int i; --+ register unsigned int i, vi = 0; -- register void **p_argv; -- register char *argp; -- register ffi_type **p_arg; -- -- argp = stack; -- -- if ( cif->flags == FFI_TYPE_STRUCT ) { -- *rvalue = *(void **) argp; -- argp += 4; -- } -- -- p_argv = avalue; -- -- for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) -- { -- size_t z; --+ size_t alignment; --+ --+ if (cif->abi == FFI_VFP --+ && vi < cif->vfp_nargs && vfp_type_p (*p_arg)) --+ { --+ *p_argv++ = (void*)(vfp_stack + cif->vfp_args[vi++]); --+ continue; --+ } -- --- size_t alignment = (*p_arg)->alignment; --+ alignment = (*p_arg)->alignment; -- if (alignment < 4) -- alignment = 4; -- /* Align if necessary */ -- if ((alignment - 1) & (unsigned) argp) { -- argp = (char *) ALIGN(argp, alignment); -- } -- -- z = (*p_arg)->size; --@@ -290,20 +354,147 @@ ffi_prep_incoming_args_SYSV(char *stack, -- -- ffi_status -- ffi_prep_closure_loc (ffi_closure* closure, -- ffi_cif* cif, -- void (*fun)(ffi_cif*,void*,void**,void*), -- void *user_data, -- void *codeloc) -- { --- FFI_ASSERT (cif->abi == FFI_SYSV); --+ void (*closure_func)(ffi_closure*) = NULL; -- --+ if (cif->abi == FFI_SYSV) --+ closure_func = &ffi_closure_SYSV; --+ else if (cif->abi == FFI_VFP) --+ closure_func = &ffi_closure_VFP; --+ else --+ FFI_ASSERT (0); --+ -- FFI_INIT_TRAMPOLINE (&closure->tramp[0], \ --- &ffi_closure_SYSV, \ --+ closure_func, \ -- codeloc); -- -- closure->cif = cif; -- closure->user_data = user_data; -- closure->fun = fun; -- -- return FFI_OK; -- } --+ --+/* Below are routines for VFP hard-float support. */ --+ --+static int rec_vfp_type_p (ffi_type *t, int *elt, int *elnum) --+{ --+ switch (t->type) --+ { --+ case FFI_TYPE_FLOAT: --+ case FFI_TYPE_DOUBLE: --+ *elt = (int) t->type; --+ *elnum = 1; --+ return 1; --+ --+ case FFI_TYPE_STRUCT_VFP_FLOAT: --+ *elt = FFI_TYPE_FLOAT; --+ *elnum = t->size / sizeof (float); --+ return 1; --+ --+ case FFI_TYPE_STRUCT_VFP_DOUBLE: --+ *elt = FFI_TYPE_DOUBLE; --+ *elnum = t->size / sizeof (double); --+ return 1; --+ --+ case FFI_TYPE_STRUCT:; --+ { --+ int base_elt = 0, total_elnum = 0; --+ ffi_type **el = t->elements; --+ while (*el) --+ { --+ int el_elt = 0, el_elnum = 0; --+ if (! rec_vfp_type_p (*el, &el_elt, &el_elnum) --+ || (base_elt && base_elt != el_elt) --+ || total_elnum + el_elnum > 4) --+ return 0; --+ base_elt = el_elt; --+ total_elnum += el_elnum; --+ el++; --+ } --+ *elnum = total_elnum; --+ *elt = base_elt; --+ return 1; --+ } --+ default: ; --+ } --+ return 0; --+} --+ --+static int vfp_type_p (ffi_type *t) --+{ --+ int elt, elnum; --+ if (rec_vfp_type_p (t, &elt, &elnum)) --+ { --+ if (t->type == FFI_TYPE_STRUCT) --+ { --+ if (elnum == 1) --+ t->type = elt; --+ else --+ t->type = (elt == FFI_TYPE_FLOAT --+ ? FFI_TYPE_STRUCT_VFP_FLOAT --+ : FFI_TYPE_STRUCT_VFP_DOUBLE); --+ } --+ return (int) t->type; --+ } --+ return 0; --+} --+ --+static void place_vfp_arg (ffi_cif *cif, ffi_type *t) --+{ --+ int reg = cif->vfp_reg_free; --+ int nregs = t->size / sizeof (float); --+ int align = ((t->type == FFI_TYPE_STRUCT_VFP_FLOAT --+ || t->type == FFI_TYPE_FLOAT) ? 1 : 2); --+ /* Align register number. */ --+ if ((reg & 1) && align == 2) --+ reg++; --+ while (reg + nregs <= 16) --+ { --+ int s, new_used = 0; --+ for (s = reg; s < reg + nregs; s++) --+ { --+ new_used |= (1 << s); --+ if (cif->vfp_used & (1 << s)) --+ { --+ reg += align; --+ goto next_reg; --+ } --+ } --+ /* Found regs to allocate. */ --+ cif->vfp_used |= new_used; --+ cif->vfp_args[cif->vfp_nargs++] = reg; --+ --+ /* Update vfp_reg_free. */ --+ if (cif->vfp_used & (1 << cif->vfp_reg_free)) --+ { --+ reg += nregs; --+ while (cif->vfp_used & (1 << reg)) --+ reg += 1; --+ cif->vfp_reg_free = reg; --+ } --+ return; --+ next_reg: ; --+ } --+} --+ --+static void layout_vfp_args (ffi_cif *cif) --+{ --+ int i; --+ /* Init VFP fields */ --+ cif->vfp_used = 0; --+ cif->vfp_nargs = 0; --+ cif->vfp_reg_free = 0; --+ memset (cif->vfp_args, -1, 16); /* Init to -1. */ --+ --+ for (i = 0; i < cif->nargs; i++) --+ { --+ ffi_type *t = cif->arg_types[i]; --+ if (vfp_type_p (t)) --+ place_vfp_arg (cif, t); --+ } --+} --diff --git a/js/src/ctypes/libffi/src/arm/ffitarget.h b/js/src/ctypes/libffi/src/arm/ffitarget.h ----- a/js/src/ctypes/libffi/src/arm/ffitarget.h --+++ b/js/src/ctypes/libffi/src/arm/ffitarget.h --@@ -29,21 +29,35 @@ -- -- #ifndef LIBFFI_ASM -- typedef unsigned long ffi_arg; -- typedef signed long ffi_sarg; -- -- typedef enum ffi_abi { -- FFI_FIRST_ABI = 0, -- FFI_SYSV, --+ FFI_VFP, -- FFI_LAST_ABI, --+#ifdef __ARM_PCS_VFP --+ FFI_DEFAULT_ABI = FFI_VFP --+#else -- FFI_DEFAULT_ABI = FFI_SYSV --+#endif -- } ffi_abi; -- #endif -- --+#define FFI_EXTRA_CIF_FIELDS \ --+ int vfp_used; \ --+ short vfp_reg_free, vfp_nargs; \ --+ signed char vfp_args[16] \ --+ --+/* Internally used. */ --+#define FFI_TYPE_STRUCT_VFP_FLOAT (FFI_TYPE_LAST + 1) --+#define FFI_TYPE_STRUCT_VFP_DOUBLE (FFI_TYPE_LAST + 2) --+ -- /* ---- Definitions for closures ----------------------------------------- */ -- -- #define FFI_CLOSURES 1 -- #define FFI_TRAMPOLINE_SIZE 20 -- #define FFI_NATIVE_RAW_API 0 -- -- #endif -- --diff --git a/js/src/ctypes/libffi/src/arm/sysv.S b/js/src/ctypes/libffi/src/arm/sysv.S ----- a/js/src/ctypes/libffi/src/arm/sysv.S --+++ b/js/src/ctypes/libffi/src/arm/sysv.S --@@ -137,54 +137,52 @@ -- ldr\cond pc, [sp], #4 -- .else -- ldm\cond\dirn sp!, {\regs, pc} -- .endif -- #endif -- .endm -- -- --- @ r0: ffi_prep_args --+ @ r0: fn -- @ r1: &ecif -- @ r2: cif->bytes -- @ r3: fig->flags -- @ sp+0: ecif.rvalue --- @ sp+4: fn -- -- @ This assumes we are using gas. -- ARM_FUNC_START ffi_call_SYSV -- @ Save registers -- stmfd sp!, {r0-r3, fp, lr} -- UNWIND .save {r0-r3, fp, lr} -- mov fp, sp -- -- UNWIND .setfp fp, sp -- -- @ Make room for all of the new args. -- sub sp, fp, r2 -- -- @ Place all of the ffi_prep_args in position --- mov ip, r0 -- mov r0, sp -- @ r1 already set -- -- @ Call ffi_prep_args(stack, &ecif) --- call_reg(ip) --+ bl ffi_prep_args -- -- @ move first 4 parameters in registers -- ldmia sp, {r0-r3} -- -- @ and adjust stack --- ldr ip, [fp, #8] --- cmp ip, #16 --- movhs ip, #16 --- add sp, sp, ip --+ sub lr, fp, sp @ cif->bytes == fp - sp --+ ldr ip, [fp] @ load fn() in advance --+ cmp lr, #16 --+ movhs lr, #16 --+ add sp, sp, lr -- -- @ call (fn) (...) --- ldr ip, [fp, #28] -- call_reg(ip) -- -- @ Remove the space we pushed for the args -- mov sp, fp -- -- @ Load r2 with the pointer to storage for the return value -- ldr r2, [sp, #24] -- --@@ -225,16 +223,111 @@ ARM_FUNC_START ffi_call_SYSV -- -- LSYM(Lepilogue): -- RETLDM "r0-r3,fp" -- -- .ffi_call_SYSV_end: -- UNWIND .fnend -- .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) -- --+ --+ @ r0: fn --+ @ r1: &ecif --+ @ r2: cif->bytes --+ @ r3: fig->flags --+ @ sp+0: ecif.rvalue --+ --+ARM_FUNC_START ffi_call_VFP --+ @ Save registers --+ stmfd sp!, {r0-r3, fp, lr} --+ UNWIND .save {r0-r3, fp, lr} --+ mov fp, sp --+ UNWIND .setfp fp, sp --+ --+ @ Make room for all of the new args. --+ sub sp, sp, r2 --+ --+ @ Make room for loading VFP args --+ sub sp, sp, #64 --+ --+ @ Place all of the ffi_prep_args in position --+ mov r0, sp --+ @ r1 already set --+ sub r2, fp, #64 @ VFP scratch space --+ --+ @ Call ffi_prep_args(stack, &ecif, vfp_space) --+ bl ffi_prep_args --+ --+ @ Load VFP register args if needed --+ cmp r0, #0 --+ beq LSYM(Lbase_args) --+ --+ @ Load only d0 if possible --+ cmp r0, #3 --+ sub ip, fp, #64 --+ flddle d0, [ip] --+ fldmiadgt ip, {d0-d7} --+ --+LSYM(Lbase_args): --+ @ move first 4 parameters in registers --+ ldmia sp, {r0-r3} --+ --+ @ and adjust stack --+ sub lr, ip, sp @ cif->bytes == (fp - 64) - sp --+ ldr ip, [fp] @ load fn() in advance --+ cmp lr, #16 --+ movhs lr, #16 --+ add sp, sp, lr --+ --+ @ call (fn) (...) --+ call_reg(ip) --+ --+ @ Remove the space we pushed for the args --+ mov sp, fp --+ --+ @ Load r2 with the pointer to storage for --+ @ the return value --+ ldr r2, [sp, #24] --+ --+ @ Load r3 with the return type code --+ ldr r3, [sp, #12] --+ --+ @ If the return value pointer is NULL, --+ @ assume no return value. --+ cmp r2, #0 --+ beq LSYM(Lepilogue_vfp) --+ --+ cmp r3, #FFI_TYPE_INT --+ streq r0, [r2] --+ beq LSYM(Lepilogue_vfp) --+ --+ cmp r3, #FFI_TYPE_SINT64 --+ stmeqia r2, {r0, r1} --+ beq LSYM(Lepilogue_vfp) --+ --+ cmp r3, #FFI_TYPE_FLOAT --+ fstseq s0, [r2] --+ beq LSYM(Lepilogue_vfp) --+ --+ cmp r3, #FFI_TYPE_DOUBLE --+ fstdeq d0, [r2] --+ beq LSYM(Lepilogue_vfp) --+ --+ cmp r3, #FFI_TYPE_STRUCT_VFP_FLOAT --+ cmpne r3, #FFI_TYPE_STRUCT_VFP_DOUBLE --+ fstmiadeq r2, {d0-d3} --+ --+LSYM(Lepilogue_vfp): --+ RETLDM "r0-r3,fp" --+ --+.ffi_call_VFP_end: --+ UNWIND .fnend --+ .size CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP) --+ --+ -- /* -- unsigned int FFI_HIDDEN -- ffi_closure_SYSV_inner (closure, respp, args) -- ffi_closure *closure; -- void **respp; -- void *args; -- */ -- --@@ -297,11 +390,73 @@ ARM_FUNC_START ffi_closure_SYSV -- ldfd f0, [sp] -- b .Lclosure_epilogue -- #endif -- -- .ffi_closure_SYSV_end: -- UNWIND .fnend -- .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) -- --+ --+ARM_FUNC_START ffi_closure_VFP --+ fstmfdd sp!, {d0-d7} --+ @ r0-r3, then d0-d7 --+ UNWIND .pad #80 --+ add ip, sp, #80 --+ stmfd sp!, {ip, lr} --+ UNWIND .save {r0, lr} --+ add r2, sp, #72 --+ add r3, sp, #8 --+ .pad #72 --+ sub sp, sp, #72 --+ str sp, [sp, #64] --+ add r1, sp, #64 --+ bl ffi_closure_SYSV_inner --+ --+ cmp r0, #FFI_TYPE_INT --+ beq .Lretint_vfp --+ --+ cmp r0, #FFI_TYPE_FLOAT --+ beq .Lretfloat_vfp --+ --+ cmp r0, #FFI_TYPE_DOUBLE --+ cmpne r0, #FFI_TYPE_LONGDOUBLE --+ beq .Lretdouble_vfp --+ --+ cmp r0, #FFI_TYPE_SINT64 --+ beq .Lretlonglong_vfp --+ --+ cmp r0, #FFI_TYPE_STRUCT_VFP_FLOAT --+ beq .Lretfloat_struct_vfp --+ --+ cmp r0, #FFI_TYPE_STRUCT_VFP_DOUBLE --+ beq .Lretdouble_struct_vfp --+ --+.Lclosure_epilogue_vfp: --+ add sp, sp, #72 --+ ldmfd sp, {sp, pc} --+ --+.Lretfloat_vfp: --+ flds s0, [sp] --+ b .Lclosure_epilogue_vfp --+.Lretdouble_vfp: --+ fldd d0, [sp] --+ b .Lclosure_epilogue_vfp --+.Lretint_vfp: --+ ldr r0, [sp] --+ b .Lclosure_epilogue_vfp --+.Lretlonglong_vfp: --+ ldmia sp, {r0, r1} --+ b .Lclosure_epilogue_vfp --+.Lretfloat_struct_vfp: --+ fldmiad sp, {d0-d1} --+ b .Lclosure_epilogue_vfp --+.Lretdouble_struct_vfp: --+ fldmiad sp, {d0-d3} --+ b .Lclosure_epilogue_vfp --+ --+.ffi_closure_VFP_end: --+ UNWIND .fnend --+ .size CNAME(ffi_closure_VFP),.ffi_closure_VFP_end-CNAME(ffi_closure_VFP) --+ -- #if defined __ELF__ && defined __linux__ -- .section .note.GNU-stack,"",%progbits -- #endif --diff --git a/js/src/ctypes/libffi/src/x86/ffi64.c b/js/src/ctypes/libffi/src/x86/ffi64.c ----- a/js/src/ctypes/libffi/src/x86/ffi64.c --+++ b/js/src/ctypes/libffi/src/x86/ffi64.c --@@ -373,29 +373,29 @@ ffi_prep_cif_machdep (ffi_cif *cif) -- || gprcount + ngpr > MAX_GPR_REGS -- || ssecount + nsse > MAX_SSE_REGS) -- { -- long align = cif->arg_types[i]->alignment; -- -- if (align < 8) -- align = 8; -- --- bytes = ALIGN(bytes, align); --+ bytes = ALIGN (bytes, align); -- bytes += cif->arg_types[i]->size; -- } -- else -- { -- gprcount += ngpr; -- ssecount += nsse; -- } -- } -- if (ssecount) -- flags |= 1 << 11; -- cif->flags = flags; --- cif->bytes = bytes; --+ cif->bytes = ALIGN (bytes, 8); -- -- return FFI_OK; -- } -- -- void -- ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) -- { -- enum x86_64_reg_class classes[MAX_CLASSES]; --diff --git a/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp b/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp ----- a/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp --+++ b/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp --@@ -261,16 +261,66 @@ proc dg-xfail-if { args } { -- set args [lreplace $args 0 0] -- set selector "target [join [lindex $args 1]]" -- if { [dg-process-target $selector] == "S" } { -- global compiler_conditional_xfail_data -- set compiler_conditional_xfail_data $args -- } -- } -- --+proc check-flags { args } { --+ --+ # The args are within another list; pull them out. --+ set args [lindex $args 0] --+ --+ # The next two arguments are optional. If they were not specified, --+ # use the defaults. --+ if { [llength $args] == 2 } { --+ lappend $args [list "*"] --+ } --+ if { [llength $args] == 3 } { --+ lappend $args [list ""] --+ } --+ --+ # If the option strings are the defaults, or the same as the --+ # defaults, there is no need to call check_conditional_xfail to --+ # compare them to the actual options. --+ if { [string compare [lindex $args 2] "*"] == 0 --+ && [string compare [lindex $args 3] "" ] == 0 } { --+ set result 1 --+ } else { --+ # The target list might be an effective-target keyword, so replace --+ # the original list with "*-*-*", since we already know it matches. --+ set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]] --+ } --+ --+ return $result --+} --+ --+proc dg-skip-if { args } { --+ # Verify the number of arguments. The last two are optional. --+ set args [lreplace $args 0 0] --+ if { [llength $args] < 2 || [llength $args] > 4 } { --+ error "dg-skip-if 2: need 2, 3, or 4 arguments" --+ } --+ --+ # Don't bother if we're already skipping the test. --+ upvar dg-do-what dg-do-what --+ if { [lindex ${dg-do-what} 1] == "N" } { --+ return --+ } --+ --+ set selector [list target [lindex $args 1]] --+ if { [dg-process-target $selector] == "S" } { --+ if [check-flags $args] { --+ upvar dg-do-what dg-do-what --+ set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] --+ } --+ } --+} -- -- # We need to make sure that additional_files and additional_sources -- # are both cleared out after every test. It is not enough to clear -- # them out *before* the next test run because gcc-target-compile gets -- # run directly from some .exp files (outside of any test). (Those -- # uses should eventually be eliminated.) -- -- # Because the DG framework doesn't provide a hook that is run at the --diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c ----- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c --+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c --@@ -1,16 +1,18 @@ -- /* Area: ffi_call, closure_call -- Purpose: Test doubles passed in variable argument lists. -- Limitations: none. -- PR: none. -- Originator: Blake Chaffin 6/6/2007 */ -- -- /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ -- /* { dg-output "" { xfail avr32*-*-* } } */ --+/* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */ --+ -- #include "ffitest.h" -- -- static void -- cls_double_va_fn(ffi_cif* cif __UNUSED__, void* resp, -- void** args, void* userdata __UNUSED__) -- { -- char* format = *(char**)args[0]; -- double doubleValue = *(double*)args[1]; --diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c ----- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c --+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c --@@ -1,16 +1,18 @@ -- /* Area: ffi_call, closure_call -- Purpose: Test long doubles passed in variable argument lists. -- Limitations: none. -- PR: none. -- Originator: Blake Chaffin 6/6/2007 */ -- -- /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ -- /* { dg-output "" { xfail avr32*-*-* x86_64-*-mingw* } } */ --+/* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */ --+ -- #include "ffitest.h" -- -- static void -- cls_longdouble_va_fn(ffi_cif* cif __UNUSED__, void* resp, -- void** args, void* userdata __UNUSED__) -- { -- char* format = *(char**)args[0]; -- long double ldValue = *(long double*)args[1]; -diff --git a/js/src/ctypes/patches-libffi/01-bug-670719.patch b/js/src/ctypes/patches-libffi/01-bug-670719.patch -deleted file mode 100644 ---- a/js/src/ctypes/patches-libffi/01-bug-670719.patch -+++ /dev/null -@@ -1,50 +0,0 @@ --# HG changeset patch --# Parent e357f3f732a0f3e98f8bd4661de03c9042c5c330 --# User Landry Breuil --treat powerpc-*-openbsd* as powerpc-*-freebsd* -- -- --diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure ----- a/js/src/ctypes/libffi/configure --+++ b/js/src/ctypes/libffi/configure --@@ -11272,17 +11272,17 @@ case "$host" in -- TARGET=POWERPC; TARGETDIR=powerpc -- ;; -- powerpc-*-darwin*) -- TARGET=POWERPC_DARWIN; TARGETDIR=powerpc -- ;; -- powerpc-*-aix* | rs6000-*-aix*) -- TARGET=POWERPC_AIX; TARGETDIR=powerpc -- ;; --- powerpc-*-freebsd*) --+ powerpc-*-freebsd* | powerpc-*-openbsd*) -- TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc -- ;; -- powerpc*-*-rtems*) -- TARGET=POWERPC; TARGETDIR=powerpc -- ;; -- -- s390-*-* | s390x-*-*) -- TARGET=S390; TARGETDIR=s390 --diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac ----- a/js/src/ctypes/libffi/configure.ac --+++ b/js/src/ctypes/libffi/configure.ac --@@ -135,17 +135,17 @@ case "$host" in -- TARGET=POWERPC; TARGETDIR=powerpc -- ;; -- powerpc-*-darwin*) -- TARGET=POWERPC_DARWIN; TARGETDIR=powerpc -- ;; -- powerpc-*-aix* | rs6000-*-aix*) -- TARGET=POWERPC_AIX; TARGETDIR=powerpc -- ;; --- powerpc-*-freebsd*) --+ powerpc-*-freebsd* | powerpc-*-openbsd*) -- TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc -- ;; -- powerpc*-*-rtems*) -- TARGET=POWERPC; TARGETDIR=powerpc -- ;; -- -- s390-*-* | s390x-*-*) -- TARGET=S390; TARGETDIR=s390 -diff --git a/js/src/ctypes/patches-libffi/02-bug-682180.patch b/js/src/ctypes/patches-libffi/02-bug-682180.patch -deleted file mode 100644 ---- a/js/src/ctypes/patches-libffi/02-bug-682180.patch -+++ /dev/null -@@ -1,48 +0,0 @@ --# HG changeset patch --# Parent 5e5eb679345b4d13b8e9ee40e253a97fd665dad3 --diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure ----- a/js/src/ctypes/libffi/configure --+++ b/js/src/ctypes/libffi/configure --@@ -12357,17 +12357,18 @@ fi -- if test "x$libffi_cv_as_string_pseudo_op" = xyes; then -- -- $as_echo "#define HAVE_AS_STRING_PSEUDO_OP 1" >>confdefs.h -- -- fi -- fi -- -- case "$target" in --- *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*) --+ # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages --+ *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*) -- -- $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h -- -- ;; -- esac -- -- if test x$TARGET = xX86_64; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5 --diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac ----- a/js/src/ctypes/libffi/configure.ac --+++ b/js/src/ctypes/libffi/configure.ac --@@ -311,17 +311,18 @@ if test x$TARGET = xX86 || test x$TARGET -- ]) -- if test "x$libffi_cv_as_string_pseudo_op" = xyes; then -- AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1, -- [Define if your assembler supports .string.]) -- fi -- fi -- -- case "$target" in --- *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*) --+ # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages --+ *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*) -- AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1, -- [Cannot use malloc on this target, so, we revert to -- alternative means]) -- ;; -- esac -- -- if test x$TARGET = xX86_64; then -- AC_CACHE_CHECK([assembler supports unwind section type], -diff --git a/js/src/ctypes/patches-libffi/03-bug-712594.patch b/js/src/ctypes/patches-libffi/03-bug-712594.patch -deleted file mode 100644 ---- a/js/src/ctypes/patches-libffi/03-bug-712594.patch -+++ /dev/null -@@ -1,1210 +0,0 @@ --commit 5b9cd52784339a42e417174a55e310e214d435f9 --Author: Anthony Green --Date: Mon Nov 22 15:19:57 2010 -0500 -- -- win64-underscore patch -- --diff --git a/js/src/ctypes/libffi/aclocal.m4 b/js/src/ctypes/libffi/aclocal.m4 ----- a/js/src/ctypes/libffi/aclocal.m4 --+++ b/js/src/ctypes/libffi/aclocal.m4 --@@ -7359,16 +7359,821 @@ func_append () -- eval "$[1]=\$$[1]\$[2]" -- } -- -- _LT_EOF -- ;; -- esac -- ]) -- --+# ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*- --+# --+# Copyright (C) 1999-2006, 2007, 2008 Free Software Foundation, Inc. --+# Written by Thomas Tanner, 1999 --+# --+# This file is free software; the Free Software Foundation gives --+# unlimited permission to copy and/or distribute it, with or without --+# modifications, as long as this notice is preserved. --+ --+# serial 17 LTDL_INIT --+ --+# LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE]) --+# ------------------------------------------ --+# DIRECTORY contains the libltdl sources. It is okay to call this --+# function multiple times, as long as the same DIRECTORY is always given. --+AC_DEFUN([LT_CONFIG_LTDL_DIR], --+[AC_BEFORE([$0], [LTDL_INIT]) --+_$0($*) --+])# LT_CONFIG_LTDL_DIR --+ --+# We break this out into a separate macro, so that we can call it safely --+# internally without being caught accidentally by the sed scan in libtoolize. --+m4_defun([_LT_CONFIG_LTDL_DIR], --+[dnl remove trailing slashes --+m4_pushdef([_ARG_DIR], m4_bpatsubst([$1], [/*$])) --+m4_case(_LTDL_DIR, --+ [], [dnl only set lt_ltdl_dir if _ARG_DIR is not simply `.' --+ m4_if(_ARG_DIR, [.], --+ [], --+ [m4_define([_LTDL_DIR], _ARG_DIR) --+ _LT_SHELL_INIT([lt_ltdl_dir=']_ARG_DIR['])])], --+ [m4_if(_ARG_DIR, _LTDL_DIR, --+ [], --+ [m4_fatal([multiple libltdl directories: `]_LTDL_DIR[', `]_ARG_DIR['])])]) --+m4_popdef([_ARG_DIR]) --+])# _LT_CONFIG_LTDL_DIR --+ --+# Initialise: --+m4_define([_LTDL_DIR], []) --+ --+ --+# _LT_BUILD_PREFIX --+# ---------------- --+# If Autoconf is new enough, expand to `${top_build_prefix}', otherwise --+# to `${top_builddir}/'. --+m4_define([_LT_BUILD_PREFIX], --+[m4_ifdef([AC_AUTOCONF_VERSION], --+ [m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.62]), --+ [-1], [m4_ifdef([_AC_HAVE_TOP_BUILD_PREFIX], --+ [${top_build_prefix}], --+ [${top_builddir}/])], --+ [${top_build_prefix}])], --+ [${top_builddir}/])[]dnl --+]) --+ --+ --+# LTDL_CONVENIENCE --+# ---------------- --+# sets LIBLTDL to the link flags for the libltdl convenience library and --+# LTDLINCL to the include flags for the libltdl header and adds --+# --enable-ltdl-convenience to the configure arguments. Note that --+# AC_CONFIG_SUBDIRS is not called here. LIBLTDL will be prefixed with --+# '${top_build_prefix}' if available, otherwise with '${top_builddir}/', --+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single --+# quotes!). If your package is not flat and you're not using automake, --+# define top_build_prefix, top_builddir, and top_srcdir appropriately --+# in your Makefiles. --+AC_DEFUN([LTDL_CONVENIENCE], --+[AC_BEFORE([$0], [LTDL_INIT])dnl --+dnl Although the argument is deprecated and no longer documented, --+dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one --+dnl here make sure it is the same as any other declaration of libltdl's --+dnl location! This also ensures lt_ltdl_dir is set when configure.ac is --+dnl not yet using an explicit LT_CONFIG_LTDL_DIR. --+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl --+_$0() --+])# LTDL_CONVENIENCE --+ --+# AC_LIBLTDL_CONVENIENCE accepted a directory argument in older libtools, --+# now we have LT_CONFIG_LTDL_DIR: --+AU_DEFUN([AC_LIBLTDL_CONVENIENCE], --+[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) --+_LTDL_CONVENIENCE]) --+ --+dnl aclocal-1.4 backwards compatibility: --+dnl AC_DEFUN([AC_LIBLTDL_CONVENIENCE], []) --+ --+ --+# _LTDL_CONVENIENCE --+# ----------------- --+# Code shared by LTDL_CONVENIENCE and LTDL_INIT([convenience]). --+m4_defun([_LTDL_CONVENIENCE], --+[case $enable_ltdl_convenience in --+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; --+ "") enable_ltdl_convenience=yes --+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; --+esac --+LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdlc.la" --+LTDLDEPS=$LIBLTDL --+LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}" --+ --+AC_SUBST([LIBLTDL]) --+AC_SUBST([LTDLDEPS]) --+AC_SUBST([LTDLINCL]) --+ --+# For backwards non-gettext consistent compatibility... --+INCLTDL="$LTDLINCL" --+AC_SUBST([INCLTDL]) --+])# _LTDL_CONVENIENCE --+ --+ --+# LTDL_INSTALLABLE --+# ---------------- --+# sets LIBLTDL to the link flags for the libltdl installable library --+# and LTDLINCL to the include flags for the libltdl header and adds --+# --enable-ltdl-install to the configure arguments. Note that --+# AC_CONFIG_SUBDIRS is not called from here. If an installed libltdl --+# is not found, LIBLTDL will be prefixed with '${top_build_prefix}' if --+# available, otherwise with '${top_builddir}/', and LTDLINCL will be --+# prefixed with '${top_srcdir}/' (note the single quotes!). If your --+# package is not flat and you're not using automake, define top_build_prefix, --+# top_builddir, and top_srcdir appropriately in your Makefiles. --+# In the future, this macro may have to be called after LT_INIT. --+AC_DEFUN([LTDL_INSTALLABLE], --+[AC_BEFORE([$0], [LTDL_INIT])dnl --+dnl Although the argument is deprecated and no longer documented, --+dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one --+dnl here make sure it is the same as any other declaration of libltdl's --+dnl location! This also ensures lt_ltdl_dir is set when configure.ac is --+dnl not yet using an explicit LT_CONFIG_LTDL_DIR. --+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl --+_$0() --+])# LTDL_INSTALLABLE --+ --+# AC_LIBLTDL_INSTALLABLE accepted a directory argument in older libtools, --+# now we have LT_CONFIG_LTDL_DIR: --+AU_DEFUN([AC_LIBLTDL_INSTALLABLE], --+[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) --+_LTDL_INSTALLABLE]) --+ --+dnl aclocal-1.4 backwards compatibility: --+dnl AC_DEFUN([AC_LIBLTDL_INSTALLABLE], []) --+ --+ --+# _LTDL_INSTALLABLE --+# ----------------- --+# Code shared by LTDL_INSTALLABLE and LTDL_INIT([installable]). --+m4_defun([_LTDL_INSTALLABLE], --+[if test -f $prefix/lib/libltdl.la; then --+ lt_save_LDFLAGS="$LDFLAGS" --+ LDFLAGS="-L$prefix/lib $LDFLAGS" --+ AC_CHECK_LIB([ltdl], [lt_dlinit], [lt_lib_ltdl=yes]) --+ LDFLAGS="$lt_save_LDFLAGS" --+ if test x"${lt_lib_ltdl-no}" = xyes; then --+ if test x"$enable_ltdl_install" != xyes; then --+ # Don't overwrite $prefix/lib/libltdl.la without --enable-ltdl-install --+ AC_MSG_WARN([not overwriting libltdl at $prefix, force with `--enable-ltdl-install']) --+ enable_ltdl_install=no --+ fi --+ elif test x"$enable_ltdl_install" = xno; then --+ AC_MSG_WARN([libltdl not installed, but installation disabled]) --+ fi --+fi --+ --+# If configure.ac declared an installable ltdl, and the user didn't override --+# with --disable-ltdl-install, we will install the shipped libltdl. --+case $enable_ltdl_install in --+ no) ac_configure_args="$ac_configure_args --enable-ltdl-install=no" --+ LIBLTDL="-lltdl" --+ LTDLDEPS= --+ LTDLINCL= --+ ;; --+ *) enable_ltdl_install=yes --+ ac_configure_args="$ac_configure_args --enable-ltdl-install" --+ LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdl.la" --+ LTDLDEPS=$LIBLTDL --+ LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}" --+ ;; --+esac --+ --+AC_SUBST([LIBLTDL]) --+AC_SUBST([LTDLDEPS]) --+AC_SUBST([LTDLINCL]) --+ --+# For backwards non-gettext consistent compatibility... --+INCLTDL="$LTDLINCL" --+AC_SUBST([INCLTDL]) --+])# LTDL_INSTALLABLE --+ --+ --+# _LTDL_MODE_DISPATCH --+# ------------------- --+m4_define([_LTDL_MODE_DISPATCH], --+[dnl If _LTDL_DIR is `.', then we are configuring libltdl itself: --+m4_if(_LTDL_DIR, [], --+ [], --+ dnl if _LTDL_MODE was not set already, the default value is `subproject': --+ [m4_case(m4_default(_LTDL_MODE, [subproject]), --+ [subproject], [AC_CONFIG_SUBDIRS(_LTDL_DIR) --+ _LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"])], --+ [nonrecursive], [_LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"; lt_libobj_prefix="$lt_ltdl_dir/"])], --+ [recursive], [], --+ [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])dnl --+dnl Be careful not to expand twice: --+m4_define([$0], []) --+])# _LTDL_MODE_DISPATCH --+ --+ --+# _LT_LIBOBJ(MODULE_NAME) --+# ----------------------- --+# Like AC_LIBOBJ, except that MODULE_NAME goes into _LT_LIBOBJS instead --+# of into LIBOBJS. --+AC_DEFUN([_LT_LIBOBJ], [ --+ m4_pattern_allow([^_LT_LIBOBJS$]) --+ _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" --+])# _LT_LIBOBJS --+ --+ --+# LTDL_INIT([OPTIONS]) --+# -------------------- --+# Clients of libltdl can use this macro to allow the installer to --+# choose between a shipped copy of the ltdl sources or a preinstalled --+# version of the library. If the shipped ltdl sources are not in a --+# subdirectory named libltdl, the directory name must be given by --+# LT_CONFIG_LTDL_DIR. --+AC_DEFUN([LTDL_INIT], --+[dnl Parse OPTIONS --+_LT_SET_OPTIONS([$0], [$1]) --+ --+dnl We need to keep our own list of libobjs separate from our parent project, --+dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while --+dnl we look for our own LIBOBJs. --+m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) --+m4_pushdef([AC_LIBSOURCES]) --+ --+dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: --+m4_if(_LTDL_MODE, [], --+ [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) --+ m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], --+ [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) --+ --+AC_ARG_WITH([included_ltdl], --+ [AS_HELP_STRING([--with-included-ltdl], --+ [use the GNU ltdl sources included here])]) --+ --+if test "x$with_included_ltdl" != xyes; then --+ # We are not being forced to use the included libltdl sources, so --+ # decide whether there is a useful installed version we can use. --+ AC_CHECK_HEADER([ltdl.h], --+ [AC_CHECK_DECL([lt_dlinterface_register], --+ [AC_CHECK_LIB([ltdl], [lt_dladvise_preload], --+ [with_included_ltdl=no], --+ [with_included_ltdl=yes])], --+ [with_included_ltdl=yes], --+ [AC_INCLUDES_DEFAULT --+ #include ])], --+ [with_included_ltdl=yes], --+ [AC_INCLUDES_DEFAULT] --+ ) --+fi --+ --+dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE --+dnl was called yet, then for old times' sake, we assume libltdl is in an --+dnl eponymous directory: --+AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) --+ --+AC_ARG_WITH([ltdl_include], --+ [AS_HELP_STRING([--with-ltdl-include=DIR], --+ [use the ltdl headers installed in DIR])]) --+ --+if test -n "$with_ltdl_include"; then --+ if test -f "$with_ltdl_include/ltdl.h"; then : --+ else --+ AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include']) --+ fi --+else --+ with_ltdl_include=no --+fi --+ --+AC_ARG_WITH([ltdl_lib], --+ [AS_HELP_STRING([--with-ltdl-lib=DIR], --+ [use the libltdl.la installed in DIR])]) --+ --+if test -n "$with_ltdl_lib"; then --+ if test -f "$with_ltdl_lib/libltdl.la"; then : --+ else --+ AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib']) --+ fi --+else --+ with_ltdl_lib=no --+fi --+ --+case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in --+ ,yes,no,no,) --+ m4_case(m4_default(_LTDL_TYPE, [convenience]), --+ [convenience], [_LTDL_CONVENIENCE], --+ [installable], [_LTDL_INSTALLABLE], --+ [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) --+ ;; --+ ,no,no,no,) --+ # If the included ltdl is not to be used, then use the --+ # preinstalled libltdl we found. --+ AC_DEFINE([HAVE_LTDL], [1], --+ [Define this if a modern libltdl is already installed]) --+ LIBLTDL=-lltdl --+ LTDLDEPS= --+ LTDLINCL= --+ ;; --+ ,no*,no,*) --+ AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together]) --+ ;; --+ *) with_included_ltdl=no --+ LIBLTDL="-L$with_ltdl_lib -lltdl" --+ LTDLDEPS= --+ LTDLINCL="-I$with_ltdl_include" --+ ;; --+esac --+INCLTDL="$LTDLINCL" --+ --+# Report our decision... --+AC_MSG_CHECKING([where to find libltdl headers]) --+AC_MSG_RESULT([$LTDLINCL]) --+AC_MSG_CHECKING([where to find libltdl library]) --+AC_MSG_RESULT([$LIBLTDL]) --+ --+_LTDL_SETUP --+ --+dnl restore autoconf definition. --+m4_popdef([AC_LIBOBJ]) --+m4_popdef([AC_LIBSOURCES]) --+ --+AC_CONFIG_COMMANDS_PRE([ --+ _ltdl_libobjs= --+ _ltdl_ltlibobjs= --+ if test -n "$_LT_LIBOBJS"; then --+ # Remove the extension. --+ _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' --+ for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do --+ _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" --+ _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" --+ done --+ fi --+ AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) --+ AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) --+]) --+ --+# Only expand once: --+m4_define([LTDL_INIT]) --+])# LTDL_INIT --+ --+# Old names: --+AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) --+AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) --+AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) --+dnl aclocal-1.4 backwards compatibility: --+dnl AC_DEFUN([AC_LIB_LTDL], []) --+dnl AC_DEFUN([AC_WITH_LTDL], []) --+dnl AC_DEFUN([LT_WITH_LTDL], []) --+ --+ --+# _LTDL_SETUP --+# ----------- --+# Perform all the checks necessary for compilation of the ltdl objects --+# -- including compiler checks and header checks. This is a public --+# interface mainly for the benefit of libltdl's own configure.ac, most --+# other users should call LTDL_INIT instead. --+AC_DEFUN([_LTDL_SETUP], --+[AC_REQUIRE([AC_PROG_CC])dnl --+AC_REQUIRE([LT_SYS_MODULE_EXT])dnl --+AC_REQUIRE([LT_SYS_MODULE_PATH])dnl --+AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl --+AC_REQUIRE([LT_LIB_DLLOAD])dnl --+AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl --+AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl --+AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl --+AC_REQUIRE([gl_FUNC_ARGZ])dnl --+ --+m4_require([_LT_CHECK_OBJDIR])dnl --+m4_require([_LT_HEADER_DLFCN])dnl --+m4_require([_LT_CHECK_DLPREOPEN])dnl --+m4_require([_LT_DECL_SED])dnl --+ --+dnl Don't require this, or it will be expanded earlier than the code --+dnl that sets the variables it relies on: --+_LT_ENABLE_INSTALL --+ --+dnl _LTDL_MODE specific code must be called at least once: --+_LTDL_MODE_DISPATCH --+ --+# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS --+# the user used. This is so that ltdl.h can pick up the parent projects --+# config.h file, The first file in AC_CONFIG_HEADERS must contain the --+# definitions required by ltdl.c. --+# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). --+AC_CONFIG_COMMANDS_PRE([dnl --+m4_pattern_allow([^LT_CONFIG_H$])dnl --+m4_ifset([AH_HEADER], --+ [LT_CONFIG_H=AH_HEADER], --+ [m4_ifset([AC_LIST_HEADERS], --+ [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[ ]]*,,;s,[[ :]].*$,,'`], --+ [])])]) --+AC_SUBST([LT_CONFIG_H]) --+ --+AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], --+ [], [], [AC_INCLUDES_DEFAULT]) --+ --+AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) --+AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) --+ --+AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) --+ --+name=ltdl --+LTDLOPEN=`eval "\\$ECHO \"$libname_spec\""` --+AC_SUBST([LTDLOPEN]) --+])# _LTDL_SETUP --+ --+ --+# _LT_ENABLE_INSTALL --+# ------------------ --+m4_define([_LT_ENABLE_INSTALL], --+[AC_ARG_ENABLE([ltdl-install], --+ [AS_HELP_STRING([--enable-ltdl-install], [install libltdl])]) --+ --+case ,${enable_ltdl_install},${enable_ltdl_convenience} in --+ *yes*) ;; --+ *) enable_ltdl_convenience=yes ;; --+esac --+ --+m4_ifdef([AM_CONDITIONAL], --+[AM_CONDITIONAL(INSTALL_LTDL, test x"${enable_ltdl_install-no}" != xno) --+ AM_CONDITIONAL(CONVENIENCE_LTDL, test x"${enable_ltdl_convenience-no}" != xno)]) --+])# _LT_ENABLE_INSTALL --+ --+ --+# LT_SYS_DLOPEN_DEPLIBS --+# --------------------- --+AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], --+[AC_REQUIRE([AC_CANONICAL_HOST])dnl --+AC_CACHE_CHECK([whether deplibs are loaded by dlopen], --+ [lt_cv_sys_dlopen_deplibs], --+ [# PORTME does your system automatically load deplibs for dlopen? --+ # or its logical equivalent (e.g. shl_load for HP-UX < 11) --+ # For now, we just catch OSes we know something about -- in the --+ # future, we'll try test this programmatically. --+ lt_cv_sys_dlopen_deplibs=unknown --+ case $host_os in --+ aix3*|aix4.1.*|aix4.2.*) --+ # Unknown whether this is true for these versions of AIX, but --+ # we want this `case' here to explicitly catch those versions. --+ lt_cv_sys_dlopen_deplibs=unknown --+ ;; --+ aix[[4-9]]*) --+ lt_cv_sys_dlopen_deplibs=yes --+ ;; --+ amigaos*) --+ case $host_cpu in --+ powerpc) --+ lt_cv_sys_dlopen_deplibs=no --+ ;; --+ esac --+ ;; --+ darwin*) --+ # Assuming the user has installed a libdl from somewhere, this is true --+ # If you are looking for one http://www.opendarwin.org/projects/dlcompat --+ lt_cv_sys_dlopen_deplibs=yes --+ ;; --+ freebsd* | dragonfly*) --+ lt_cv_sys_dlopen_deplibs=yes --+ ;; --+ gnu* | linux* | k*bsd*-gnu) --+ # GNU and its variants, using gnu ld.so (Glibc) --+ lt_cv_sys_dlopen_deplibs=yes --+ ;; --+ hpux10*|hpux11*) --+ lt_cv_sys_dlopen_deplibs=yes --+ ;; --+ interix*) --+ lt_cv_sys_dlopen_deplibs=yes --+ ;; --+ irix[[12345]]*|irix6.[[01]]*) --+ # Catch all versions of IRIX before 6.2, and indicate that we don't --+ # know how it worked for any of those versions. --+ lt_cv_sys_dlopen_deplibs=unknown --+ ;; --+ irix*) --+ # The case above catches anything before 6.2, and it's known that --+ # at 6.2 and later dlopen does load deplibs. --+ lt_cv_sys_dlopen_deplibs=yes --+ ;; --+ netbsd*) --+ lt_cv_sys_dlopen_deplibs=yes --+ ;; --+ openbsd*) --+ lt_cv_sys_dlopen_deplibs=yes --+ ;; --+ osf[[1234]]*) --+ # dlopen did load deplibs (at least at 4.x), but until the 5.x series, --+ # it did *not* use an RPATH in a shared library to find objects the --+ # library depends on, so we explicitly say `no'. --+ lt_cv_sys_dlopen_deplibs=no --+ ;; --+ osf5.0|osf5.0a|osf5.1) --+ # dlopen *does* load deplibs and with the right loader patch applied --+ # it even uses RPATH in a shared library to search for shared objects --+ # that the library depends on, but there's no easy way to know if that --+ # patch is installed. Since this is the case, all we can really --+ # say is unknown -- it depends on the patch being installed. If --+ # it is, this changes to `yes'. Without it, it would be `no'. --+ lt_cv_sys_dlopen_deplibs=unknown --+ ;; --+ osf*) --+ # the two cases above should catch all versions of osf <= 5.1. Read --+ # the comments above for what we know about them. --+ # At > 5.1, deplibs are loaded *and* any RPATH in a shared library --+ # is used to find them so we can finally say `yes'. --+ lt_cv_sys_dlopen_deplibs=yes --+ ;; --+ qnx*) --+ lt_cv_sys_dlopen_deplibs=yes --+ ;; --+ solaris*) --+ lt_cv_sys_dlopen_deplibs=yes --+ ;; --+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) --+ libltdl_cv_sys_dlopen_deplibs=yes --+ ;; --+ esac --+ ]) --+if test "$lt_cv_sys_dlopen_deplibs" != yes; then --+ AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], --+ [Define if the OS needs help to load dependent libraries for dlopen().]) --+fi --+])# LT_SYS_DLOPEN_DEPLIBS --+ --+# Old name: --+AU_ALIAS([AC_LTDL_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS]) --+dnl aclocal-1.4 backwards compatibility: --+dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], []) --+ --+ --+# LT_SYS_MODULE_EXT --+# ----------------- --+AC_DEFUN([LT_SYS_MODULE_EXT], --+[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl --+AC_CACHE_CHECK([which extension is used for runtime loadable modules], --+ [libltdl_cv_shlibext], --+[ --+module=yes --+eval libltdl_cv_shlibext=$shrext_cmds --+ ]) --+if test -n "$libltdl_cv_shlibext"; then --+ m4_pattern_allow([LT_MODULE_EXT])dnl --+ AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], --+ [Define to the extension used for runtime loadable modules, say, ".so".]) --+fi --+])# LT_SYS_MODULE_EXT --+ --+# Old name: --+AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT]) --+dnl aclocal-1.4 backwards compatibility: --+dnl AC_DEFUN([AC_LTDL_SHLIBEXT], []) --+ --+ --+# LT_SYS_MODULE_PATH --+# ------------------ --+AC_DEFUN([LT_SYS_MODULE_PATH], --+[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl --+AC_CACHE_CHECK([which variable specifies run-time module search path], --+ [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"]) --+if test -n "$lt_cv_module_path_var"; then --+ m4_pattern_allow([LT_MODULE_PATH_VAR])dnl --+ AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], --+ [Define to the name of the environment variable that determines the run-time module search path.]) --+fi --+])# LT_SYS_MODULE_PATH --+ --+# Old name: --+AU_ALIAS([AC_LTDL_SHLIBPATH], [LT_SYS_MODULE_PATH]) --+dnl aclocal-1.4 backwards compatibility: --+dnl AC_DEFUN([AC_LTDL_SHLIBPATH], []) --+ --+ --+# LT_SYS_DLSEARCH_PATH --+# -------------------- --+AC_DEFUN([LT_SYS_DLSEARCH_PATH], --+[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl --+AC_CACHE_CHECK([for the default library search path], --+ [lt_cv_sys_dlsearch_path], --+ [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"]) --+if test -n "$lt_cv_sys_dlsearch_path"; then --+ sys_dlsearch_path= --+ for dir in $lt_cv_sys_dlsearch_path; do --+ if test -z "$sys_dlsearch_path"; then --+ sys_dlsearch_path="$dir" --+ else --+ sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir" --+ fi --+ done --+ m4_pattern_allow([LT_DLSEARCH_PATH])dnl --+ AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], --+ [Define to the system default library search path.]) --+fi --+])# LT_SYS_DLSEARCH_PATH --+ --+# Old name: --+AU_ALIAS([AC_LTDL_SYSSEARCHPATH], [LT_SYS_DLSEARCH_PATH]) --+dnl aclocal-1.4 backwards compatibility: --+dnl AC_DEFUN([AC_LTDL_SYSSEARCHPATH], []) --+ --+ --+# _LT_CHECK_DLPREOPEN --+# ------------------- --+m4_defun([_LT_CHECK_DLPREOPEN], --+[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl --+AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen], --+ [libltdl_cv_preloaded_symbols], --+ [if test -n "$lt_cv_sys_global_symbol_pipe"; then --+ libltdl_cv_preloaded_symbols=yes --+ else --+ libltdl_cv_preloaded_symbols=no --+ fi --+ ]) --+if test x"$libltdl_cv_preloaded_symbols" = xyes; then --+ AC_DEFINE([HAVE_PRELOADED_SYMBOLS], [1], --+ [Define if libtool can extract symbol lists from object files.]) --+fi --+])# _LT_CHECK_DLPREOPEN --+ --+ --+# LT_LIB_DLLOAD --+# ------------- --+AC_DEFUN([LT_LIB_DLLOAD], --+[m4_pattern_allow([^LT_DLLOADERS$]) --+LT_DLLOADERS= --+AC_SUBST([LT_DLLOADERS]) --+ --+AC_LANG_PUSH([C]) --+ --+LIBADD_DLOPEN= --+AC_SEARCH_LIBS([dlopen], [dl], --+ [AC_DEFINE([HAVE_LIBDL], [1], --+ [Define if you have the libdl library or equivalent.]) --+ if test "$ac_cv_search_dlopen" != "none required" ; then --+ LIBADD_DLOPEN="-ldl" --+ fi --+ libltdl_cv_lib_dl_dlopen="yes" --+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], --+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H --+# include --+#endif --+ ]], [[dlopen(0, 0);]])], --+ [AC_DEFINE([HAVE_LIBDL], [1], --+ [Define if you have the libdl library or equivalent.]) --+ libltdl_cv_func_dlopen="yes" --+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], --+ [AC_CHECK_LIB([svld], [dlopen], --+ [AC_DEFINE([HAVE_LIBDL], [1], --+ [Define if you have the libdl library or equivalent.]) --+ LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes" --+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) --+if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes --+then --+ lt_save_LIBS="$LIBS" --+ LIBS="$LIBS $LIBADD_DLOPEN" --+ AC_CHECK_FUNCS([dlerror]) --+ LIBS="$lt_save_LIBS" --+fi --+AC_SUBST([LIBADD_DLOPEN]) --+ --+LIBADD_SHL_LOAD= --+AC_CHECK_FUNC([shl_load], --+ [AC_DEFINE([HAVE_SHL_LOAD], [1], --+ [Define if you have the shl_load function.]) --+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], --+ [AC_CHECK_LIB([dld], [shl_load], --+ [AC_DEFINE([HAVE_SHL_LOAD], [1], --+ [Define if you have the shl_load function.]) --+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" --+ LIBADD_SHL_LOAD="-ldld"])]) --+AC_SUBST([LIBADD_SHL_LOAD]) --+ --+case $host_os in --+darwin[[1567]].*) --+# We only want this for pre-Mac OS X 10.4. --+ AC_CHECK_FUNC([_dyld_func_lookup], --+ [AC_DEFINE([HAVE_DYLD], [1], --+ [Define if you have the _dyld_func_lookup function.]) --+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) --+ ;; --+beos*) --+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" --+ ;; --+cygwin* | mingw* | os2* | pw32*) --+ AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) --+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" --+ ;; --+esac --+ --+AC_CHECK_LIB([dld], [dld_link], --+ [AC_DEFINE([HAVE_DLD], [1], --+ [Define if you have the GNU dld library.]) --+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) --+AC_SUBST([LIBADD_DLD_LINK]) --+ --+m4_pattern_allow([^LT_DLPREOPEN$]) --+LT_DLPREOPEN= --+if test -n "$LT_DLLOADERS" --+then --+ for lt_loader in $LT_DLLOADERS; do --+ LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " --+ done --+ AC_DEFINE([HAVE_LIBDLLOADER], [1], --+ [Define if libdlloader will be built on this platform]) --+fi --+AC_SUBST([LT_DLPREOPEN]) --+ --+dnl This isn't used anymore, but set it for backwards compatibility --+LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" --+AC_SUBST([LIBADD_DL]) --+ --+AC_LANG_POP --+])# LT_LIB_DLLOAD --+ --+# Old name: --+AU_ALIAS([AC_LTDL_DLLIB], [LT_LIB_DLLOAD]) --+dnl aclocal-1.4 backwards compatibility: --+dnl AC_DEFUN([AC_LTDL_DLLIB], []) --+ --+ --+# LT_SYS_SYMBOL_USCORE --+# -------------------- --+# does the compiler prefix global symbols with an underscore? --+AC_DEFUN([LT_SYS_SYMBOL_USCORE], --+[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl --+AC_CACHE_CHECK([for _ prefix in compiled symbols], --+ [lt_cv_sys_symbol_underscore], --+ [lt_cv_sys_symbol_underscore=no --+ cat > conftest.$ac_ext <<_LT_EOF --+void nm_test_func(){} --+int main(){nm_test_func;return 0;} --+_LT_EOF --+ if AC_TRY_EVAL(ac_compile); then --+ # Now try to grab the symbols. --+ ac_nlist=conftest.nm --+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then --+ # See whether the symbols have a leading underscore. --+ if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then --+ lt_cv_sys_symbol_underscore=yes --+ else --+ if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then --+ : --+ else --+ echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD --+ fi --+ fi --+ else --+ echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD --+ fi --+ else --+ echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD --+ cat conftest.c >&AS_MESSAGE_LOG_FD --+ fi --+ rm -rf conftest* --+ ]) --+ sys_symbol_underscore=$lt_cv_sys_symbol_underscore --+ AC_SUBST([sys_symbol_underscore]) --+])# LT_SYS_SYMBOL_USCORE --+ --+# Old name: --+AU_ALIAS([AC_LTDL_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE]) --+dnl aclocal-1.4 backwards compatibility: --+dnl AC_DEFUN([AC_LTDL_SYMBOL_USCORE], []) --+ --+ --+# LT_FUNC_DLSYM_USCORE --+# -------------------- --+AC_DEFUN([LT_FUNC_DLSYM_USCORE], --+[AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl --+if test x"$lt_cv_sys_symbol_underscore" = xyes; then --+ if test x"$libltdl_cv_func_dlopen" = xyes || --+ test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then --+ AC_CACHE_CHECK([whether we have to add an underscore for dlsym], --+ [libltdl_cv_need_uscore], --+ [libltdl_cv_need_uscore=unknown --+ save_LIBS="$LIBS" --+ LIBS="$LIBS $LIBADD_DLOPEN" --+ _LT_TRY_DLOPEN_SELF( --+ [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes], --+ [], [libltdl_cv_need_uscore=cross]) --+ LIBS="$save_LIBS" --+ ]) --+ fi --+fi --+ --+if test x"$libltdl_cv_need_uscore" = xyes; then --+ AC_DEFINE([NEED_USCORE], [1], --+ [Define if dlsym() requires a leading underscore in symbol names.]) --+fi --+])# LT_FUNC_DLSYM_USCORE --+ --+# Old name: --+AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE]) --+dnl aclocal-1.4 backwards compatibility: --+dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], []) --+ -- # Helper functions for option handling. -*- Autoconf -*- -- # -- # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -- # Written by Gary V. Vaughan, 2004 -- # -- # This file is free software; the Free Software Foundation gives -- # unlimited permission to copy and/or distribute it, with or without -- # modifications, as long as this notice is preserved. --diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure ----- a/js/src/ctypes/libffi/configure --+++ b/js/src/ctypes/libffi/configure --@@ -747,16 +747,17 @@ am__EXEEXT_TRUE -- LTLIBOBJS -- LIBOBJS -- toolexeclibdir -- toolexecdir -- FFI_DEBUG_FALSE -- FFI_DEBUG_TRUE -- TARGETDIR -- TARGET --+sys_symbol_underscore -- HAVE_LONG_DOUBLE -- ALLOCA -- PA64_HPUX_FALSE -- PA64_HPUX_TRUE -- PA_HPUX_FALSE -- PA_HPUX_TRUE -- PA_LINUX_FALSE -- PA_LINUX_TRUE --@@ -5045,23 +5046,23 @@ test -z "$NM" && NM=nm -- -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -- $as_echo_n "checking the name lister ($NM) interface... " >&6; } -- if test "${lt_cv_nm_interface+set}" = set; then : -- $as_echo_n "(cached) " >&6 -- else -- lt_cv_nm_interface="BSD nm" -- echo "int some_variable = 0;" > conftest.$ac_ext --- (eval echo "\"\$as_me:5053: $ac_compile\"" >&5) --+ (eval echo "\"\$as_me:5054: $ac_compile\"" >&5) -- (eval "$ac_compile" 2>conftest.err) -- cat conftest.err >&5 --- (eval echo "\"\$as_me:5056: $NM \\\"conftest.$ac_objext\\\"\"" >&5) --+ (eval echo "\"\$as_me:5057: $NM \\\"conftest.$ac_objext\\\"\"" >&5) -- (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) -- cat conftest.err >&5 --- (eval echo "\"\$as_me:5059: output\"" >&5) --+ (eval echo "\"\$as_me:5060: output\"" >&5) -- cat conftest.out >&5 -- if $GREP 'External.*some_variable' conftest.out > /dev/null; then -- lt_cv_nm_interface="MS dumpbin" -- fi -- rm -f conftest* -- fi -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -- $as_echo "$lt_cv_nm_interface" >&6; } --@@ -6257,17 +6258,17 @@ ia64-*-hpux*) -- HPUX_IA64_MODE="64" -- ;; -- esac -- fi -- rm -rf conftest* -- ;; -- *-*-irix6*) -- # Find out which ABI we are using. --- echo '#line 6265 "configure"' > conftest.$ac_ext --+ echo '#line 6266 "configure"' > conftest.$ac_ext -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -- (eval $ac_compile) 2>&5 -- ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then -- if test "$lt_cv_prog_gnu_ld" = yes; then -- case `/usr/bin/file conftest.$ac_objext` in -- *32-bit*) --@@ -7783,21 +7784,21 @@ else -- # (2) before a word containing "conftest.", or (3) at the end. -- # Note that $ac_compile itself does not contain backslashes and begins -- # with a dollar sign (not a hyphen), so the echo should work correctly. -- # The option is referenced via a variable to avoid confusing sed. -- lt_compile=`echo "$ac_compile" | $SED \ -- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -- -e 's:$: $lt_compiler_flag:'` --- (eval echo "\"\$as_me:7791: $lt_compile\"" >&5) --+ (eval echo "\"\$as_me:7792: $lt_compile\"" >&5) -- (eval "$lt_compile" 2>conftest.err) -- ac_status=$? -- cat conftest.err >&5 --- echo "$as_me:7795: \$? = $ac_status" >&5 --+ echo "$as_me:7796: \$? = $ac_status" >&5 -- if (exit $ac_status) && test -s "$ac_outfile"; then -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings other than the usual output. -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -- lt_cv_prog_compiler_rtti_exceptions=yes -- fi --@@ -8122,21 +8123,21 @@ else -- # (2) before a word containing "conftest.", or (3) at the end. -- # Note that $ac_compile itself does not contain backslashes and begins -- # with a dollar sign (not a hyphen), so the echo should work correctly. -- # The option is referenced via a variable to avoid confusing sed. -- lt_compile=`echo "$ac_compile" | $SED \ -- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -- -e 's:$: $lt_compiler_flag:'` --- (eval echo "\"\$as_me:8130: $lt_compile\"" >&5) --+ (eval echo "\"\$as_me:8131: $lt_compile\"" >&5) -- (eval "$lt_compile" 2>conftest.err) -- ac_status=$? -- cat conftest.err >&5 --- echo "$as_me:8134: \$? = $ac_status" >&5 --+ echo "$as_me:8135: \$? = $ac_status" >&5 -- if (exit $ac_status) && test -s "$ac_outfile"; then -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings other than the usual output. -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -- lt_cv_prog_compiler_pic_works=yes -- fi --@@ -8227,21 +8228,21 @@ else -- # Insert the option either (1) after the last *FLAGS variable, or -- # (2) before a word containing "conftest.", or (3) at the end. -- # Note that $ac_compile itself does not contain backslashes and begins -- # with a dollar sign (not a hyphen), so the echo should work correctly. -- lt_compile=`echo "$ac_compile" | $SED \ -- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -- -e 's:$: $lt_compiler_flag:'` --- (eval echo "\"\$as_me:8235: $lt_compile\"" >&5) --+ (eval echo "\"\$as_me:8236: $lt_compile\"" >&5) -- (eval "$lt_compile" 2>out/conftest.err) -- ac_status=$? -- cat out/conftest.err >&5 --- echo "$as_me:8239: \$? = $ac_status" >&5 --+ echo "$as_me:8240: \$? = $ac_status" >&5 -- if (exit $ac_status) && test -s out/conftest2.$ac_objext -- then -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp -- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 -- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then -- lt_cv_prog_compiler_c_o=yes --@@ -8282,21 +8283,21 @@ else -- # Insert the option either (1) after the last *FLAGS variable, or -- # (2) before a word containing "conftest.", or (3) at the end. -- # Note that $ac_compile itself does not contain backslashes and begins -- # with a dollar sign (not a hyphen), so the echo should work correctly. -- lt_compile=`echo "$ac_compile" | $SED \ -- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -- -e 's:$: $lt_compiler_flag:'` --- (eval echo "\"\$as_me:8290: $lt_compile\"" >&5) --+ (eval echo "\"\$as_me:8291: $lt_compile\"" >&5) -- (eval "$lt_compile" 2>out/conftest.err) -- ac_status=$? -- cat out/conftest.err >&5 --- echo "$as_me:8294: \$? = $ac_status" >&5 --+ echo "$as_me:8295: \$? = $ac_status" >&5 -- if (exit $ac_status) && test -s out/conftest2.$ac_objext -- then -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp -- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 -- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then -- lt_cv_prog_compiler_c_o=yes --@@ -10652,17 +10653,17 @@ if test "${lt_cv_dlopen_self+set}" = set -- $as_echo_n "(cached) " >&6 -- else -- if test "$cross_compiling" = yes; then : -- lt_cv_dlopen_self=cross -- else -- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 -- lt_status=$lt_dlunknown -- cat > conftest.$ac_ext <<_LT_EOF ---#line 10660 "configure" --+#line 10661 "configure" -- #include "confdefs.h" -- -- #if HAVE_DLFCN_H -- #include -- #endif -- -- #include -- --@@ -10748,17 +10749,17 @@ if test "${lt_cv_dlopen_self_static+set} -- $as_echo_n "(cached) " >&6 -- else -- if test "$cross_compiling" = yes; then : -- lt_cv_dlopen_self_static=cross -- else -- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 -- lt_status=$lt_dlunknown -- cat > conftest.$ac_ext <<_LT_EOF ---#line 10756 "configure" --+#line 10757 "configure" -- #include "confdefs.h" -- -- #if HAVE_DLFCN_H -- #include -- #endif -- -- #include -- --@@ -12356,16 +12357,71 @@ fi -- $as_echo "$libffi_cv_as_string_pseudo_op" >&6; } -- if test "x$libffi_cv_as_string_pseudo_op" = xyes; then -- -- $as_echo "#define HAVE_AS_STRING_PSEUDO_OP 1" >>confdefs.h -- -- fi -- fi -- --+if test x$TARGET = xX86_WIN64; then --+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5 --+$as_echo_n "checking for _ prefix in compiled symbols... " >&6; } --+if test "${lt_cv_sys_symbol_underscore+set}" = set; then : --+ $as_echo_n "(cached) " >&6 --+else --+ lt_cv_sys_symbol_underscore=no --+ cat > conftest.$ac_ext <<_LT_EOF --+void nm_test_func(){} --+int main(){nm_test_func;return 0;} --+_LT_EOF --+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 --+ (eval $ac_compile) 2>&5 --+ ac_status=$? --+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 --+ test $ac_status = 0; }; then --+ # Now try to grab the symbols. --+ ac_nlist=conftest.nm --+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist\""; } >&5 --+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5 --+ ac_status=$? --+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 --+ test $ac_status = 0; } && test -s "$ac_nlist"; then --+ # See whether the symbols have a leading underscore. --+ if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then --+ lt_cv_sys_symbol_underscore=yes --+ else --+ if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then --+ : --+ else --+ echo "configure: cannot find nm_test_func in $ac_nlist" >&5 --+ fi --+ fi --+ else --+ echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&5 --+ fi --+ else --+ echo "configure: failed program was:" >&5 --+ cat conftest.c >&5 --+ fi --+ rm -rf conftest* --+ --+fi --+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_symbol_underscore" >&5 --+$as_echo "$lt_cv_sys_symbol_underscore" >&6; } --+ sys_symbol_underscore=$lt_cv_sys_symbol_underscore --+ --+ --+ if test "x$sys_symbol_underscore" = xyes; then --+ --+$as_echo "#define SYMBOL_UNDERSCORE 1" >>confdefs.h --+ --+ fi --+fi --+ -- case "$target" in -- # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages -- *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*) -- -- $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h -- -- ;; -- esac --diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac ----- a/js/src/ctypes/libffi/configure.ac --+++ b/js/src/ctypes/libffi/configure.ac --@@ -310,16 +310,23 @@ if test x$TARGET = xX86 || test x$TARGET -- [libffi_cv_as_string_pseudo_op=no]) -- ]) -- if test "x$libffi_cv_as_string_pseudo_op" = xyes; then -- AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1, -- [Define if your assembler supports .string.]) -- fi -- fi -- --+if test x$TARGET = xX86_WIN64; then --+ LT_SYS_SYMBOL_USCORE --+ if test "x$sys_symbol_underscore" = xyes; then --+ AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.]) --+ fi --+fi --+ -- case "$target" in -- # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages -- *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*) -- AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1, -- [Cannot use malloc on this target, so, we revert to -- alternative means]) -- ;; -- esac --diff --git a/js/src/ctypes/libffi/src/x86/win64.S b/js/src/ctypes/libffi/src/x86/win64.S ----- a/js/src/ctypes/libffi/src/x86/win64.S --+++ b/js/src/ctypes/libffi/src/x86/win64.S --@@ -227,32 +227,40 @@ ret_void$: -- xor rax, rax -- -- lea rsp, QWORD PTR [rbp+16] -- pop rbp -- ret 0 -- ffi_call_win64 ENDP -- _TEXT ENDS -- END ---#else --+ --+#else --+ --+#ifdef SYMBOL_UNDERSCORE --+#define SYMBOL_NAME(name) _##name --+#else --+#define SYMBOL_NAME(name) name --+#endif --+ -- .text -- ---.extern _ffi_closure_win64_inner --+.extern SYMBOL_NAME(ffi_closure_win64_inner) -- -- # ffi_closure_win64 will be called with these registers set: -- # rax points to 'closure' -- # r11 contains a bit mask that specifies which of the -- # first four parameters are float or double -- # -- # It must move the parameters passed in registers to their stack location, -- # call ffi_closure_win64_inner for the actual work, then return the result. -- # -- .balign 16 --- .globl _ffi_closure_win64 ---_ffi_closure_win64: --+ .globl SYMBOL_NAME(ffi_closure_win64) --+SYMBOL_NAME(ffi_closure_win64): -- # copy register arguments onto stack -- test $1,%r11 -- jne .Lfirst_is_float -- mov %rcx, 8(%rsp) -- jmp .Lsecond -- .Lfirst_is_float: -- movlpd %xmm0, 8(%rsp) -- --@@ -282,27 +290,27 @@ END -- -- .Ldone: -- #.ALLOCSTACK 40 -- sub $40, %rsp -- #.ENDPROLOG -- mov %rax, %rcx # context is first parameter -- mov %rsp, %rdx # stack is second parameter -- add $48, %rdx # point to start of arguments --- mov $_ffi_closure_win64_inner, %rax --+ mov $SYMBOL_NAME(ffi_closure_win64_inner), %rax -- callq *%rax # call the real closure function -- add $40, %rsp -- movq %rax, %xmm0 # If the closure returned a float, -- # ffi_closure_win64_inner wrote it to rax -- retq -- .ffi_closure_win64_end: -- -- .balign 16 --- .globl _ffi_call_win64 ---_ffi_call_win64: --+ .globl SYMBOL_NAME(ffi_call_win64) --+SYMBOL_NAME(ffi_call_win64): -- # copy registers onto stack -- mov %r9,32(%rsp) -- mov %r8,24(%rsp) -- mov %rdx,16(%rsp) -- mov %rcx,8(%rsp) -- #.PUSHREG rbp -- push %rbp -- #.ALLOCSTACK 48 -diff --git a/js/src/ctypes/patches-libffi/04-bug-756740.patch b/js/src/ctypes/patches-libffi/04-bug-756740.patch -deleted file mode 100644 ---- a/js/src/ctypes/patches-libffi/04-bug-756740.patch -+++ /dev/null -@@ -1,44 +0,0 @@ --diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure ----- a/js/src/ctypes/libffi/configure --+++ b/js/src/ctypes/libffi/configure --@@ -11251,17 +11251,17 @@ case "$host" in -- -- m68k-*-*) -- TARGET=M68K; TARGETDIR=m68k -- ;; -- -- mips-sgi-irix5.* | mips-sgi-irix6.*) -- TARGET=MIPS; TARGETDIR=mips -- ;; --- mips*-*-linux*) --+ mips*-*linux*) -- # Support 128-bit long double for NewABI. -- HAVE_LONG_DOUBLE='defined(__mips64)' -- TARGET=MIPS; TARGETDIR=mips -- ;; -- -- moxie-*-*) -- TARGET=MOXIE; TARGETDIR=moxie -- ;; --diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac ----- a/js/src/ctypes/libffi/configure.ac --+++ b/js/src/ctypes/libffi/configure.ac --@@ -113,17 +113,17 @@ case "$host" in -- -- m68k-*-*) -- TARGET=M68K; TARGETDIR=m68k -- ;; -- -- mips-sgi-irix5.* | mips-sgi-irix6.*) -- TARGET=MIPS; TARGETDIR=mips -- ;; --- mips*-*-linux*) --+ mips*-*linux*) -- # Support 128-bit long double for NewABI. -- HAVE_LONG_DOUBLE='defined(__mips64)' -- TARGET=MIPS; TARGETDIR=mips -- ;; -- -- moxie-*-*) -- TARGET=MOXIE; TARGETDIR=moxie -- ;; -diff --git a/js/src/ctypes/patches-libffi/05-bug-644136.patch b/js/src/ctypes/patches-libffi/05-bug-644136.patch -deleted file mode 100644 ---- a/js/src/ctypes/patches-libffi/05-bug-644136.patch -+++ /dev/null -@@ -1,31 +0,0 @@ --# HG changeset patch --# User Siarhei Siamashka --# Date 1314529402 -3600 --# Node ID 0be4a94258c28b97a7e6e87b099359c759941b22 --# Parent f1cf848b1ff22bad8980b673cc4410a21c8bdf28 --Bug 644136 - Add missing fpu directive to fix libffi build on ARM hardfloat systems; r=bsmedberg -- --diff --git a/js/src/ctypes/libffi/src/arm/sysv.S b/js/src/ctypes/libffi/src/arm/sysv.S ----- a/js/src/ctypes/libffi/src/arm/sysv.S --+++ b/js/src/ctypes/libffi/src/arm/sysv.S --@@ -224,16 +224,20 @@ ARM_FUNC_START ffi_call_SYSV -- LSYM(Lepilogue): -- RETLDM "r0-r3,fp" -- -- .ffi_call_SYSV_end: -- UNWIND .fnend -- .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) -- -- --+/* Below are VFP hard-float ABI call and closure implementations. --+ Add VFP FPU directive here. */ --+ .fpu vfp --+ -- @ r0: fn -- @ r1: &ecif -- @ r2: cif->bytes -- @ r3: fig->flags -- @ sp+0: ecif.rvalue -- -- ARM_FUNC_START ffi_call_VFP -- @ Save registers -diff --git a/js/src/ctypes/patches-libffi/06-bug-778414.patch b/js/src/ctypes/patches-libffi/06-bug-778414.patch -deleted file mode 100644 ---- a/js/src/ctypes/patches-libffi/06-bug-778414.patch -+++ /dev/null -@@ -1,99 +0,0 @@ --diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure ----- a/js/src/ctypes/libffi/configure --+++ b/js/src/ctypes/libffi/configure --@@ -12422,26 +12422,42 @@ case "$target" in -- *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*) -- -- $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h -- -- ;; -- esac -- -- if test x$TARGET = xX86_64; then --- { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5 ---$as_echo_n "checking assembler supports unwind section type... " >&6; } --+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking toolchain supports unwind section type" >&5 --+$as_echo_n "checking toolchain supports unwind section type... " >&6; } -- if test "${libffi_cv_as_x86_64_unwind_section_type+set}" = set; then : -- $as_echo_n "(cached) " >&6 -- else -- --- libffi_cv_as_x86_64_unwind_section_type=yes --- echo '.section .eh_frame,"a",@unwind' > conftest.s --- if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then --- libffi_cv_as_x86_64_unwind_section_type=no --+ cat > conftest1.s << EOF --+.text --+.globl foo --+foo: --+jmp bar --+.section .eh_frame,"a",@unwind --+bar: --+EOF --+ --+ cat > conftest2.c << EOF --+extern void foo(); --+int main(){foo();} --+EOF --+ --+ libffi_cv_as_x86_64_unwind_section_type=no --+ # we ensure that we can compile _and_ link an assembly file containing an @unwind section --+ # since the compiler can support it and not the linker (ie old binutils) --+ if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \ --+ $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then --+ libffi_cv_as_x86_64_unwind_section_type=yes -- fi -- -- fi -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_64_unwind_section_type" >&5 -- $as_echo "$libffi_cv_as_x86_64_unwind_section_type" >&6; } -- if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then -- -- $as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h --diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac ----- a/js/src/ctypes/libffi/configure.ac --+++ b/js/src/ctypes/libffi/configure.ac --@@ -327,22 +327,38 @@ case "$target" in -- *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*) -- AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1, -- [Cannot use malloc on this target, so, we revert to -- alternative means]) -- ;; -- esac -- -- if test x$TARGET = xX86_64; then --- AC_CACHE_CHECK([assembler supports unwind section type], --+ AC_CACHE_CHECK([toolchain supports unwind section type], -- libffi_cv_as_x86_64_unwind_section_type, [ --- libffi_cv_as_x86_64_unwind_section_type=yes --- echo '.section .eh_frame,"a",@unwind' > conftest.s --- if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then --- libffi_cv_as_x86_64_unwind_section_type=no --+ cat > conftest1.s << EOF --+.text --+.globl foo --+foo: --+jmp bar --+.section .eh_frame,"a",@unwind --+bar: --+EOF --+ --+ cat > conftest2.c << EOF --+extern void foo(); --+int main(){foo();} --+EOF --+ --+ libffi_cv_as_x86_64_unwind_section_type=no --+ # we ensure that we can compile _and_ link an assembly file containing an @unwind section --+ # since the compiler can support it and not the linker (ie old binutils) --+ if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \ --+ $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then --+ libffi_cv_as_x86_64_unwind_section_type=yes -- fi -- ]) -- if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then -- AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1, -- [Define if your assembler supports unwind section type.]) -- fi -- fi -- -diff --git a/js/src/ctypes/patches-libffi/07-bug-928381.patch b/js/src/ctypes/patches-libffi/07-bug-928381.patch -deleted file mode 100644 ---- a/js/src/ctypes/patches-libffi/07-bug-928381.patch -+++ /dev/null -@@ -1,31 +0,0 @@ --# HG changeset patch --# User Landry Breuil --# Date 1382105758 -7200 --# Fri Oct 18 16:15:58 2013 +0200 --# Node ID 5f82dae8c495a7fddf5ed935eb2a8be7f47b9bd8 --# Parent d50df2233e95f4d45b35eddbfbe84bcdda6a11e2 --Bug 928381 - ctypes/libffi: Fix stack alignment on *BSD/i386 r=glandium -- --diff --git a/js/src/ctypes/libffi/src/x86/freebsd.S b/js/src/ctypes/libffi/src/x86/freebsd.S ----- a/js/src/ctypes/libffi/src/x86/freebsd.S --+++ b/js/src/ctypes/libffi/src/x86/freebsd.S --@@ -44,16 +44,19 @@ ffi_call_SYSV: -- pushl %ebp -- .LCFI0: -- movl %esp,%ebp -- .LCFI1: -- /* Make room for all of the new args. */ -- movl 16(%ebp),%ecx -- subl %ecx,%esp -- --+ /* Align the stack pointer to 16-bytes */ --+ andl $0xfffffff0, %esp --+ -- movl %esp,%eax -- -- /* Place all of the ffi_prep_args in position */ -- pushl 12(%ebp) -- pushl %eax -- call *8(%ebp) -- -- /* Return stack to previous state and call the function */ -diff --git a/js/src/ctypes/patches-libffi/08-bug-928390.patch b/js/src/ctypes/patches-libffi/08-bug-928390.patch -deleted file mode 100644 ---- a/js/src/ctypes/patches-libffi/08-bug-928390.patch -+++ /dev/null -@@ -1,135 +0,0 @@ --# HG changeset patch --# Parent e5f7246bf2158ac88b3e0727811925c467226d2e --# User Landry Breuil --Bug 928390: Partially backport libffi upstream 049d8386ff for OpenBSD/mips/hppa. r=glandium -- --diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure ----- a/js/src/ctypes/libffi/configure --+++ b/js/src/ctypes/libffi/configure --@@ -11208,17 +11208,17 @@ case "$host" in -- cris-*-*) -- TARGET=LIBFFI_CRIS; TARGETDIR=cris -- ;; -- -- frv-*-*) -- TARGET=FRV; TARGETDIR=frv -- ;; -- --- hppa*-*-linux* | parisc*-*-linux*) --+ hppa*-*-linux* | hppa*-*-openbsd* | parisc*-*-linux*) -- TARGET=PA_LINUX; TARGETDIR=pa -- ;; -- hppa*64-*-hpux*) -- TARGET=PA64_HPUX; TARGETDIR=pa -- ;; -- hppa*-*-hpux*) -- TARGET=PA_HPUX; TARGETDIR=pa -- ;; --@@ -11251,17 +11251,17 @@ case "$host" in -- -- m68k-*-*) -- TARGET=M68K; TARGETDIR=m68k -- ;; -- -- mips-sgi-irix5.* | mips-sgi-irix6.*) -- TARGET=MIPS; TARGETDIR=mips -- ;; --- mips*-*linux*) --+ mips*-*linux* | mips*-*-openbsd*) -- # Support 128-bit long double for NewABI. -- HAVE_LONG_DOUBLE='defined(__mips64)' -- TARGET=MIPS; TARGETDIR=mips -- ;; -- -- moxie-*-*) -- TARGET=MOXIE; TARGETDIR=moxie -- ;; --diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac ----- a/js/src/ctypes/libffi/configure.ac --+++ b/js/src/ctypes/libffi/configure.ac --@@ -70,17 +70,17 @@ case "$host" in -- cris-*-*) -- TARGET=LIBFFI_CRIS; TARGETDIR=cris -- ;; -- -- frv-*-*) -- TARGET=FRV; TARGETDIR=frv -- ;; -- --- hppa*-*-linux* | parisc*-*-linux*) --+ hppa*-*-linux* | hppa*-*-openbsd* | parisc*-*-linux*) -- TARGET=PA_LINUX; TARGETDIR=pa -- ;; -- hppa*64-*-hpux*) -- TARGET=PA64_HPUX; TARGETDIR=pa -- ;; -- hppa*-*-hpux*) -- TARGET=PA_HPUX; TARGETDIR=pa -- ;; --@@ -113,17 +113,17 @@ case "$host" in -- -- m68k-*-*) -- TARGET=M68K; TARGETDIR=m68k -- ;; -- -- mips-sgi-irix5.* | mips-sgi-irix6.*) -- TARGET=MIPS; TARGETDIR=mips -- ;; --- mips*-*linux*) --+ mips*-*linux* | mips*-*-openbsd*) -- # Support 128-bit long double for NewABI. -- HAVE_LONG_DOUBLE='defined(__mips64)' -- TARGET=MIPS; TARGETDIR=mips -- ;; -- -- moxie-*-*) -- TARGET=MOXIE; TARGETDIR=moxie -- ;; --diff --git a/js/src/ctypes/libffi/src/mips/ffi.c b/js/src/ctypes/libffi/src/mips/ffi.c ----- a/js/src/ctypes/libffi/src/mips/ffi.c --+++ b/js/src/ctypes/libffi/src/mips/ffi.c --@@ -32,17 +32,21 @@ -- -- #ifdef __GNUC__ -- # if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) -- # define USE__BUILTIN___CLEAR_CACHE 1 -- # endif -- #endif -- -- #ifndef USE__BUILTIN___CLEAR_CACHE ---#include --+# if defined(__OpenBSD__) --+# include --+# else --+# include --+# endif -- #endif -- -- #ifdef FFI_DEBUG -- # define FFI_MIPS_STOP_HERE() ffi_stop_here() -- #else -- # define FFI_MIPS_STOP_HERE() do {} while(0) -- #endif -- --diff --git a/js/src/ctypes/libffi/src/mips/ffitarget.h b/js/src/ctypes/libffi/src/mips/ffitarget.h ----- a/js/src/ctypes/libffi/src/mips/ffitarget.h --+++ b/js/src/ctypes/libffi/src/mips/ffitarget.h --@@ -24,17 +24,17 @@ -- -- ----------------------------------------------------------------------- */ -- -- #ifndef LIBFFI_TARGET_H -- #define LIBFFI_TARGET_H -- -- #ifdef linux -- # include ---#else --+#elif !defined(__OpenBSD__) -- # include -- #endif -- # ifndef _ABIN32 -- # define _ABIN32 _MIPS_SIM_NABI32 -- # endif -- # ifndef _ABI64 -- # define _ABI64 _MIPS_SIM_ABI64 -- # endif -